diff --git a/massif-visualizer/.kateconfig b/massif-visualizer/.kateconfig new file mode 100644 index 00000000..3d7c91ae --- /dev/null +++ b/massif-visualizer/.kateconfig @@ -0,0 +1,4 @@ +kate: space-indent on; indent-width 4; replace-tabs on; auto-insert-doxygen on; +kate: eol unix; replace-trailing-space-save on; show-tabs on; tab-indents on; +kate: tab-width 4; + diff --git a/massif-visualizer/AUTHORS b/massif-visualizer/AUTHORS new file mode 100644 index 00000000..64401279 --- /dev/null +++ b/massif-visualizer/AUTHORS @@ -0,0 +1,6 @@ +Main author: +Milian Wolff + +Contributions by: +Andrei Nistor +Arnold Dumas diff --git a/massif-visualizer/CMakeLists.txt b/massif-visualizer/CMakeLists.txt new file mode 100644 index 00000000..4e65bc2b --- /dev/null +++ b/massif-visualizer/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 2.8.9) +PROJECT(massif-visualizer) + +enable_testing() + +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${CMAKE_MODULE_PATH}) + +set(KDE_MIN_VERSION "4.7.0") +find_package(KDE4 4.7.0 REQUIRED) + +include (KDE4Defaults) +include (MacroLibrary) + +macro_optional_find_package(KGraphViewer 2.1) +macro_log_feature(KGRAPHVIEWER_FOUND "KGraphViewer" "KPart to view callgraph dot files." + "http://extragear.kde.org/apps/kgraphviewer/" FALSE "" + "Required for detailed snapshot analysis. From KDE SDK Extragear package, KGraphViewer 2.1 or higher is required.") + +macro_display_feature_log() + +include_directories( + ${KDE4_INCLUDES} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/kdchart/include/KDChart +) + +add_definitions(-Wall) + +add_subdirectory(kdchart) +add_subdirectory(massifdata) +add_subdirectory(visualizer) +add_subdirectory(app) +add_subdirectory(pics) + +if(ENABLE_TESTING) + add_subdirectory(test) +endif() diff --git a/massif-visualizer/COPYING b/massif-visualizer/COPYING new file mode 100644 index 00000000..c13faf0d --- /dev/null +++ b/massif-visualizer/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/massif-visualizer/INSTALL b/massif-visualizer/INSTALL new file mode 100644 index 00000000..276c206c --- /dev/null +++ b/massif-visualizer/INSTALL @@ -0,0 +1,15 @@ +Build requirements: + +- kdelibs headers from KDE4 +- optional: kgraphviewer 2.1: http://kde-apps.org/content/show.php/KGraphViewer+and+KGraphEditor?content=23999 + +When you got all this, you simply do the usual CMake run: + +cd massif-visualizer +mkdir build +cd build +cmake .. +make +sudo make install + +That should be it. diff --git a/massif-visualizer/Messages.sh b/massif-visualizer/Messages.sh new file mode 100755 index 00000000..cfdbc4db --- /dev/null +++ b/massif-visualizer/Messages.sh @@ -0,0 +1,16 @@ +#! /usr/bin/env bash +subdirs="app kdchart massifdata visualizer" +rcfiles="`find $subdirs -name \*.rc`" +uifiles="`find $subdirs -name \*.ui`" +kcfgfiles="`find $subdirs -name \*.kcfg`" +if [[ "$rcfiles" != "" ]] ; then + $EXTRACTRC $rcfiles >> rc.cpp || exit 11 +fi +if [[ "$uifiles" != "" ]] ; then + $EXTRACTRC $uifiles >> rc.cpp || exit 12 +fi +if [[ "$kcfgfiles" != "" ]] ; then + $EXTRACTRC $kcfgfiles >> rc.cpp || exit 13 +fi +$XGETTEXT `find $subdirs -name \*.cc -o -name \*.cpp -o -name \*.h` rc.cpp -o $podir/massif-visualizer.pot +rm -f rc.cpp diff --git a/massif-visualizer/README b/massif-visualizer/README new file mode 100644 index 00000000..34937e9f --- /dev/null +++ b/massif-visualizer/README @@ -0,0 +1,93 @@ +================= +massif-visualizer +================= + +--------------------------------------------------------- +visualizer for Valgrind Massif memory-usage tracking tool +--------------------------------------------------------- + +:Author: Milian Wolff +:Date: 2011-11-21 +:Manual section: 1 + +SYNOPSIS +======== + +**massif-visualizer [massif-data-file]** + +DESCRIPTION +=========== + +Massif Visualizer is a tool that visualizes massif data. You run your +application in Valgrind with ``--tool=massif`` and then open the generated +``massif.out.%pid`` in the visualizer. Gzip or Bzip2 compressed massif files can +also be opened transparently. + +The application consists of three parts: + +**The Overview Chart** + +The first thing you'll notice is a nice chart that displays the same as e.g. +``ms_print`` does in Ascii-Art: total memory consumption over time. + +Massif-Visualizer goes beyond that by additionally showing the top most +cost-intensive locations in your code as a stacked graph below the total cost. +The graph also reacts on user-interaction. + +This view you can use for: + +- checking whether your application has memory leaks +- finding expensive peaks +- finding locations that significantly contribute to the overall memory + consumption of your application + +**The Snapshot Data Tree** + +Directly next to the above chart, you'll see a tree with all of the massif +data. The tree items are colored depending on their cost, with red opaque being +the most interesting (peak) elements. Green/transparent items are negligible +and don't add significant cost to your application. + +You can also search the tree and when you select something in it, the snapshot +gets highlighted in the overview chart and the call graph gets updated. + +**The Call Graph for Detailed Snapshots** + +Massif generates a few detailed snapshots that essentially make up the tree. If +you want to get an overview in a more comfortable way than the simple tree +view, switch over to the detailed snapshot tab and see the tree visualized as a +call graph. Zoom in, zoom out, use the birds eye view and see what contributes +to a given snapshot. Note that function calls with the same memory cost are +grouped to easily find the interesting parts. + +OPTIONS +======= + +--help Show help about options +--help-all Show all options +--author Show author information +-v, --version Show version information +--license Show license information + +AUTHOR +====== + +Written by Milian Wolff. + +REPORTING BUGS +============== + +Please report bugs on https://bugs.kde.org under the massif-visualizer product. + +COPYRIGHT +========= + +Copyright © 2011 Milian Wolff. +License GPLv2+: GNU GPL version 2 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +SEE ALSO +======== + +**valgrind(1)**, **ms_print(1)** diff --git a/massif-visualizer/app/CMakeLists.txt b/massif-visualizer/app/CMakeLists.txt new file mode 100644 index 00000000..da85c5f3 --- /dev/null +++ b/massif-visualizer/app/CMakeLists.txt @@ -0,0 +1,55 @@ +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + +set(massif-visualizer_SRCS + main.cpp + mainwindow.cpp + configdialog.cpp + documentwidget.cpp + documenttabinterface.cpp + charttab.cpp + allocatorstab.cpp +) + +if(KGRAPHVIEWER_FOUND) + include_directories( + ${KGRAPHVIEWER_INCLUDE_DIRECTORIES} + ) + add_definitions(-DHAVE_KGRAPHVIEWER) + list(APPEND massif-visualizer_SRCS callgraphtab.cpp) +endif(KGRAPHVIEWER_FOUND) + +kde4_add_kcfg_files(massif-visualizer_SRCS massif-visualizer-settings.kcfgc) + +add_executable(massif-visualizer ${massif-visualizer_SRCS}) + +target_link_libraries(massif-visualizer LINK_PRIVATE + ${KDE4_KDEUI_LIBS} + ${KDE4_KIO_LIBS} + ${KDE4_KPARTS_LIBS} + mv-kdchart + mv-massifdata + mv-visualizer +) + +install( TARGETS massif-visualizer ${INSTALL_TARGETS_DEFAULT_ARGS} ) + +install( + FILES massif-visualizerui.rc documentwidgetui.rc charttabui.rc callgraphtabui.rc + DESTINATION ${DATA_INSTALL_DIR}/massif-visualizer +) + +install(FILES massif-visualizer-settings.kcfg DESTINATION ${KCFG_INSTALL_DIR}) + +install(PROGRAMS massif-visualizer.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) + +# XML mime type +set( SHARED_MIME_INFO_MINIMUM_VERSION "0.30" ) +set( XDG_MIME_INSTALL_DIR "share/mime/packages" ) +find_package( SharedMimeInfo ) +if( SHARED_MIME_INFO_FOUND ) + install( FILES massif.xml DESTINATION ${XDG_MIME_INSTALL_DIR} ) + update_xdg_mimetypes( ${XDG_MIME_INSTALL_DIR} ) +endif( SHARED_MIME_INFO_FOUND ) diff --git a/massif-visualizer/app/allocatorstab.cpp b/massif-visualizer/app/allocatorstab.cpp new file mode 100644 index 00000000..ac43e101 --- /dev/null +++ b/massif-visualizer/app/allocatorstab.cpp @@ -0,0 +1,103 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "allocatorstab.h" + +#include "visualizer/allocatorsmodel.h" + +#include +#include +#include +#include + +using namespace Massif; + +AllocatorsTab::AllocatorsTab(const FileData* data, + KXMLGUIClient* guiParent, QWidget* parent) + : DocumentTabInterface(data, guiParent, parent) + , m_model(new AllocatorsModel(data, this)) + , m_proxy(new QSortFilterProxyModel(this)) + , m_view(new QTreeView(this)) +{ + m_proxy->setSourceModel(m_model); + m_proxy->setSortRole(AllocatorsModel::SortRole); + + m_view->setRootIsDecorated(false); + m_view->setModel(m_proxy); + m_view->setSortingEnabled(true); + m_view->sortByColumn(AllocatorsModel::Peak); + m_view->resizeColumnToContents(AllocatorsModel::Function); + m_view->resizeColumnToContents(AllocatorsModel::Peak); + m_view->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_view->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + this, SLOT(selectionChanged(QModelIndex,QModelIndex))); + connect(m_view, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(customContextMenuRequested(QPoint))); + + setLayout(new QVBoxLayout(this)); + layout()->addWidget(m_view); +} + +AllocatorsTab::~AllocatorsTab() +{ + +} + +void AllocatorsTab::selectModelItem(const ModelItem& item) +{ + const QModelIndex idx = m_model->indexForItem(item); + if (!idx.isValid()) { + return; + } + + m_view->selectionModel()->clearSelection(); + m_view->selectionModel()->setCurrentIndex(m_proxy->mapFromSource(idx), + QItemSelectionModel::Select | QItemSelectionModel::Rows); + m_view->scrollTo(m_view->selectionModel()->currentIndex()); +} + +void AllocatorsTab::settingsChanged() +{ + m_model->settingsChanged(); +} + +void AllocatorsTab::selectionChanged(const QModelIndex& current, const QModelIndex& /*previous*/) +{ + const ModelItem item = current.data(AllocatorsModel::ItemRole).value(); + if (item.first) { + emit modelItemSelected(item); + } +} + +void AllocatorsTab::customContextMenuRequested(const QPoint& pos) +{ + const QModelIndex idx = m_view->indexAt(pos); + const ModelItem item = idx.data(AllocatorsModel::ItemRole).value(); + + QMenu menu; + emit contextMenuRequested(item, &menu); + if (!menu.actions().isEmpty()) { + menu.exec(m_view->mapToGlobal(pos)); + } +} + +#include "allocatorstab.moc" diff --git a/massif-visualizer/app/allocatorstab.h b/massif-visualizer/app/allocatorstab.h new file mode 100644 index 00000000..7a69b94f --- /dev/null +++ b/massif-visualizer/app/allocatorstab.h @@ -0,0 +1,57 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef ALLOCATORSTAB_H +#define ALLOCATORSTAB_H + +#include "documenttabinterface.h" + +class QTreeView; +class QSortFilterProxyModel; +class QModelIndex; + +namespace Massif { +class AllocatorsModel; +} + +class AllocatorsTab : public DocumentTabInterface +{ + Q_OBJECT + +public: + explicit AllocatorsTab(const Massif::FileData* data, KXMLGUIClient* guiParent, QWidget* parent = 0); + virtual ~AllocatorsTab(); + + virtual void selectModelItem(const Massif::ModelItem& item); + virtual void settingsChanged(); + +private slots: + void selectionChanged(const QModelIndex& current, const QModelIndex& previous); + void customContextMenuRequested(const QPoint& pos); + +private: + Massif::AllocatorsModel* m_model; + QSortFilterProxyModel* m_proxy; + QTreeView* m_view; +}; + +#endif // ALLOCATORSTAB_H diff --git a/massif-visualizer/app/callgraphtab.cpp b/massif-visualizer/app/callgraphtab.cpp new file mode 100644 index 00000000..c999e242 --- /dev/null +++ b/massif-visualizer/app/callgraphtab.cpp @@ -0,0 +1,194 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "callgraphtab.h" + +#include "visualizer/dotgraphgenerator.h" +#include "massifdata/filedata.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Massif; + +CallGraphTab::CallGraphTab(const FileData* data, KParts::ReadOnlyPart* graphViewerPart, + KXMLGUIClient* guiParent, QWidget* parent) + : DocumentTabInterface(data, guiParent, parent) + , m_graphViewerPart(graphViewerPart) + , m_graphViewer(qobject_cast(m_graphViewerPart)) + , m_dotGenerator(0) + , m_zoomIn(0) + , m_zoomOut(0) + , m_focusExpensive(0) +{ + setXMLFile("callgraphtabui.rc", true); + setupActions(); + + Q_ASSERT(m_graphViewer); + setLayout(new QVBoxLayout); + layout()->addWidget(m_graphViewerPart->widget()); + + connect(m_graphViewerPart, SIGNAL(graphLoaded()), + this, SLOT(slotGraphLoaded())); + + showDotGraph(ModelItem(0, data->peak())); +} + +CallGraphTab::~CallGraphTab() +{ + if (m_dotGenerator) { + if (m_dotGenerator->isRunning()) { + disconnect(m_dotGenerator.data(), 0, this, 0); + connect(m_dotGenerator.data(), SIGNAL(finished()), + m_dotGenerator.data(), SLOT(deleteLater())); + m_dotGenerator->cancel(); + m_dotGenerator.take(); + } + m_dotGenerator.reset(); + } + if (m_graphViewer) { + m_graphViewerPart->closeUrl(); + } + m_lastDotItem.first = 0; + m_lastDotItem.second = 0; +} + +void CallGraphTab::setupActions() +{ + m_zoomIn = KStandardAction::zoomIn(this, SLOT(zoomIn()), actionCollection()); + actionCollection()->addAction("zoomIn", m_zoomIn); + m_zoomOut = KStandardAction::zoomOut(this, SLOT(zoomOut()), actionCollection()); + actionCollection()->addAction("zoomOut", m_zoomOut); + m_focusExpensive = new KAction(KIcon("flag-red"), i18n("Focus most expensive node"), actionCollection()); + connect(m_focusExpensive, SIGNAL(triggered()), this, SLOT(focusExpensiveGraphNode())); + actionCollection()->addAction("focusExpensive", m_focusExpensive); +} + +void CallGraphTab::settingsChanged() +{ + +} + +void CallGraphTab::focusExpensiveGraphNode() +{ + Q_ASSERT(m_graphViewer); + Q_ASSERT(m_dotGenerator); + + m_graphViewer->centerOnNode(m_dotGenerator->mostCostIntensiveGraphvizId()); +} + +void CallGraphTab::showDotGraph(const ModelItem& item) +{ + m_nextDotItem = item; + + if (item == m_lastDotItem && m_graphViewerPart->url().isValid()) { + return; + } + + if (!isVisible()) { + return; + } + m_lastDotItem = item; + + Q_ASSERT(m_graphViewer); + + kDebug() << "new dot graph requested" << item; + if (m_dotGenerator) { + kDebug() << "existing generator is running:" << m_dotGenerator->isRunning(); + if (m_dotGenerator->isRunning()) { + disconnect(m_dotGenerator.data(), 0, this, 0); + connect(m_dotGenerator.data(), SIGNAL(finished()), + m_dotGenerator.data(), SLOT(deleteLater())); + m_dotGenerator->cancel(); + m_dotGenerator.take(); + } + m_dotGenerator.reset(); + } + if (!item.first && !item.second) { + return; + } + if (item.second) { + m_dotGenerator.reset(new DotGraphGenerator(item.second, m_data->timeUnit(), this)); + } else { + m_dotGenerator.reset(new DotGraphGenerator(item.first, m_data->timeUnit(), this)); + } + m_dotGenerator->start(); + connect(m_dotGenerator.data(), SIGNAL(finished()), this, SLOT(showDotGraph())); +} + +void CallGraphTab::setVisible(bool visible) +{ + QWidget::setVisible(visible); + + if (visible) { + showDotGraph(m_nextDotItem); + } +} + +void CallGraphTab::showDotGraph() +{ + if (!m_dotGenerator || !m_graphViewerPart || !isVisible()) { + return; + } + kDebug() << "show dot graph in output file" << m_dotGenerator->outputFile(); + if (!m_dotGenerator->outputFile().isEmpty() && m_graphViewerPart->url() != KUrl(m_dotGenerator->outputFile())) { + m_graphViewerPart->openUrl(KUrl(m_dotGenerator->outputFile())); + } +} + +void CallGraphTab::slotGraphLoaded() +{ + Q_ASSERT(m_graphViewer); + + if (!m_dotGenerator) { + return; + } + m_graphViewer->setZoomFactor(0.75); + m_graphViewer->setPannerPosition(KGraphViewer::KGraphViewerInterface::BottomRight); + m_graphViewer->setPannerEnabled(true); + m_graphViewer->centerOnNode(m_dotGenerator->mostCostIntensiveGraphvizId()); +} + +void CallGraphTab::zoomIn() +{ + m_graphViewer->zoomIn(); +} + +void CallGraphTab::zoomOut() +{ + m_graphViewer->zoomOut(); +} + +void CallGraphTab::selectModelItem(const ModelItem& item) +{ + showDotGraph(item); +} + +#include "callgraphtab.moc" diff --git a/massif-visualizer/app/callgraphtab.h b/massif-visualizer/app/callgraphtab.h new file mode 100644 index 00000000..9d1c63f5 --- /dev/null +++ b/massif-visualizer/app/callgraphtab.h @@ -0,0 +1,84 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef CALLGRAPHTAB_H +#define CALLGRAPHTAB_H + +#include "documenttabinterface.h" + +#include + +class KAction; + +namespace KGraphViewer { +class KGraphViewerInterface; +} + +namespace Massif { +class DotGraphGenerator; +} + +namespace KParts { +class ReadOnlyPart; +} + +class CallGraphTab : public DocumentTabInterface +{ + Q_OBJECT + +public: + CallGraphTab(const Massif::FileData* data, KParts::ReadOnlyPart* graphViewerPart, + KXMLGUIClient* guiParent, QWidget* parent = 0); + ~CallGraphTab(); + + void showDotGraph(const Massif::ModelItem& item); + + virtual void settingsChanged(); + + virtual void selectModelItem(const Massif::ModelItem& item); + virtual void setVisible(bool visible); + +public slots: + void showDotGraph(); + +private slots: + void slotGraphLoaded(); + void zoomIn(); + void zoomOut(); + void focusExpensiveGraphNode(); + +private: + void setupActions(); + +private: + KParts::ReadOnlyPart* m_graphViewerPart; + KGraphViewer::KGraphViewerInterface* m_graphViewer; + QScopedPointer m_dotGenerator; + Massif::ModelItem m_lastDotItem; + Massif::ModelItem m_nextDotItem; + + KAction* m_zoomIn; + KAction* m_zoomOut; + KAction* m_focusExpensive; +}; + +#endif // CALLGRAPHTAB_H diff --git a/massif-visualizer/app/callgraphtabui.rc b/massif-visualizer/app/callgraphtabui.rc new file mode 100644 index 00000000..e77d689a --- /dev/null +++ b/massif-visualizer/app/callgraphtabui.rc @@ -0,0 +1,19 @@ + + + + + + + + + + + + + CallGraph Toolbar + + + + + + diff --git a/massif-visualizer/app/charttab.cpp b/massif-visualizer/app/charttab.cpp new file mode 100644 index 00000000..190a2f3b --- /dev/null +++ b/massif-visualizer/app/charttab.cpp @@ -0,0 +1,620 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "charttab.h" + +#include "KDChartChart" +#include "KDChartGridAttributes" +#include "KDChartHeaderFooter" +#include "KDChartCartesianCoordinatePlane" +#include "KDChartPlotter" +#include "KDChartLegend" +#include "KDChartDataValueAttributes" +#include "KDChartBackgroundAttributes" +#include + +#include "visualizer/totalcostmodel.h" +#include "visualizer/detailedcostmodel.h" +#include "visualizer/datatreemodel.h" +#include "visualizer/filtereddatatreemodel.h" + +#include "massifdata/util.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/filedata.h" + +#include "massif-visualizer-settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace KDChart; +using namespace Massif; + +namespace { + +class TimeAxis : public CartesianAxis +{ + Q_OBJECT +public: + explicit TimeAxis(AbstractCartesianDiagram* diagram = 0) + : CartesianAxis(diagram) + {} + + virtual const QString customizedLabel(const QString& label) const + { + // squeeze large numbers here + // TODO: when the unit is 'b' also use prettyCost() here + return QString::number(label.toDouble()); + } +}; + +class SizeAxis : public CartesianAxis +{ + Q_OBJECT +public: + explicit SizeAxis(AbstractCartesianDiagram* diagram = 0) + : CartesianAxis(diagram) + {} + + virtual const QString customizedLabel(const QString& label) const + { + // TODO: change distance between labels to 1024 and simply use prettyCost() here + return KGlobal::locale()->formatByteSize(label.toDouble(), 1, KLocale::MetricBinaryDialect); + } +}; + +void markPeak(Plotter* p, const QModelIndex& peak, quint64 cost, const KColorScheme& scheme) +{ + QBrush brush = p->model()->data(peak, DatasetBrushRole).value(); + + QColor outline = brush.color(); + QColor foreground = scheme.foreground().color(); + QBrush background = scheme.background(); + + DataValueAttributes dataAttributes = p->dataValueAttributes(peak); + dataAttributes.setDataLabel(prettyCost(cost)); + dataAttributes.setVisible(true); + dataAttributes.setShowRepetitiveDataLabels(true); + dataAttributes.setShowOverlappingDataLabels(false); + + FrameAttributes frameAttrs = dataAttributes.frameAttributes(); + QPen framePen(outline); + framePen.setWidth(2); + frameAttrs.setPen(framePen); + frameAttrs.setVisible(true); + dataAttributes.setFrameAttributes(frameAttrs); + + MarkerAttributes a = dataAttributes.markerAttributes(); + a.setMarkerSize(QSizeF(7, 7)); + a.setPen(outline); + a.setMarkerStyle(KDChart::MarkerAttributes::MarkerDiamond); + a.setVisible(true); + dataAttributes.setMarkerAttributes(a); + + TextAttributes txtAttrs = dataAttributes.textAttributes(); + txtAttrs.setPen(foreground); + txtAttrs.setFontSize(Measure(12)); + dataAttributes.setTextAttributes(txtAttrs); + + BackgroundAttributes bkgAtt = dataAttributes.backgroundAttributes(); + + bkgAtt.setBrush(background); + bkgAtt.setVisible(true); + dataAttributes.setBackgroundAttributes(bkgAtt); + + p->setDataValueAttributes(peak, dataAttributes); +} + +} + +ChartTab::ChartTab(const FileData* data, + KXMLGUIClient* guiParent, QWidget* parent) + : DocumentTabInterface(data, guiParent, parent) + , m_chart(new Chart(this)) + , m_header(new QLabel(this)) + , m_totalDiagram(0) + , m_totalCostModel(new TotalCostModel(m_chart)) + , m_detailedDiagram(0) + , m_detailedCostModel(new DetailedCostModel(m_chart)) + , m_legend(new Legend(m_chart)) + , m_print(0) + , m_saveAs(0) + , m_toggleTotal(0) + , m_toggleDetailed(0) + , m_hideFunction(0) + , m_hideOtherFunctions(0) + , m_box(new QSpinBox(this)) + , m_settingSelection(false) +{ + setXMLFile("charttabui.rc", true); + setupActions(); + + setLayout(new QVBoxLayout(this)); + + setupGui(); +} + +ChartTab::~ChartTab() +{ +} + +void ChartTab::setupActions() +{ + m_print = KStandardAction::print(this, SLOT(showPrintPreviewDialog()), actionCollection()); + actionCollection()->addAction("file_print", m_print); + + m_saveAs = KStandardAction::saveAs(this, SLOT(saveCurrentDocument()), actionCollection()); + actionCollection()->addAction("file_save_as", m_saveAs); + + m_toggleTotal = new KAction(KIcon("office-chart-area"), i18n("Toggle total cost graph"), actionCollection()); + m_toggleTotal->setCheckable(true); + m_toggleTotal->setChecked(true); + connect(m_toggleTotal, SIGNAL(toggled(bool)), SLOT(showTotalGraph(bool))); + actionCollection()->addAction("toggle_total", m_toggleTotal); + + m_toggleDetailed = new KAction(KIcon("office-chart-area-stacked"), i18n("Toggle detailed cost graph"), actionCollection()); + m_toggleDetailed->setCheckable(true); + m_toggleDetailed->setChecked(true); + connect(m_toggleDetailed, SIGNAL(toggled(bool)), SLOT(showDetailedGraph(bool))); + actionCollection()->addAction("toggle_detailed", m_toggleDetailed); + + KAction* stackNumAction = actionCollection()->addAction("stackNum"); + stackNumAction->setText(i18n("Stacked diagrams")); + QWidget *stackNumWidget = new QWidget; + QHBoxLayout* stackNumLayout = new QHBoxLayout; + stackNumLayout->addWidget(new QLabel(i18n("Stacked diagrams:"))); + m_box->setMinimum(0); + m_box->setMaximum(50); + m_box->setValue(10); + connect(m_box, SIGNAL(valueChanged(int)), this, SLOT(setStackNum(int))); + stackNumLayout->addWidget(m_box); + stackNumWidget->setLayout(stackNumLayout); + stackNumAction->setDefaultWidget(stackNumWidget); + + m_hideFunction = new KAction(i18n("hide function"), this); + connect(m_hideFunction, SIGNAL(triggered()), + this, SLOT(slotHideFunction())); + m_hideOtherFunctions = new KAction(i18n("hide other functions"), this); + connect(m_hideOtherFunctions, SIGNAL(triggered()), + this, SLOT(slotHideOtherFunctions())); +} + +void ChartTab::setupGui() +{ + layout()->addWidget(m_header); + layout()->addWidget(m_chart); + + // HACK: otherwise the legend becomes _really_ large and might even crash X... + // to visualize the issue, try: m_chart->setMaximumSize(QSize(10000, 10000)); + m_chart->setMaximumSize(qApp->desktop()->size()); + + // for axis labels to fit + m_chart->setGlobalLeadingRight(10); + m_chart->setGlobalLeadingLeft(10); + m_chart->setGlobalLeadingTop(20); + m_chart->setContextMenuPolicy(Qt::CustomContextMenu); + + updateLegendPosition(); + m_legend->setTitleText(QString()); + m_legend->setSortOrder(Qt::DescendingOrder); + + m_chart->addLegend(m_legend); + + //NOTE: this has to be set _after_ the legend was added to the chart... + updateLegendFont(); + m_legend->setTextAlignment(Qt::AlignLeft); + m_legend->hide(); + + connect(m_chart, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(chartContextMenuRequested(QPoint))); + + //BEGIN KDChart + KColorScheme scheme(QPalette::Active, KColorScheme::Window); + QPen foreground(scheme.foreground().color()); + + //Begin Legend + BackgroundAttributes bkgAtt = m_legend->backgroundAttributes(); + QColor background = scheme.background(KColorScheme::AlternateBackground).color(); + background.setAlpha(200); + bkgAtt.setBrush(QBrush(background)); + bkgAtt.setVisible(true); + m_legend->setBackgroundAttributes(bkgAtt); + TextAttributes txtAttrs = m_legend->textAttributes(); + txtAttrs.setPen(foreground); + m_legend->setTextAttributes(txtAttrs); + + m_header->setAlignment(Qt::AlignCenter); + updateHeader(); + + //BEGIN TotalDiagram + m_totalDiagram = new Plotter(this); + m_totalDiagram->setAntiAliasing(true); + + CartesianAxis* bottomAxis = new TimeAxis(m_totalDiagram); + TextAttributes axisTextAttributes = bottomAxis->textAttributes(); + axisTextAttributes.setPen(foreground); + axisTextAttributes.setFontSize(Measure(10)); + bottomAxis->setTextAttributes(axisTextAttributes); + TextAttributes axisTitleTextAttributes = bottomAxis->titleTextAttributes(); + axisTitleTextAttributes.setPen(foreground); + axisTitleTextAttributes.setFontSize(Measure(12)); + bottomAxis->setTitleTextAttributes(axisTitleTextAttributes); + bottomAxis->setTitleText(i18n("time in %1", m_data->timeUnit())); + bottomAxis->setPosition ( CartesianAxis::Bottom ); + m_totalDiagram->addAxis(bottomAxis); + + CartesianAxis* rightAxis = new SizeAxis(m_totalDiagram); + rightAxis->setTextAttributes(axisTextAttributes); + rightAxis->setTitleTextAttributes(axisTitleTextAttributes); + rightAxis->setTitleText(i18n("memory heap size")); + rightAxis->setPosition ( CartesianAxis::Right ); + m_totalDiagram->addAxis(rightAxis); + + m_totalCostModel->setSource(m_data); + m_totalDiagram->setModel(m_totalCostModel); + + CartesianCoordinatePlane* coordinatePlane = dynamic_cast(m_chart->coordinatePlane()); + Q_ASSERT(coordinatePlane); + coordinatePlane->addDiagram(m_totalDiagram); + + GridAttributes gridAttributes = coordinatePlane->gridAttributes(Qt::Horizontal); + gridAttributes.setAdjustBoundsToGrid(false, false); + coordinatePlane->setGridAttributes(Qt::Horizontal, gridAttributes); + + m_legend->addDiagram(m_totalDiagram); + + m_detailedDiagram = new Plotter; + m_detailedDiagram->setAntiAliasing(true); + m_detailedDiagram->setType(KDChart::Plotter::Stacked); + + m_detailedCostModel->setSource(m_data); + m_detailedDiagram->setModel(m_detailedCostModel); + + updatePeaks(); + + m_chart->coordinatePlane()->addDiagram(m_detailedDiagram); + + m_legend->addDiagram(m_detailedDiagram); + m_legend->show(); + + m_box->setValue(m_detailedCostModel->maximumDatasetCount()); + + connect(m_totalDiagram, SIGNAL(clicked(QModelIndex)), + this, SLOT(totalItemClicked(QModelIndex))); + connect(m_detailedDiagram, SIGNAL(clicked(QModelIndex)), + this, SLOT(detailedItemClicked(QModelIndex))); +} + +void ChartTab::settingsChanged() +{ + updateHeader(); + updatePeaks(); + updateLegendPosition(); + updateLegendFont(); +} + +void ChartTab::setDetailedDiagramHidden(bool hidden) +{ + m_detailedDiagram->setHidden(hidden); +} + +void ChartTab::setDetailedDiagramVisible(bool visible) +{ + m_detailedDiagram->setVisible(visible); +} + +void ChartTab::setTotalDiagramHidden(bool hidden) +{ + m_totalDiagram->setHidden(hidden); +} + +void ChartTab::setTotalDiagramVisible(bool visible) +{ + m_totalDiagram->setVisible(visible); +} + +void ChartTab::updatePeaks() +{ + KColorScheme scheme(QPalette::Active, KColorScheme::Window); + + if (m_data->peak()) { + const QModelIndex peak = m_totalCostModel->peak(); + Q_ASSERT(peak.isValid()); + markPeak(m_totalDiagram, peak, m_data->peak()->cost(), scheme); + } + updateDetailedPeaks(); +} + +void ChartTab::updateLegendPosition() +{ + KDChartEnums::PositionValue pos; + switch (Settings::self()->legendPosition()) { + case Settings::EnumLegendPosition::North: + pos = KDChartEnums::PositionNorth; + break; + case Settings::EnumLegendPosition::South: + pos = KDChartEnums::PositionSouth; + break; + case Settings::EnumLegendPosition::East: + pos = KDChartEnums::PositionEast; + break; + case Settings::EnumLegendPosition::West: + pos = KDChartEnums::PositionWest; + break; + case Settings::EnumLegendPosition::Floating: + pos = KDChartEnums::PositionFloating; + break; + default: + pos = KDChartEnums::PositionFloating; + kDebug() << "invalid legend position"; + } + m_legend->setPosition(Position(pos)); + + Qt::Alignment align; + switch (Settings::self()->legendAlignment()) { + case Settings::EnumLegendAlignment::Left: + align = Qt::AlignLeft; + break; + case Settings::EnumLegendAlignment::Center: + align = Qt::AlignHCenter | Qt::AlignVCenter; + break; + case Settings::EnumLegendAlignment::Right: + align = Qt::AlignRight; + break; + case Settings::EnumLegendAlignment::Top: + align = Qt::AlignTop; + break; + case Settings::EnumLegendAlignment::Bottom: + align = Qt::AlignBottom; + break; + default: + align = Qt::AlignHCenter | Qt::AlignVCenter; + kDebug() << "invalid legend alignmemnt"; + } + + // do something reasonable since top,bottom have no effect + // when used with north,south, same for left,right used with + // east,west + if ((((pos == KDChartEnums::PositionNorth) || (pos == KDChartEnums::PositionSouth)) + && ((align == Qt::AlignTop) || (align == Qt::AlignBottom))) + || (((pos == KDChartEnums::PositionEast) || (pos == KDChartEnums::PositionWest)) + && ((align == Qt::AlignLeft) || (align == Qt::AlignRight)))) { + + align = Qt::AlignHCenter | Qt::AlignVCenter; + } + + m_legend->setAlignment(align); +} + +void ChartTab::updateLegendFont() +{ + TextAttributes att = m_legend->textAttributes(); + att.setAutoShrink(true); + att.setFontSize(Measure(Settings::self()->legendFontSize())); + QFont font("monospace"); + font.setStyleHint(QFont::TypeWriter); + att.setFont(font); + m_legend->setTextAttributes(att); +} + +void ChartTab::updateDetailedPeaks() +{ + KColorScheme scheme(QPalette::Active, KColorScheme::Window); + + const DetailedCostModel::Peaks& peaks = m_detailedCostModel->peaks(); + DetailedCostModel::Peaks::const_iterator it = peaks.constBegin(); + while (it != peaks.constEnd()) { + const QModelIndex peak = it.key(); + Q_ASSERT(peak.isValid()); + markPeak(m_detailedDiagram, peak, it.value()->cost(), scheme); + ++it; + } +} + +void ChartTab::updateHeader() +{ + const QString app = m_data->cmd().split(' ', QString::SkipEmptyParts).first(); + + m_header->setText(QString("%1
%2") + .arg(i18n("Memory consumption of %1", app)) + .arg(i18n("Peak of %1 at snapshot #%2", prettyCost(m_data->peak()->cost()), m_data->peak()->number())) + ); + m_header->setToolTip(i18n("Command: %1\nValgrind Options: %2", m_data->cmd(), m_data->description())); +} + +void ChartTab::saveCurrentDocument() +{ + QString saveFilename = KFileDialog::getSaveFileName(KUrl("kfiledialog:///massif-visualizer"), + QString("image/png image/jpeg image/tiff image/svg+xml"), + this, i18n("Save Current Visualization"), KFileDialog::ConfirmOverwrite); + + if (!saveFilename.isEmpty()) { + + // TODO: implement a dialog to expose more options to the user. + // for example we could expose dpi, size, and various format + // dependent options such as compressions settings. + + // Vector graphic format + if (QFileInfo(saveFilename).suffix().compare(QLatin1String("svg")) == 0) { + QSvgGenerator generator; + generator.setFileName(saveFilename); + generator.setSize(m_chart->size()); + generator.setViewBox(m_chart->rect()); + + QPainter painter; + painter.begin(&generator); + m_chart->paint(&painter, m_chart->rect()); + painter.end(); + } + + // Other format + else if (!QPixmap::grabWidget(m_chart).save(saveFilename)) { + + KMessageBox::sorry(this, QString( + i18n("Error, failed to save the image to %1.") + ).arg(saveFilename)); + } + } +} + +void ChartTab::showPrintPreviewDialog() +{ + QPrinter printer; + QPrintPreviewDialog *ppd = new QPrintPreviewDialog(&printer, this); + ppd->setAttribute(Qt::WA_DeleteOnClose); + connect(ppd, SIGNAL(paintRequested(QPrinter*)), SLOT(printFile(QPrinter*))); + ppd->setWindowTitle(i18n("Massif Chart Print Preview")); + ppd->resize(800, 600); + ppd->exec(); +} + +void ChartTab::printFile(QPrinter *printer) +{ + QPainter painter; + painter.begin(printer); + m_chart->paint(&painter, printer->pageRect()); + painter.end(); +} + +void ChartTab::showDetailedGraph(bool show) +{ + m_detailedDiagram->setHidden(!show); + m_toggleDetailed->setChecked(show); + m_chart->update(); +} + +void ChartTab::showTotalGraph(bool show) +{ + m_totalDiagram->setHidden(!show); + m_toggleTotal->setChecked(show); + m_chart->update(); +} + +void ChartTab::slotHideFunction() +{ + m_detailedCostModel->hideFunction(m_hideFunction->data().value()); +} + +void ChartTab::slotHideOtherFunctions() +{ + m_detailedCostModel->hideOtherFunctions(m_hideOtherFunctions->data().value()); +} + +void ChartTab::chartContextMenuRequested(const QPoint& pos) +{ + const QPoint dPos = m_detailedDiagram->mapFromGlobal(m_chart->mapToGlobal(pos)); + + const QModelIndex idx = m_detailedDiagram->indexAt(dPos); + if (!idx.isValid()) { + return; + } + // hack: the ToolTip will only be queried by KDChart and that one uses the + // left index, but we want it to query the right one + const QModelIndex _idx = m_detailedCostModel->index(idx.row() + 1, idx.column(), idx.parent()); + ModelItem item = m_detailedCostModel->itemForIndex(_idx); + + if (!item.first) { + return; + } + + QMenu menu; + + m_hideFunction->setData(QVariant::fromValue(item.first)); + menu.addAction(m_hideFunction); + + m_hideOtherFunctions->setData(QVariant::fromValue(item.first)); + menu.addAction(m_hideOtherFunctions); + + menu.addSeparator(); + + emit contextMenuRequested(item, &menu); + + menu.exec(m_detailedDiagram->mapToGlobal(dPos)); +} + +void ChartTab::setStackNum(int num) +{ + m_detailedCostModel->setMaximumDatasetCount(num); + updatePeaks(); +} + +void ChartTab::detailedItemClicked(const QModelIndex& idx) +{ + m_detailedCostModel->setSelection(idx); + m_totalCostModel->setSelection(QModelIndex()); + m_chart->update(); + + // hack: the ToolTip will only be queried by KDChart and that one uses the + // left index, but we want it to query the right one + m_settingSelection = true; + const QModelIndex _idx = m_detailedCostModel->index(idx.row() + 1, idx.column(), idx.parent()); + emit modelItemSelected(m_detailedCostModel->itemForIndex(_idx)); + m_settingSelection = false; +} + +void ChartTab::totalItemClicked(const QModelIndex& idx) +{ + const QModelIndex _idx = m_totalCostModel->index(idx.row() + 1, idx.column(), idx.parent()); + m_totalCostModel->setSelection(_idx); + m_detailedCostModel->setSelection(QModelIndex()); + m_chart->update(); + + m_settingSelection = true; + emit modelItemSelected(m_totalCostModel->itemForIndex(_idx)); + m_settingSelection = false; +} + +void ChartTab::selectModelItem(const ModelItem& item) +{ + if (m_settingSelection) { + return; + } + + if (item.first) { + m_detailedCostModel->setSelection(m_detailedCostModel->indexForItem(item)); + m_totalCostModel->setSelection(QModelIndex()); + } else { + m_totalCostModel->setSelection(m_totalCostModel->indexForItem(item)); + m_detailedCostModel->setSelection(QModelIndex()); + } + + m_chart->update(); +} + +#include "charttab.moc" +#include "moc_charttab.cpp" diff --git a/massif-visualizer/app/charttab.h b/massif-visualizer/app/charttab.h new file mode 100644 index 00000000..f1d25b13 --- /dev/null +++ b/massif-visualizer/app/charttab.h @@ -0,0 +1,123 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef CHARTTAB_H +#define CHARTTAB_H + +#include "documenttabinterface.h" +#include + +class QLabel; +class QModelIndex; + +class KAction; + +namespace KDChart { +class Chart; +class HeaderFooter; +class Plotter; +class CartesianAxis; +class Legend; +class BarDiagram; +} + +namespace Massif { +class FileData; +class TotalCostModel; +class DetailedCostModel; +class DataTreeModel; +class FilteredDataTreeModel; +} + +class ChartTab : public DocumentTabInterface +{ + Q_OBJECT + +public: + ChartTab(const Massif::FileData* data, + KXMLGUIClient* guiParent, QWidget* parent = 0); + ~ChartTab(); + + virtual void settingsChanged(); + + virtual void selectModelItem(const Massif::ModelItem& item); + +private: + void setupGui(); + void setupActions(); + void updateHeader(); + void updatePeaks(); + void updateLegendPosition(); + void updateLegendFont(); + void updateDetailedPeaks(); + +private slots: + void setDetailedDiagramHidden(bool hidden); + void setDetailedDiagramVisible(bool visible); + + void setTotalDiagramHidden(bool hidden); + void setTotalDiagramVisible(bool visible); + + void saveCurrentDocument(); + void showPrintPreviewDialog(); + + void showDetailedGraph(bool show); + void showTotalGraph(bool show); + + void setStackNum(int num); + + void chartContextMenuRequested(const QPoint &pos); + + void slotHideFunction(); + void slotHideOtherFunctions(); + + void detailedItemClicked(const QModelIndex& item); + void totalItemClicked(const QModelIndex& item); + + void printFile(QPrinter *printer); + +private: + KDChart::Chart* m_chart; + QLabel* m_header; + KDChart::Plotter* m_totalDiagram; + Massif::TotalCostModel* m_totalCostModel; + + KDChart::Plotter* m_detailedDiagram; + Massif::DetailedCostModel* m_detailedCostModel; + + KDChart::Legend* m_legend; + + KAction* m_print; + KAction* m_saveAs; + + KAction* m_toggleTotal; + KAction* m_toggleDetailed; + + KAction* m_hideFunction; + KAction* m_hideOtherFunctions; + + QSpinBox* m_box; + + bool m_settingSelection; +}; + +#endif // CHARTTAB_H diff --git a/massif-visualizer/app/charttabui.rc b/massif-visualizer/app/charttabui.rc new file mode 100644 index 00000000..f9b507e4 --- /dev/null +++ b/massif-visualizer/app/charttabui.rc @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + Chart Toolbar + + + + + + diff --git a/massif-visualizer/app/config.ui b/massif-visualizer/app/config.ui new file mode 100644 index 00000000..e62bbc1b --- /dev/null +++ b/massif-visualizer/app/config.ui @@ -0,0 +1,129 @@ + + + Config + + + + 0 + 0 + 283 + 216 + + + + + + + Cost Precision: + + + + + + + + + + Legend + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Position: + + + + + + + + North + + + + + East + + + + + South + + + + + West + + + + + Floating + + + + + + + + Alignment: + + + + + + + + Left + + + + + Center + + + + + Right + + + + + Top + + + + + Bottom + + + + + + + + Font Size: + + + + + + + + + + + + + Shorten Templates + + + + + + + + diff --git a/massif-visualizer/app/configdialog.cpp b/massif-visualizer/app/configdialog.cpp new file mode 100644 index 00000000..bb38aee7 --- /dev/null +++ b/massif-visualizer/app/configdialog.cpp @@ -0,0 +1,54 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "configdialog.h" + +#include "massif-visualizer-settings.h" +#include "ui_config.h" + +#include + +using namespace Massif; + +ConfigDialog::ConfigDialog(QWidget* parent) +: KConfigDialog(parent, "settings", Settings::self()) +, m_ui(new Ui::Config) +{ + setAttribute(Qt::WA_DeleteOnClose, true); + + QWidget* settingsPage = new QWidget(this); + m_ui->setupUi(settingsPage); + + addPage(settingsPage, Settings::self(), i18n("Settings")); + setFaceType(KPageDialog::Plain); +} + +ConfigDialog::~ConfigDialog() +{ +} + +bool ConfigDialog::isShown() +{ + return KConfigDialog::showDialog("settings"); +} + +#include "configdialog.moc" diff --git a/massif-visualizer/app/configdialog.h b/massif-visualizer/app/configdialog.h new file mode 100644 index 00000000..949bd339 --- /dev/null +++ b/massif-visualizer/app/configdialog.h @@ -0,0 +1,53 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef CONFIGDIALOG_H +#define CONFIGDIALOG_H + +#include + +namespace Ui { +class Config; +} + +namespace Massif { + +/** + * Config dialog, gets deleted when closed. + */ +class ConfigDialog : public KConfigDialog +{ + Q_OBJECT + +public: + ConfigDialog(QWidget* parent); + virtual ~ConfigDialog(); + + static bool isShown(); + +private: + QScopedPointer m_ui; +}; + +} + +#endif // CONFIGDIALOG_H diff --git a/massif-visualizer/app/documenttabinterface.cpp b/massif-visualizer/app/documenttabinterface.cpp new file mode 100644 index 00000000..a691f341 --- /dev/null +++ b/massif-visualizer/app/documenttabinterface.cpp @@ -0,0 +1,41 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "documenttabinterface.h" + +using namespace Massif; + +DocumentTabInterface::DocumentTabInterface(const FileData* data, + KXMLGUIClient* guiParent, QWidget* parent) + : QWidget(parent) + , KXMLGUIClient(guiParent) + , m_data(data) +{ + +} + +DocumentTabInterface::~DocumentTabInterface() +{ + +} + +#include "documenttabinterface.moc" diff --git a/massif-visualizer/app/documenttabinterface.h b/massif-visualizer/app/documenttabinterface.h new file mode 100644 index 00000000..f0092a8f --- /dev/null +++ b/massif-visualizer/app/documenttabinterface.h @@ -0,0 +1,59 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef DOCUMENTTABINTERFACE_H +#define DOCUMENTTABINTERFACE_H + +#include + +#include + +#include "visualizer/modelitem.h" + +class QMenu; + +namespace Massif { +class FileData; +} + +class DocumentTabInterface : public QWidget, public KXMLGUIClient +{ + Q_OBJECT +public: + explicit DocumentTabInterface(const Massif::FileData* data, + KXMLGUIClient* guiParent, QWidget* parent = 0); + virtual ~DocumentTabInterface(); + + virtual void settingsChanged() = 0; + +public slots: + virtual void selectModelItem(const Massif::ModelItem& item) = 0; + +signals: + void modelItemSelected(const Massif::ModelItem& item); + void contextMenuRequested(const Massif::ModelItem& item, QMenu* menu); + +protected: + const Massif::FileData* const m_data; +}; + +#endif // DOCUMENTTABINTERFACE_H diff --git a/massif-visualizer/app/documentwidget.cpp b/massif-visualizer/app/documentwidget.cpp new file mode 100644 index 00000000..3c0239e1 --- /dev/null +++ b/massif-visualizer/app/documentwidget.cpp @@ -0,0 +1,306 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + Copyright 2013 Arnold Dumas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "documentwidget.h" + +#include + +#include "massifdata/filedata.h" +#include "massifdata/parser.h" +#include "massifdata/parseworker.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include +#include + +#include +// forward include not available until later KDE versions... +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "charttab.h" +#include "allocatorstab.h" + +#ifdef HAVE_KGRAPHVIEWER +#include "callgraphtab.h" + +#include +#include +#include +#endif + +using namespace Massif; + +DocumentWidget::DocumentWidget(const KUrl& file, const QStringList& customAllocators, + KXMLGUIClient* guiParent, QWidget* parent) + : QWidget(parent) + , KXMLGUIClient(guiParent) + , m_data(0) + , m_parseWorker(new ParseWorker) + , m_file(file) + , m_currentTab(0) + , m_stackedWidget(new QStackedWidget(this)) + , m_tabs(new QTabWidget(m_stackedWidget)) + , m_errorMessage(0) + , m_loadingMessage(0) + , m_loadingProgressBar(0) + , m_stopParserButton(0) + , m_isLoaded(false) +{ + connect(m_parseWorker, SIGNAL(finished(KUrl, Massif::FileData*)), + this, SLOT(parserFinished(KUrl, Massif::FileData*))); + connect(m_parseWorker, SIGNAL(error(QString, QString)), + this, SLOT(showError(QString, QString))); + connect(m_parseWorker, SIGNAL(progressRange(int, int)), + this, SLOT(setRange(int,int))); + connect(m_parseWorker, SIGNAL(progress(int)), + this, SLOT(setProgress(int))); + + // Create dedicated thread for this document. + // TODO: use ThreadWeaver + QThread* thread = new QThread(this); + thread->start(); + m_parseWorker->moveToThread(thread); + m_parseWorker->parse(file, customAllocators); + + setXMLFile("documentwidgetui.rc", true); + + // Set m_stackedWidget as the main widget. + setLayout(new QVBoxLayout(this)); + layout()->addWidget(m_stackedWidget); + + m_tabs->setTabPosition(QTabWidget::South); + m_stackedWidget->addWidget(m_tabs); + + // Second widget : loadingPage + QWidget* loadingPage = new QWidget(m_stackedWidget); + QVBoxLayout* verticalLayout = new QVBoxLayout(loadingPage); + QSpacerItem* upperSpacerItem = new QSpacerItem(20, 247, QSizePolicy::Minimum, QSizePolicy::Expanding); + verticalLayout->addItem(upperSpacerItem); + + m_loadingMessage = new QLabel(loadingPage); + m_loadingMessage->setText(i18n("loading file %1...", file.pathOrUrl())); + m_loadingMessage->setAlignment(Qt::AlignCenter); + verticalLayout->addWidget(m_loadingMessage); + + m_loadingProgressBar = new QProgressBar(loadingPage); + m_loadingProgressBar->setValue(24); + m_loadingProgressBar->setRange(0, 0); + verticalLayout->addWidget(m_loadingProgressBar); + + QWidget* stopParserWidget = new QWidget(loadingPage); + stopParserWidget->setLayoutDirection(Qt::LeftToRight); + QHBoxLayout* stopParserWidgetLayout = new QHBoxLayout(stopParserWidget); + m_stopParserButton = new QToolButton(stopParserWidget); + m_stopParserButton->setObjectName(QString::fromUtf8("stopParsing")); + m_stopParserButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + m_stopParserButton->setIcon(KIcon("process-stop")); + m_stopParserButton->setIconSize(QSize(48, 48)); + connect(m_stopParserButton, SIGNAL(clicked()), + this, SIGNAL(requestClose())); + stopParserWidgetLayout->addWidget(m_stopParserButton); + verticalLayout->addWidget(stopParserWidget); + + QSpacerItem* bottomSpacerItem = new QSpacerItem(20, 230, QSizePolicy::Minimum, QSizePolicy::Expanding); + verticalLayout->addItem(bottomSpacerItem); + m_stackedWidget->addWidget(loadingPage); + + // By default we show the loadingPage. + m_stackedWidget->setCurrentIndex(1); +} + +DocumentWidget::~DocumentWidget() +{ + stopParser(); + if (m_data) { + delete m_data; + m_data = 0; + m_file.clear(); + } +} + +FileData* DocumentWidget::data() const +{ + return m_data; +} + +KUrl DocumentWidget::file() const +{ + return m_file; +} + +bool DocumentWidget::isLoaded() const +{ + return m_isLoaded; +} + +void DocumentWidget::settingsChanged() +{ + for (int i = 0; i < m_tabs->count(); ++i) { + static_cast(m_tabs->widget(i))->settingsChanged(); + } +} + +void DocumentWidget::parserFinished(const KUrl& file, FileData* data) +{ + Q_ASSERT(data->peak()); + + kDebug() << "loaded massif file:" << file; + qDebug() << "description:" << data->description(); + qDebug() << "command:" << data->cmd(); + qDebug() << "time unit:" << data->timeUnit(); + qDebug() << "snapshots:" << data->snapshots().size(); + qDebug() << "peak: snapshot #" << data->peak()->number() << "after" << QString("%1%2").arg(data->peak()->time()).arg(data->timeUnit()); + qDebug() << "peak cost:" << prettyCost(data->peak()->memHeap()) << " heap" + << prettyCost(data->peak()->memHeapExtra()) << " heap extra" + << prettyCost(data->peak()->memStacks()) << " stacks"; + + m_data = data; + m_file = file; + + m_tabs->addTab(new ChartTab(m_data, this, this), KIcon("office-chart-area-stacked"), + i18n("Memory Chart")); + +#ifdef HAVE_KGRAPHVIEWER + static KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory(); + if (factory) { + KParts::ReadOnlyPart* part = factory->create("kgraphviewerpart", this); + if (part) { + m_tabs->addTab(new CallGraphTab(m_data, part, this, this), KIcon("kgraphviewer"), + i18n("Callgraph")); + } + } +#endif + + m_tabs->addTab(new AllocatorsTab(m_data, this, this), KIcon("view-list-text"), + i18n("Allocators")); + + for (int i = 0; i < m_tabs->count(); ++i) { + DocumentTabInterface* tab = static_cast(m_tabs->widget(i)); + connect(tab, SIGNAL(modelItemSelected(Massif::ModelItem)), + this, SIGNAL(modelItemSelected(Massif::ModelItem))); + connect(tab, SIGNAL(contextMenuRequested(Massif::ModelItem,QMenu*)), + this, SIGNAL(contextMenuRequested(Massif::ModelItem,QMenu*))); + } + + m_tabs->setCurrentIndex(0); + connect(m_tabs, SIGNAL(currentChanged(int)), + this, SLOT(slotTabChanged(int))); + slotTabChanged(0); + + m_isLoaded = true; + + // Switch to the display page and notify that everything is setup. + m_stackedWidget->setCurrentIndex(0); + emit loadingFinished(); +} + +void DocumentWidget::addGuiActions(KXMLGUIFactory* factory) +{ + factory->addClient(this); + + // ensure only the current tab's client is in the factory + // otherwise the actions from the other tabs are visible + const int current = m_tabs->currentIndex(); + for (int i = 0; i < m_tabs->count(); ++i) { + if (i != current) { + factory->removeClient(static_cast(m_tabs->widget(i))); + } + } +} + +void DocumentWidget::clearGuiActions(KXMLGUIFactory* factory) +{ + factory->removeClient(this); +} + +void DocumentWidget::slotTabChanged(int tab) +{ + if (!factory()) { + return; + } + + if (m_currentTab) { + factory()->removeClient(m_currentTab); + } + + if (tab >= 0 && tab < m_tabs->count()) { + m_currentTab = static_cast(m_tabs->widget(tab)); + factory()->addClient(m_currentTab); + } +} + +void DocumentWidget::selectModelItem(const ModelItem& item) +{ + for (int i = 0; i < m_tabs->count(); ++i) { + static_cast(m_tabs->widget(i))->selectModelItem(item); + } +} + +void DocumentWidget::setProgress(int value) +{ + m_loadingProgressBar->setValue(value); +} + +void DocumentWidget::setRange(int minimum, int maximum) +{ + m_loadingProgressBar->setRange(minimum, maximum); +} + +void DocumentWidget::showError(const QString& title, const QString& error) +{ + if (!m_errorMessage) { + m_errorMessage = new KMessageWidget(m_stackedWidget); + m_stackedWidget->addWidget(m_errorMessage); + m_errorMessage->setWordWrap(true); + m_errorMessage->setMessageType(KMessageWidget::Error); + m_errorMessage->setCloseButtonVisible(false); + } + m_errorMessage->setText(QString("%1

%2

").arg(title).arg(error)); + m_stackedWidget->setCurrentWidget(m_errorMessage); +} + +void DocumentWidget::stopParser() +{ + if (!m_parseWorker) { + return; + } + + QThread* thread = m_parseWorker->thread(); + m_parseWorker->stop(); + m_parseWorker->deleteLater(); + m_parseWorker = 0; + thread->quit(); + thread->wait(); +} diff --git a/massif-visualizer/app/documentwidget.h b/massif-visualizer/app/documentwidget.h new file mode 100644 index 00000000..f61a5d7b --- /dev/null +++ b/massif-visualizer/app/documentwidget.h @@ -0,0 +1,104 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + Copyright 2013 Arnold Dumas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef DOCUMENTWIDGET_H +#define DOCUMENTWIDGET_H + +#include + +#include +#include + +#include "visualizer/modelitem.h" + +class DocumentTabInterface; + +class QMenu; +class QLabel; +class QProgressBar; +class QToolButton; +class QStackedWidget; +class QTabWidget; + +class KMessageWidget; + +namespace Massif { +class FileData; +class ParseWorker; +} + +class DocumentWidget : public QWidget, public KXMLGUIClient +{ + Q_OBJECT + +public: + explicit DocumentWidget(const KUrl& file, const QStringList& customAllocators, + KXMLGUIClient* guiParent, QWidget* parent = 0); + ~DocumentWidget(); + + Massif::FileData* data() const; + KUrl file() const; + + bool isLoaded() const; + + void settingsChanged(); + + void addGuiActions(KXMLGUIFactory* factory); + void clearGuiActions(KXMLGUIFactory* factory); + + void selectModelItem(const Massif::ModelItem& item); + +signals: + void loadingFinished(); + void modelItemSelected(const Massif::ModelItem& item); + void contextMenuRequested(const Massif::ModelItem& item, QMenu* menu); + void requestClose(); + +private slots: + void stopParser(); + void parserFinished(const KUrl& file, Massif::FileData* data); + + void setProgress(int value); + void setRange(int minimum, int maximum); + + void showError(const QString& title, const QString& error); + + void slotTabChanged(int tab); + +private: + Massif::FileData* m_data; + Massif::ParseWorker* m_parseWorker; + KUrl m_file; + + DocumentTabInterface* m_currentTab; + + QStackedWidget* m_stackedWidget; + QTabWidget* m_tabs; + KMessageWidget* m_errorMessage; + QLabel* m_loadingMessage; + QProgressBar* m_loadingProgressBar; + QToolButton* m_stopParserButton; + bool m_isLoaded; +}; + +#endif // DOCUMENTWIDGET_H diff --git a/massif-visualizer/app/documentwidgetui.rc b/massif-visualizer/app/documentwidgetui.rc new file mode 100644 index 00000000..2d500faa --- /dev/null +++ b/massif-visualizer/app/documentwidgetui.rc @@ -0,0 +1,4 @@ + + + + diff --git a/massif-visualizer/app/main.cpp b/massif-visualizer/app/main.cpp new file mode 100644 index 00000000..6e4554fd --- /dev/null +++ b/massif-visualizer/app/main.cpp @@ -0,0 +1,65 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include +#include +#include + +#include + +#include "mainwindow.h" + +int main( int argc, char *argv[] ) +{ + KAboutData aboutData( "massif-visualizer", 0, ki18n( "Massif Visualizer" ), + "0.5", ki18n("A visualizer for output generated by Valgrind's massif tool."), KAboutData::License_LGPL, + ki18n( "Copyright 2010-2014, Milian Wolff " ), + KLocalizedString(), QByteArray(), "massif-visualizer@kde.org" ); + + aboutData.addAuthor(ki18n("Milian Wolff"), ki18n("Original author, maintainer"), + "mail@milianw.de", "http://milianw.de"); + + aboutData.addAuthor(ki18n("Arnold Dumas"), ki18n("Multiple document interface, bug fixes"), + "contact@arnolddumas.fr", "http://arnolddumas.fr"); + + aboutData.setProgramIconName("office-chart-area"); + + KCmdLineArgs::init( argc, argv, &aboutData, KCmdLineArgs::CmdLineArgNone ); + KCmdLineOptions options; + options.add("+file(s)", ki18n("Opens given output file(s) and visualize it.")); + + KCmdLineArgs::addCmdLineOptions( options ); + KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); + KApplication app; + + Massif::MainWindow* window = new Massif::MainWindow; + + for (int i = 0; i < args->count(); ++i) { + window->openFile(args->url(i)); + } + + window->show(); + return app.exec(); +} diff --git a/massif-visualizer/app/mainwindow.cpp b/massif-visualizer/app/mainwindow.cpp new file mode 100644 index 00000000..eb74627a --- /dev/null +++ b/massif-visualizer/app/mainwindow.cpp @@ -0,0 +1,528 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + Copyright 2013 Arnold Dumas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "mainwindow.h" + +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include "visualizer/totalcostmodel.h" +#include "visualizer/detailedcostmodel.h" +#include "visualizer/datatreemodel.h" +#include "visualizer/filtereddatatreemodel.h" +#include "visualizer/dotgraphgenerator.h" + +#include "massif-visualizer-settings.h" +#include "configdialog.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#ifdef HAVE_KGRAPHVIEWER +#include +#endif + +using namespace Massif; + +// Helper function +static KConfigGroup allocatorConfig() +{ + return KGlobal::config()->group("Allocators"); +} + +MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags f) + : KParts::MainWindow(parent, f) + , m_recentFiles(0) + , m_close(0) + , m_allocatorModel(new QStringListModel(this)) + , m_newAllocator(0) + , m_removeAllocator(0) + , m_shortenTemplates(0) + , m_selectPeak(0) + , m_currentDocument(0) + , m_dataTreeModel(new DataTreeModel(this)) + , m_dataTreeFilterModel(new FilteredDataTreeModel(m_dataTreeModel)) + , m_settingSelection(false) +{ + ui.setupUi(this); + + setWindowTitle(i18n("Massif Visualizer")); + + //BEGIN KGraphViewer + bool haveGraphViewer = false; + + // NOTE: just check if kgraphviewer is available at runtime. + // The former logic has been moved to DocumentWidget constructor. +#ifdef HAVE_KGRAPHVIEWER + KPluginFactory *factory = KPluginLoader("kgraphviewerpart").factory(); + if (factory) { + KParts::ReadOnlyPart* readOnlyPart = factory->create("kgraphviewerpart", this); + if (readOnlyPart) { + readOnlyPart->widget()->hide(); + haveGraphViewer = true; + } + } +#endif + + if (!haveGraphViewer) { + // cleanup UI when we installed with kgraphviewer but it's not available at runtime + KToolBar* callgraphToolbar = toolBar("callgraphToolBar"); + removeToolBar(callgraphToolbar); + delete callgraphToolbar; + } + //END KGraphViewer + + ui.documents->setMovable(true); + ui.documents->setTabsClosable(true); + connect(ui.documents, SIGNAL(currentChanged(int)), + this, SLOT(documentChanged())); + connect(ui.documents, SIGNAL(tabCloseRequested(int)), + this, SLOT(closeFileTab(int))); + + //BEGIN custom allocators + tabifyDockWidget(ui.allocatorDock, ui.dataTreeDock); + ui.allocatorView->setModel(m_allocatorModel); + + int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize); + ui.dockMenuBar->setIconSize(QSize(iconSize, iconSize)); + ui.dockMenuBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + ui.dockMenuBar->setFloatable(false); + ui.dockMenuBar->setMovable(false); + + KConfigGroup cfg = allocatorConfig(); + m_allocatorModel->setStringList(cfg.entryMap().values()); + + connect(m_allocatorModel, SIGNAL(modelReset()), + this, SLOT(allocatorsChanged())); + + connect(m_allocatorModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(allocatorsChanged())); + + connect(ui.dataTreeView, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(dataTreeContextMenuRequested(QPoint))); + ui.dataTreeView->setContextMenuPolicy(Qt::CustomContextMenu); + + connect(ui.allocatorView, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(allocatorViewContextMenuRequested(QPoint))); + ui.allocatorView->setContextMenuPolicy(Qt::CustomContextMenu); + //END custom allocators + + setupActions(); + setupGUI(StandardWindowOptions(Default ^ StatusBar)); + statusBar()->hide(); + + ui.dataTreeView->setModel(m_dataTreeFilterModel); + + connect(ui.filterDataTree, SIGNAL(textChanged(QString)), + m_dataTreeFilterModel, SLOT(setFilter(QString))); + connect(ui.dataTreeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + this, SLOT(treeSelectionChanged(QModelIndex,QModelIndex))); + + // open page + ui.stackedWidget->setCurrentWidget(ui.openPage); +} + +MainWindow::~MainWindow() +{ + while (ui.documents->count()) { + closeCurrentFile(); + } + + m_recentFiles->saveEntries(KGlobal::config()->group( QString() )); +} + +void MainWindow::setupActions() +{ + KAction* openFile = KStandardAction::open(this, SLOT(openFile()), actionCollection()); + m_recentFiles = KStandardAction::openRecent(this, SLOT(openFile(KUrl)), actionCollection()); + m_recentFiles->loadEntries(KGlobal::config()->group( QString() )); + + KAction* reload = KStandardAction::redisplay(this, SLOT(reloadCurrentFile()), actionCollection()); + actionCollection()->addAction("file_reload", reload); + reload->setEnabled(false); + + m_close = KStandardAction::close(this, SLOT(closeCurrentFile()), actionCollection()); + m_close->setEnabled(false); + + KStandardAction::quit(qApp, SLOT(closeAllWindows()), actionCollection()); + + KStandardAction::preferences(this, SLOT(preferences()), actionCollection()); + + m_shortenTemplates = new KAction(KIcon("shortentemplates"), i18n("Shorten Templates"), actionCollection()); + m_shortenTemplates->setCheckable(true); + m_shortenTemplates->setChecked(Settings::shortenTemplates()); + connect(m_shortenTemplates, SIGNAL(toggled(bool)), SLOT(slotShortenTemplates(bool))); + actionCollection()->addAction("shorten_templates", m_shortenTemplates); + + m_selectPeak = new KAction(KIcon("flag-red"), i18n("Select peak snapshot"), actionCollection()); + connect(m_selectPeak, SIGNAL(triggered()), this, SLOT(selectPeakSnapshot())); + actionCollection()->addAction("selectPeak", m_selectPeak); + m_selectPeak->setEnabled(false); + + //BEGIN custom allocators + m_newAllocator = new KAction(KIcon("list-add"), i18n("add"), ui.allocatorDock); + m_newAllocator->setToolTip(i18n("add custom allocator")); + connect(m_newAllocator, SIGNAL(triggered()), this, SLOT(slotNewAllocator())); + ui.dockMenuBar->addAction(m_newAllocator); + m_removeAllocator = new KAction(KIcon("list-remove"), i18n("remove"), + ui.allocatorDock); + m_newAllocator->setToolTip(i18n("remove selected allocator")); + connect(m_removeAllocator, SIGNAL(triggered()), this, SLOT(slotRemoveAllocator())); + connect(ui.allocatorView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(allocatorSelectionChanged())); + m_removeAllocator->setEnabled(false); + ui.dockMenuBar->addAction(m_removeAllocator); + + m_markCustomAllocator = new KAction(i18n("mark as custom allocator"), ui.allocatorDock); + connect(m_markCustomAllocator, SIGNAL(triggered()), + this, SLOT(slotMarkCustomAllocator()), Qt::QueuedConnection); + //END custom allocators + + //dock actions + actionCollection()->addAction("toggleDataTree", ui.dataTreeDock->toggleViewAction()); + actionCollection()->addAction("toggleAllocators", ui.allocatorDock->toggleViewAction()); + + //open page actions + ui.openFile->setDefaultAction(openFile); + ui.openFile->setText(i18n("Open Massif Data File")); + ui.openFile->setIconSize(QSize(48, 48)); +} + +void MainWindow::preferences() +{ + if (ConfigDialog::isShown()) { + return; + } + + ConfigDialog* dlg = new ConfigDialog(this); + connect(dlg, SIGNAL(settingsChanged(QString)), + this, SLOT(settingsChanged())); + dlg->show(); +} + +void MainWindow::settingsChanged() +{ + if (Settings::self()->shortenTemplates() != m_shortenTemplates->isChecked()) { + m_shortenTemplates->setChecked(Settings::self()->shortenTemplates()); + } + + Settings::self()->writeConfig(); + + if (m_currentDocument) { + m_currentDocument->settingsChanged(); + } + ui.dataTreeView->viewport()->update(); +} + +void MainWindow::openFile() +{ + const KUrl::List files = KFileDialog::getOpenUrls(KUrl("kfiledialog:///massif-visualizer"), + QString("application/x-valgrind-massif"), + this, i18n("Open Massif Output File")); + foreach (const KUrl& file, files) { + openFile(file); + } +} + +void MainWindow::reloadCurrentFile() +{ + if (m_currentDocument->file().isValid()) { + openFile(KUrl(m_currentDocument->file())); + } +} + +void MainWindow::openFile(const KUrl& file) +{ + Q_ASSERT(file.isValid()); + + // Is file already opened ? + int indexToInsert = -1; + for (int i = 0; i < ui.documents->count(); ++i) { + if (qobject_cast(ui.documents->widget(i))->file() == file) { + indexToInsert = i; + break; + } + } + + DocumentWidget* documentWidget = new DocumentWidget(file.pathOrUrl(), m_allocatorModel->stringList(), + this, this); + + if (indexToInsert != -1) { + // Remove existing instance of the file. + ui.documents->setCurrentIndex(indexToInsert); + closeCurrentFile(); + // Insert the new tab at the correct position. + ui.documents->insertTab(indexToInsert, documentWidget, file.fileName()); + ui.documents->setCurrentIndex(indexToInsert); + } else { + const int idx = ui.documents->addTab(documentWidget, file.fileName()); + ui.documents->setCurrentIndex(idx); + } + connect(documentWidget, SIGNAL(loadingFinished()), + this, SLOT(documentChanged())); + connect(documentWidget, SIGNAL(requestClose()), + this, SLOT(closeRequested())); + + m_recentFiles->addUrl(file); + ui.stackedWidget->setCurrentWidget(ui.displayPage); +} + +void MainWindow::treeSelectionChanged(const QModelIndex& now, const QModelIndex& before) +{ + if (!m_currentDocument || m_settingSelection || now == before) { + return; + } + + m_settingSelection = true; + + const ModelItem& item = now.data(DataTreeModel::ModelItemRole).value(); + m_currentDocument->selectModelItem(item); + + m_settingSelection = false; +} + +void MainWindow::modelItemSelected(const ModelItem& item) +{ + if (!m_currentDocument || m_settingSelection) { + return; + } + + m_settingSelection = true; + + const QModelIndex& newIndex = m_dataTreeFilterModel->mapFromSource( + m_dataTreeModel->indexForItem(item) + ); + ui.dataTreeView->selectionModel()->clearSelection(); + ui.dataTreeView->selectionModel()->setCurrentIndex(newIndex, QItemSelectionModel::Select | QItemSelectionModel::Rows); + ui.dataTreeView->scrollTo(ui.dataTreeView->selectionModel()->currentIndex()); + m_currentDocument->selectModelItem(item); + + m_settingSelection = false; +} + +void MainWindow::selectPeakSnapshot() +{ + ui.dataTreeView->selectionModel()->clearSelection(); + ui.dataTreeView->selectionModel()->setCurrentIndex( + m_dataTreeFilterModel->mapFromSource( + m_dataTreeModel->indexForSnapshot(m_currentDocument->data()->peak())), + QItemSelectionModel::Select | QItemSelectionModel::Rows + ); +} + +void MainWindow::closeCurrentFile() +{ + closeFileTab(ui.documents->currentIndex()); +} + +void MainWindow::closeRequested() +{ + DocumentWidget* widget = qobject_cast(sender()); + Q_ASSERT(widget); + closeFileTab(ui.documents->indexOf(widget)); +} + +void MainWindow::closeFileTab(int idx) +{ + Q_ASSERT(idx != -1); + ui.documents->widget(idx)->deleteLater(); + ui.documents->removeTab(idx); +} + +void MainWindow::allocatorsChanged() +{ + KConfigGroup cfg = allocatorConfig(); + cfg.deleteGroup(); + int i = 0; + foreach(const QString& allocator, m_allocatorModel->stringList()) { + if (allocator.isEmpty()) { + m_allocatorModel->removeRow(i); + continue; + } + cfg.writeEntry(QString::number(i++), allocator); + } + cfg.sync(); + + if (m_currentDocument) { + reloadCurrentFile(); + } +} + +void MainWindow::allocatorSelectionChanged() +{ + m_removeAllocator->setEnabled(ui.allocatorView->selectionModel()->hasSelection()); +} + +void MainWindow::slotNewAllocator() +{ + QString allocator = QInputDialog::getText(this, i18n("Add Custom Allocator"), i18n("allocator:")); + if (allocator.isEmpty()) { + return; + } + if (!m_allocatorModel->stringList().contains(allocator)) { + m_allocatorModel->setStringList(m_allocatorModel->stringList() << allocator); + } +} + +void MainWindow::slotRemoveAllocator() +{ + Q_ASSERT(ui.allocatorView->selectionModel()->hasSelection()); + foreach(const QModelIndex& idx, ui.allocatorView->selectionModel()->selectedRows()) { + m_allocatorModel->removeRow(idx.row(), idx.parent()); + } + allocatorsChanged(); +} + +void MainWindow::slotMarkCustomAllocator() +{ + const QString allocator = m_markCustomAllocator->data().toString(); + Q_ASSERT(!allocator.isEmpty()); + if (!m_allocatorModel->stringList().contains(allocator)) { + m_allocatorModel->setStringList(m_allocatorModel->stringList() << allocator); + } +} + +void MainWindow::allocatorViewContextMenuRequested(const QPoint& pos) +{ + const QModelIndex idx = ui.allocatorView->indexAt(pos); + + QMenu menu; + menu.addAction(m_newAllocator); + if (idx.isValid()) { + menu.addAction(m_removeAllocator); + } + menu.exec(ui.allocatorView->mapToGlobal(pos)); +} + +void MainWindow::dataTreeContextMenuRequested(const QPoint& pos) +{ + const QModelIndex idx = ui.dataTreeView->indexAt(pos); + const TreeLeafItem* item = idx.data(DataTreeModel::TreeItemRole).value(); + if (!item) { + return; + } + + QMenu menu; + contextMenuRequested(ModelItem(item, 0), &menu); + + menu.exec(ui.dataTreeView->mapToGlobal(pos)); +} + +void MainWindow::contextMenuRequested(const ModelItem& item, QMenu* menu) +{ + if (!item.first) { + // only handle context menu on tree-leaf items for now + return; + } + + QString func = functionInLabel(item.first->label()); + if (func.length() > 40) { + func.resize(40); + func.append("..."); + } + menu->setTitle(func); + + m_markCustomAllocator->setData(item.first->label()); + menu->addAction(m_markCustomAllocator); +} + +void MainWindow::slotShortenTemplates(bool shorten) +{ + if (shorten == Settings::self()->shortenTemplates()) { + return; + } + + Settings::self()->setShortenTemplates(shorten); + settingsChanged(); +} + +void MainWindow::updateWindowTitle() +{ + if (m_currentDocument && m_currentDocument->isLoaded()) { + setWindowTitle(i18n("Massif Visualizer - evaluation of %1 (%2)", m_currentDocument->data()->cmd(), m_currentDocument->file().fileName())); + } else { + setWindowTitle(i18n("Massif Visualizer")); + } +} + +void MainWindow::documentChanged() +{ + // required to prevent GUI flickering when changing documents + // the changing actions in the toolbar are really flickering bad otherwise + setUpdatesEnabled(false); + + if (m_currentDocument) { + m_dataTreeModel->setSource(0); + m_dataTreeFilterModel->setFilter(QString()); + m_currentDocument->clearGuiActions(guiFactory()); + disconnect(m_currentDocument, SIGNAL(modelItemSelected(Massif::ModelItem)), + this, SLOT(modelItemSelected(Massif::ModelItem))); + disconnect(m_currentDocument, SIGNAL(contextMenuRequested(Massif::ModelItem,QMenu*)), + this, SLOT(contextMenuRequested(Massif::ModelItem,QMenu*))); + } + + m_currentDocument = qobject_cast(ui.documents->currentWidget()); + + updateWindowTitle(); + + actionCollection()->action("file_reload")->setEnabled(m_currentDocument && m_currentDocument->isLoaded()); + m_close->setEnabled(m_currentDocument); + m_selectPeak->setEnabled(m_currentDocument && m_currentDocument->isLoaded()); + + if (!m_currentDocument) { + ui.stackedWidget->setCurrentWidget(ui.openPage); + setUpdatesEnabled(true); + return; + } else { + m_dataTreeModel->setSource(m_currentDocument->data()); + m_currentDocument->addGuiActions(guiFactory()); + connect(m_currentDocument, SIGNAL(modelItemSelected(Massif::ModelItem)), + this, SLOT(modelItemSelected(Massif::ModelItem))); + connect(m_currentDocument, SIGNAL(contextMenuRequested(Massif::ModelItem,QMenu*)), + this, SLOT(contextMenuRequested(Massif::ModelItem,QMenu*))); + } + + setUpdatesEnabled(true); +} + +#include "mainwindow.moc" diff --git a/massif-visualizer/app/mainwindow.h b/massif-visualizer/app/mainwindow.h new file mode 100644 index 00000000..2a4c4626 --- /dev/null +++ b/massif-visualizer/app/mainwindow.h @@ -0,0 +1,145 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + Copyright 2013 Arnold Dumas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef MASSIF_MAINWINDOW_H +#define MASSIF_MAINWINDOW_H + +#include + +#include + +#include "ui_mainwindow.h" +#include "documentwidget.h" + +class QSpinBox; +class QStringListModel; + +namespace KDChart { +class Chart; +class HeaderFooter; +class Plotter; +class CartesianAxis; +class Legend; +class BarDiagram; +} + +class KAction; +class KRecentFilesAction; + +#ifdef HAVE_KGRAPHVIEWER +namespace KGraphViewer { +class KGraphViewerInterface; +} +#endif + +namespace Massif { + +class FilteredDataTreeModel; +class DataTreeModel; +class SnapshotItem; +class TreeLeafItem; + +class MainWindow : public KParts::MainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget* parent = 0, Qt::WindowFlags f = 0); + virtual ~MainWindow(); + + void setupActions(); + +public slots: + /** + * Open a dialog to pick a massif output file(s) to display. + */ + void openFile(); + + /** + * Opens @p file as massif output file and visualize it. + */ + void openFile(const KUrl& file); + + /** + * reload currently opened file + */ + void reloadCurrentFile(); + + /** + * Close currently opened file. + */ + void closeCurrentFile(); + +private slots: + void closeRequested(); + void closeFileTab(int idx); + + void preferences(); + void settingsChanged(); + + void treeSelectionChanged(const QModelIndex& now, const QModelIndex& before); + void selectPeakSnapshot(); + void modelItemSelected(const Massif::ModelItem& item); + void contextMenuRequested(const Massif::ModelItem& item, QMenu* menu); + + void documentChanged(); + + void allocatorsChanged(); + void allocatorSelectionChanged(); + void dataTreeContextMenuRequested(const QPoint &pos); + void slotNewAllocator(); + void slotRemoveAllocator(); + /// operates on data of @c m_markCustomAllocator + void slotMarkCustomAllocator(); + void allocatorViewContextMenuRequested(const QPoint &pos); + + void slotShortenTemplates(bool); + +private: + void updateWindowTitle(); + + // Helper + Ui::MainWindow ui; + + KRecentFilesAction* m_recentFiles; + + KAction* m_close; + + QStringListModel* m_allocatorModel; + KAction* m_newAllocator; + KAction* m_removeAllocator; + KAction* m_markCustomAllocator; + + KAction* m_shortenTemplates; + KAction* m_selectPeak; + + DocumentWidget* m_currentDocument; + + Massif::DataTreeModel* m_dataTreeModel; + Massif::FilteredDataTreeModel* m_dataTreeFilterModel; + bool m_settingSelection; +}; + +} + +#endif // MASSIF_MAINWINDOW_H diff --git a/massif-visualizer/app/mainwindow.ui b/massif-visualizer/app/mainwindow.ui new file mode 100644 index 00000000..4fda1a63 --- /dev/null +++ b/massif-visualizer/app/mainwindow.ui @@ -0,0 +1,169 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + + + + + -1 + + + true + + + + + + + + + + + Qt::Vertical + + + + 20 + 252 + + + + + + + + + + + ... + + + Qt::ToolButtonTextUnderIcon + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + 0 + 0 + 800 + 19 + + + + + + + Massif Data + + + 2 + + + + + + + false + + + filter + + + true + + + + + + + + + + + + Custom Allocators + + + 2 + + + + + + + + + + + + + + + + KLineEdit + QLineEdit +
klineedit.h
+
+ + KToolBar + QWidget +
ktoolbar.h
+ 1 +
+
+ + +
diff --git a/massif-visualizer/app/massif-visualizer-settings.kcfg b/massif-visualizer/app/massif-visualizer-settings.kcfg new file mode 100644 index 00000000..2c560790 --- /dev/null +++ b/massif-visualizer/app/massif-visualizer-settings.kcfg @@ -0,0 +1,49 @@ + + + + + 1 + + Defines the number of places after the comma for memory costs shown in the application. + + + 0 + + Defines whether identifiers of C++ template instantiations should be shortened by removing their template arguments. + + + EnumLegendPosition::Floating + + Defines the position of the legend relative to the plot. + + + + + + + + + + EnumLegendAlignment::Center + + Defines the alignment of the legend. + + + + + + + + + + 12 + 6 + 14 + + Defines the font size used in the legend. + + + diff --git a/massif-visualizer/app/massif-visualizer-settings.kcfgc b/massif-visualizer/app/massif-visualizer-settings.kcfgc new file mode 100644 index 00000000..682697c9 --- /dev/null +++ b/massif-visualizer/app/massif-visualizer-settings.kcfgc @@ -0,0 +1,8 @@ +File=massif-visualizer-settings.kcfg +ClassName=Settings +NameSpace=Massif +Singleton=true +UseEnumTypes=true +SetUserTexts=true +ItemAccessors=true +Mutators=true diff --git a/massif-visualizer/app/massif-visualizer.appdata.xml b/massif-visualizer/app/massif-visualizer.appdata.xml new file mode 100644 index 00000000..0b1af951 --- /dev/null +++ b/massif-visualizer/app/massif-visualizer.appdata.xml @@ -0,0 +1,172 @@ + + + massif-visualizer.desktop + CC0-1.0 + GPL-2.0+ + Massif-Visualizer + Massif-Visualizer + Massif-Visualizer + Massif-Visualizer + Massif-Visualizer + Massif-Visualizer + Visualizador de Massif + Massif 시각화 도구 + Massif-Visualizer + Wizualizacja-Massif + Visualizador do Massif + Visualizador de Massif + Massif-Visualizer + Massif visualisering + Візуалізатор Massif + xxMassif-Visualizerxx + A visualizer for Valgrind Massif data files. + Un visualitzador pels fitxers de dades Massif del Valgrind. + Ein Programm zum Visualisieren von Massif-Datendateien. + A visualiser for Valgrind Massif data files. + Un visualizador para archivos de datos Massif de Valgrind. + Un visualizador para ficheiros de datos Massif de Valgrind. + Valgrind의 massif 도구의 출력을 시각화합니다. + Een programma voor het zichtbaar maken van gegevensbestanden van Valgrind Massif. + Wizualizacja dla plików Valgrind Massif. + Um visualizador dos ficheiros dos dados do Massif para o Valgrind. + Um visualizador para arquivos de dados Massif do Valgrind. + Ett visualiseringsverktyg för utdata skapad av Valgrinds verktyg Massif + Засіб візуалізації файлів даних Massif Valgrind. + xxA visualizer for Valgrind Massif data files.xx + +

+ Massif Visualizer is a tool that - who'd guess that - visualizes massif data. + You run your application in Valgrind with --tool=massif and then open the generated + massif.out.%pid in the visualizer. Gzip or Bzip2 compressed massif files can also be + opened transparently. +

+

Massif Visualizer és una eina que -com imagineu- visualitza les dades massif. Executeu l'aplicació en Valgrind amb --tool=massif i després obriu el massif.out.%pid generat en el visualitzador. Els fitxers massif comprimits amb gzip o bzip2 també es poden obrir de forma transparent.

+

Massif Visualizer is a tool that - who'd guess that - visualises massif data. You run your application in Valgrind with --tool=massif and then open the generated massif.out.%pid in the visualiser. Gzip or Bzip2 compressed massif files can also be opened transparently.

+

Massif Visualizer es una herramienta que sirve para visualizar datos de Massif. Puede ejecutar una aplicación en Valgrind con «--tool=massif» y abrir a continuación en el visualizador el archivo «massif.out.%pid» generado. También se pueden abrir de forma transparente los archivos de Massif comprimidos con Gzip o Bzip2.

+

Visualizador de Massif é unha ferramenta que, como o nome indica, permite visualizar datos Massif. Execute o seu programa en Valgrind usando a opción «--tool=massif» e a continuación abra o ficheiro «massif.out.%pid» xerado no visualizador. Tamén pode abrir ficheiros Massif comprimidos con Gzip ou Bzip2 de maneira transparente.

+

Massif 시각화 도구는 massif 데이터를 표시합니다. Valgrind에서 프로그램을 실행시킬 때 --tool=massif 인자로 실행시키고, 생성된 massif.out.%pid 파일을 시각화 도구로 엽니다. Gzip/Bzip2 압축된 파일도 별도의 과정 없이 열 수 있습니다.

+

Massif Visualizer is een hulpmiddel dat - u raad het - massif-gegevens visualiseert. U kunt uw toepassing in Valgrind uitvoeren met --tool=massif en dan de gegenereerde massif.out.%pid openen in het visualisatieprogramma. Gzip of Bzip2 gecomprimeerde massif-bestanden kunnen ook transparent geopend worden.

+

Program do wizualizacji Massif jest narzędziem, które wizualizuje dane massif. Uruchamiasz swoją aplikację w Valgrind przy użyciu --tool=massif a następnie otwierasz utworzony massif.out.%pid w programie do wizualizacji. Można otwierać pliki massif skompresowane przy użyciu Gzip lub Bzip2.

+

O Visualizador do Massif é uma ferramenta que, como é óbvio, apresenta dados do Massif. Você poderá executar a sua aplicação no Valgrind com a opção --tool=massif e depois abrir o ficheiro massif.out.%pid gerado no visualizador. Poderá abrir de forma transparente os ficheiros do Massif comprimidos com Gzip ou Bzip2.

+

O Visualizador de Massif é uma ferramenta que, como o nome sugere, visualiza dados Massif. Você pode executar seu aplicativo no Valgrind com a opção --tool=massif e depois abrir o arquivo massif.out.%pid gerado no visualizador. Os arquivos Massif compactados com Gzip ou Bzip2 podem ser abertos de forma transparente.

+

Massif visualisering är ett verktyg som åskådliggöra data från Massif, som inte är svårt att gissa. Man kör sitt program i Valgrind med --tool=massif och öppnar den skapade massif.out.%pid i verktyget. Massif-filer komprimerade med gzip eller bzip2 kan också öppnas direkt.

+

Візуалізатор Massif, яким би дивним це не здавалося, — засіб для візуалізації даних massif. Ви запускаєте вашу програму у Valgrind із параметром --tool=massif, а потім відкриваєте створений файл massif.out.%pid у засобі візуалізації. Передбачено прозоре відкриття файлів massif, запакованих за допомогою Gzip або Bzip2.

+

xxMassif Visualizer is a tool that - who'd guess that - visualizes massif data. You run your application in Valgrind with --tool=massif and then open the generated massif.out.%pid in the visualizer. Gzip or Bzip2 compressed massif files can also be opened transparently.xx

+

Features:

+

Característiques:

+

Vlastnosti:

+

Funktionen:

+

Features:

+

Funciones:

+

Funcionalidades:

+

기능:

+

Kenmerken:

+

Możliwości:

+

Funcionalidades:

+

Funcionalidades:

+

Funkcie:

+

Funktioner:

+

Можливості:

+

xxFeatures:xx

+
    +
  • Interactive chart of memory consumption over time.
  • +
  • Gràfic interactiu del consum de memòria al llarg del temps.
  • +
  • Interaktive Diagramme des Speicherverbrauch über Zeiträume.
  • +
  • Interactive chart of memory consumption over time.
  • +
  • Mapa interactivo del consumo de memoria a lo largo del tiempo.
  • +
  • Gráfica interactiva de consumo de memoria no tempo.
  • +
  • 시간별 메모리 사용량 차트 표시.
  • +
  • Interactieve grafiek van geheugengebruik in de tijd.
  • +
  • Interaktywny wykres wykorzystania pamięci w czasie.
  • +
  • Gráfico interactivo do consumo de memória ao longo do tempo.
  • +
  • Gráfico interativo do consumo de memória usada pelo aplicativo.
  • +
  • Interaktivt diagram av minnesanvändning över tid.
  • +
  • Інтерактивна діаграма споживання пам’яті.
  • +
  • xxInteractive chart of memory consumption over time.xx
  • +
  • Detailed snapshot analysis with callgraph visualization (requires KGraphViewer).
  • +
  • Anàlisi detallat de les captures amb visualització de «callgraph» (requereix el KGraphViewer).
  • +
  • Detailed snapshot analysis with callgraph visualisation (requires KGraphViewer).
  • +
  • Análisis detallado de instantáneas con visualización de «callgraph» (necesita KGraphViewer).
  • +
  • Análise detallada de capturas con visualización da gráfica de chamadas (require KGraphViewer).
  • +
  • 호출 그래프 시각화 및 자세한 스냅샷 분석(KGraphViewer 필요).
  • +
  • Gedetailleerde analyses van momentopnamen met callgraph-visualisatie (vereist KGraphViewer).
  • +
  • Szczegółowe analizy zrzutów z wizualizacją wykresu wywołań (wymaga KGraphViewer).
  • +
  • Análise detalhada das capturas com a visualização do grafo de chamadas (precisa do KGraphViewer).
  • +
  • Análise detalhada das capturas com a visualização do grafo de chamadas (é necessário o KGraphViewer).
  • +
  • Detaljerad ögonblicksanalys med visualisering av anropsgraf (kräver Kgraphviewer).
  • +
  • Докладний аналіз знімків із візуалізацією графу викликів (потребує KGraphViewer).
  • +
  • xxDetailed snapshot analysis with callgraph visualization (requires KGraphViewer).xx
  • +
  • Summary of peak memory consumption of all allocating functions.
  • +
  • Resum dels pics de consum de memòria de totes les funcions d'assignació.
  • +
  • Summary of peak memory consumption of all allocating functions.
  • +
  • Sumario de picos de consumo de memoria de todas las funciones de asignación.
  • +
  • Resumo dos picos de consumo de memoria de todas as funcións de reserva de memoria.
  • +
  • 모든 할당된 함수의 메모리 소모 요약.
  • +
  • Overzicht van pieken in geheugengebruik van alle functies voor toekennen.
  • +
  • Podsumowanie szczytowego wykorzystania pamięci wszystkich przydzielonych funkcji.
  • +
  • Resumo do consumo de pico da memória de todas as funções de alocação.
  • +
  • Resumo do consumo de pico da memória de todas as funções de alocação.
  • +
  • Sammanfattning av största minnesanvändning för alla allokerande funktioner.
  • +
  • Резюме щодо пікового споживання пам’яті для всіх функцій отримання об’ємів пам’яті.
  • +
  • xxSummary of peak memory consumption of all allocating functions.xx
  • +
+
+ projects.kde.org/massif-visualizer + https://bugs.kde.org/enter_bug.cgi?format=guided&product=massif-visualizer + https://mail.kde.org/mailman/listinfo/massif-visualizer + + + http://milianw.de/files/massif-visualizer/memory-chart.png + Interactive chart of memory consumption over time. + Gràfic interactiu del consum de memòria al llarg del temps. + Interaktive Diagramme des Speicherverbrauch über Zeiträume. + Interactive chart of memory consumption over time. + Mapa interactivo del consumo de memoria a lo largo del tiempo. + Gráfica interactiva de consumo de memoria no tempo. + 시간별 메모리 사용량 차트 표시. + Interactieve grafiek van geheugengebruik in de tijd. + Interaktywny wykres wykorzystania pamięci w czasie. + Gráfico interactivo do consumo de memória ao longo do tempo. + Gráfico interativo do consumo de memória usada pelo aplicativo. + Interaktivt diagram av minnesanvändning över tid. + Інтерактивна діаграма споживання пам’яті. + xxInteractive chart of memory consumption over time.xx + + + http://milianw.de/files/massif-visualizer/callgraph.png + Detailed snapshot analysis with callgraph visualization (requires KGraphViewer). + Anàlisi detallat de les captures amb visualització de «callgraph» (requereix el KGraphViewer). + Detailed snapshot analysis with callgraph visualisation (requires KGraphViewer). + Análisis detallado de instantáneas con visualización de «callgraph» (necesita KGraphViewer). + Análise detallada de capturas con visualización da gráfica de chamadas (require KGraphViewer). + 호출 그래프 시각화 및 자세한 스냅샷 분석(KGraphViewer 필요). + Gedetailleerde analyses van momentopnamen met callgraph-visualisatie (vereist KGraphViewer). + Szczegółowe analizy zrzutów z wizualizacją wykresu wywołań (wymaga KGraphViewer). + Análise detalhada das capturas com a visualização do grafo de chamadas (precisa do KGraphViewer). + Análise detalhada das capturas com a visualização do grafo de chamadas (é necessário o KGraphViewer). + Detaljerad ögonblicksanalys med visualisering av anropsgraf (kräver Kgraphviewer). + Докладний аналіз знімків із візуалізацією графу викликів (потребує KGraphViewer). + xxDetailed snapshot analysis with callgraph visualization (requires KGraphViewer).xx + + + http://milianw.de/files/massif-visualizer/allocators.png + Summary of peak memory consumption of all allocating functions. + Resum dels pics de consum de memòria de totes les funcions d'assignació. + Summary of peak memory consumption of all allocating functions. + Sumario de picos de consumo de memoria de todas las funciones de asignación. + Resumo dos picos de consumo de memoria de todas as funcións de reserva de memoria. + 모든 할당된 함수의 메모리 소모 요약. + Overzicht van pieken in geheugengebruik van alle functies voor toekennen. + Podsumowanie szczytowego wykorzystania pamięci wszystkich przydzielonych funkcji. + Resumo do consumo de pico da memória de todas as funções de alocação. + Resumo do consumo de pico da memória de todas as funções de alocação. + Sammanfattning av största minnesanvändning för alla allokerande funktioner. + Резюме щодо пікового споживання пам’яті для всіх функцій отримання об’ємів пам’яті. + xxSummary of peak memory consumption of all allocating functions.xx + + + KDE + + massif-visualizer + +
diff --git a/massif-visualizer/app/massif-visualizer.desktop b/massif-visualizer/app/massif-visualizer.desktop new file mode 100644 index 00000000..5795dc39 --- /dev/null +++ b/massif-visualizer/app/massif-visualizer.desktop @@ -0,0 +1,112 @@ +# KDE Config File +[Desktop Entry] +Type=Application +Exec=massif-visualizer %u +MimeType=application/x-valgrind-massif; +# FIXME: get an icon! +Icon=office-chart-area +# FIXME: write docs! +# X-DocPath=kcachegrind/index.html +Terminal=false +Name=Massif-Visualizer +Name[ast]=Massif-Visualizer +Name[bs]=Massif-Visualizer +Name[ca]=Massif-Visualizer +Name[ca@valencia]=Massif-Visualizer +Name[da]=Massif-Visualizer +Name[de]=Massif-Visualizer +Name[el]=Massif-Visualizer +Name[en_GB]=Massif-Visualizer +Name[es]=Visualizador Massif +Name[et]=Massif-Visualizer +Name[fi]=Massif-visualisointi +Name[fr]=Massif-Visualizer +Name[ga]=Amharcléiritheoir Massif +Name[gl]=Visualizador Massif +Name[hu]=Massif-megjelenítő +Name[it]=Visualizzatore Massif +Name[kk]=Massif визуализаторы +Name[ko]=Massif 시각화 도구 +Name[mr]=मास्सीफ-व्हिज्युअलायझर +Name[nb]=Massif visualisering +Name[nds]=Massif-Visualiserer +Name[nl]=Massif - programma voor visualiseren +Name[pl]=Wizualizacja-Massif +Name[pt]=Visualizador Massif +Name[pt_BR]=Massif-Visualizer +Name[ru]=Визуализатор Massif +Name[sk]=Massif-Visualizer +Name[sv]=Massif visualisering +Name[tr]=Massif-Görselleyici +Name[ug]=Massif-Visualizer +Name[uk]=Візуалізатор Massif +Name[x-test]=xxMassif-Visualizerxx +Name[zh_TW]=Massif-Visualizer +GenericName=Profiler Frontend +GenericName[bs]=Profajlerski program +GenericName[ca]=Frontal de l'analitzador del rendiment +GenericName[ca@valencia]=Frontal del Profiler +GenericName[cs]=Rozhraní pro profilaci +GenericName[da]=Grænseflade til profilering +GenericName[de]=Profiler-Oberfläche +GenericName[el]=Σύστημα περιβάλλοντος προφίλ +GenericName[en_GB]=Profiler Frontend +GenericName[es]=Interfaz del analizador +GenericName[et]=Profileerimisrakendus +GenericName[fi]=Profiloijan käyttöliittymä +GenericName[fr]=Interface de profilage +GenericName[ga]=Comhéadan ar Phróifíleoir +GenericName[gl]=Interface do analizador +GenericName[hu]=Ábrázoló előtétprogram +GenericName[it]=Frontend dell'analizzatore di prestazioni +GenericName[kk]=Profiler-дың интерфейсі +GenericName[ko]=프로파일러 프론트엔드 +GenericName[mr]=प्रोफाइलर फ्रंटएण्ड +GenericName[nb]=Grensesnitt for profilvisning +GenericName[nds]=Profiler-Böversiet +GenericName[nl]=Profiler-hulpprogramma +GenericName[pl]=Nakładka programu profilującego +GenericName[pt]=Interface de Análise de Performance +GenericName[pt_BR]=Frontend do Profiler (Analisador) +GenericName[ru]=Представитель данных профилировщика +GenericName[sk]=Rozhranie pre profiláciu +GenericName[sv]=Profileringsgränssnitt +GenericName[tr]=Profil Önyüzü +GenericName[uk]=Інтерфейс до Profiler +GenericName[x-test]=xxProfiler Frontendxx +GenericName[zh_TW]=分析器前端 +Comment=Visualization of Memory Profiling Data +Comment[bs]=Vizualizacija memorijsko profilizirajućih podatka +Comment[ca]=Visualització de les dades de l'anàlisi del rendiment de la memòria +Comment[ca@valencia]=Visualització de dades de perfilat de la memòria +Comment[cs]=Vizualizace dat profilování paměti +Comment[da]=Visualisering af data for hukommelsesprofilering +Comment[de]=Visualisierung von Daten des Speicherverhaltens eines Programms +Comment[el]=Οπτικοποίηση δεδομένων προφίλ μνήμης +Comment[en_GB]=Visualization of Memory Profiling Data +Comment[es]=Visualización de datos de análisis de memoria +Comment[et]=Mälu profileerimise andmete visualiseerimise vahend +Comment[fi]=Visualisointi muistiprofiloinnin tiedoista +Comment[fr]=Visualisation des données de profilage de la mémoire +Comment[ga]=Amharcléiriú ar Shonraí Próifílithe Chuimhne +Comment[gl]=Visualización dos datos da análise de rendemento +Comment[hu]=Memória adatábrázolás megjelenítése +Comment[it]=Visualizzazione dei dati di profiling della memoria +Comment[kk]=Жадын профильдеу деректерінің визуализаторы +Comment[ko]=메모리 프로파일링 데이터 시각화 +Comment[mr]=स्मृती प्रोफाइलिंग डेटाचे व्हिज्युअलायझेशन +Comment[nb]=Visualisering av minneprofileringsdata +Comment[nds]=Spiekerleisten-Looptietdaten sichtbor maken +Comment[nl]=Visualisatie van geheugenprofileringsgegevens +Comment[pl]=Wizualizacja danych profilowania pamięci +Comment[pt]=Visualização dos Dados de Performance da Memória +Comment[pt_BR]=Visualização de Dados de Análise da Memória +Comment[ru]=Визуализация данных потребления памяти +Comment[sk]=Vizualizácia dát profilovania pamäte +Comment[sv]=Visualisering av profileringsdata för minne +Comment[tr]=Bellek Profilleme Verisinin Görselleştirilmesi +Comment[ug]=ئىچكى ساقلغۇچتىكى سانلىق-مەلۇماتلارنىڭ سەپلىنىشىنى سۈرۈتلەشتۈرۈش +Comment[uk]=Візуалізація даних профілювання пам’яті +Comment[x-test]=xxVisualization of Memory Profiling Dataxx +Comment[zh_TW]=記憶體效能分析資料視覺化 +Categories=Qt;KDE;Development; diff --git a/massif-visualizer/app/massif-visualizerui.rc b/massif-visualizer/app/massif-visualizerui.rc new file mode 100644 index 00000000..4fbcbf3e --- /dev/null +++ b/massif-visualizer/app/massif-visualizerui.rc @@ -0,0 +1,55 @@ + + + + + &File + + + + + + + + + + + + + + &View + + + + &Settings + + &Dock Widgets + + + + + + + + + &Help + + + + + + + + + + +Main Toolbar + + + + + + + + + + diff --git a/massif-visualizer/app/massif.xml b/massif-visualizer/app/massif.xml new file mode 100644 index 00000000..040eea7f --- /dev/null +++ b/massif-visualizer/app/massif.xml @@ -0,0 +1,11 @@ + + + + + Valgrind Massif data file + + + + + + diff --git a/massif-visualizer/cmake/FindKGraphViewer.cmake b/massif-visualizer/cmake/FindKGraphViewer.cmake new file mode 100644 index 00000000..a14ff8c2 --- /dev/null +++ b/massif-visualizer/cmake/FindKGraphViewer.cmake @@ -0,0 +1,41 @@ +# +# Find the KGraphViewer library and sets various variables accordingly +# +# Example usage of this module: +# find_package(KGraphViewer 2.1 REQUIRED) +# +# The version number and REQUIRED flag are optional. You can set CMAKE_PREFIX_PATH +# variable to help it find the required files and directories +# +# this will set the following variables: +# KGRAPHVIEWER_LIBRARIES - KGraphViewer library +# KGRAPHVIEWER_FOUND - Whether KGraphViewer was found +# KGRAPHVIEWER_INCLUDE_DIRECTORIES - Include directories for the KGraphViewer library +# +# Copyright 2010 Milian Wolff +# Redistribution and use is allowed according to the terms of the BSD license. + +find_path( KGRAPHVIEWER_INCLUDE_DIRECTORIES + NAMES kgraphviewer_interface.h + HINTS + ${KGRAPHVIEWER_INCLUDE_DIRS} + /usr/local/include + /usr/include + PATH_SUFFIXES kgraphviewer + ) + +find_library( KGRAPHVIEWER_LIBRARIES + NAMES kgraphviewer + HINTS + ${KGRAPHVIEWER_LIBRARY_DIRS} + /usr/local/lib64 + /usr/lib64 + /usr/local/lib + /usr/lib + ) + +include(FindPackageHandleStandardArgs) + +# handle the QUIETLY and REQUIRED arguments and set KGRAPHVIEWER_FOUND to TRUE if +# all listed variables are TRUE +find_package_handle_standard_args(KGRAPHVIEWER DEFAULT_MSG KGRAPHVIEWER_LIBRARIES KGRAPHVIEWER_INCLUDE_DIRECTORIES) \ No newline at end of file diff --git a/massif-visualizer/kdchart/CMakeLists.txt b/massif-visualizer/kdchart/CMakeLists.txt new file mode 100644 index 00000000..b7178e66 --- /dev/null +++ b/massif-visualizer/kdchart/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(src) + + diff --git a/massif-visualizer/kdchart/LICENSE.GPL.txt b/massif-visualizer/kdchart/LICENSE.GPL.txt new file mode 100644 index 00000000..ac8910a2 --- /dev/null +++ b/massif-visualizer/kdchart/LICENSE.GPL.txt @@ -0,0 +1,1027 @@ + + The KD Chart Library is Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. + + You may use, distribute and copy the KD Chart Library under the terms of + the GNU General Public License version 2 or under the terms of GNU General + Public License version 3 both of which are displayed below. + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for + software and other kinds of works. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + the GNU General Public License is intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. We, the Free Software Foundation, use the + GNU General Public License for most of our software; it applies also to + any other work released this way by its authors. You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you + these rights or asking you to surrender the rights. Therefore, you have + certain responsibilities if you distribute copies of the software, or if + you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must pass on to the recipients the same + freedoms that you received. You must make sure that they, too, receive + or can get the source code. And you must show them these terms so they + know their rights. + + Developers that use the GNU GPL protect your rights with two steps: + (1) assert copyright on the software, and (2) offer you this License + giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains + that there is no warranty for this free software. For both users' and + authors' sake, the GPL requires that modified versions be marked as + changed, so that their problems will not be attributed erroneously to + authors of previous versions. + + Some devices are designed to deny users access to install or run + modified versions of the software inside them, although the manufacturer + can do so. This is fundamentally incompatible with the aim of + protecting users' freedom to change the software. The systematic + pattern of such abuse occurs in the area of products for individuals to + use, which is precisely where it is most unacceptable. Therefore, we + have designed this version of the GPL to prohibit the practice for those + products. If such problems arise substantially in other domains, we + stand ready to extend this provision to those domains in future versions + of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. + States should not allow patents to restrict development and use of + software on general-purpose computers, but in those that do, we wish to + avoid the special danger that patents applied to a free program could + make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU Affero General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the special requirements of the GNU Affero General Public License, + section 13, concerning interaction through a network will apply to the + combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short + notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, your program's commands + might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU GPL, see + . + + The GNU General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications with + the library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. But first, please read + . + +------------------------------------------------------------------------- diff --git a/massif-visualizer/kdchart/LICENSE.US.txt b/massif-visualizer/kdchart/LICENSE.US.txt new file mode 100644 index 00000000..ead2de8b --- /dev/null +++ b/massif-visualizer/kdchart/LICENSE.US.txt @@ -0,0 +1,148 @@ +KD Chart COMMERCIAL LICENSE AGREEMENT +FOR COMMERCIAL VERSIONS +March 27, 2002 + + +IMPORTANT-READ CAREFULLY: This Klaralvdalens Datakonsult AB End-User +License Agreement ("EULA") is a legal agreement between you (either an +individual or a legal entity) and Klaralvdalens Datakonsult AB +("KDAB") for the Klaralvdalens Datakonsult AB software product(s) +accompanying this EULA, which include(s) computer software and may +include "online" or electronic documentation, associated media, and +printed materials ("Licensed Product"). + +The Licensed Product is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and +treaties. The Licensed Product is licensed, not sold. + +By installing, copying, or otherwise using the Licensed Product, you +agree to be bound by the terms of this EULA. If you do not agree to +the terms of this EULA, do not install, copy, or otherwise use the +Licensed Product; you may, however, return it to your place of +purchase for a full refund. In addition, by installing, copying, or +otherwise using any updates or other components of the Licensed +Product that you receive separately as part of the Licensed Product +("Updates"), you agree to be bound by any additional license terms +that accompany such Updates. If you do not agree to the additional +license terms that accompany such Updates, you may not install, copy, +or otherwise use such Updates. + +Upon your acceptance of the terms and conditions of this EULA, KDAB +grants you the right to use the Licensed Product in the manner +provided below. + +KDAB grants to you as an individual a personal, nonexclusive, +nontransferable license to make and use copies of the Licensed Product +for the sole purposes of designing, developing, and testing your +software product(s) ("Applications"). You may install copies of the +Licensed Product on an unlimited number of computers provided that you +are the only individual using the Licensed Product. If you are an +entity, KDAB grants you the right to designate one, and only one, +individual within your organization who shall have the sole right to +use the Licensed Product in the manner provided above. You may at any +time, but not more frequently that once every six (6) months, +designate another individual to replace the current designated user by +notifying KDAB, so long as there is no more than one designated user +at any given time. + + +GENERAL TERMS THAT APPLY TO APPLICATIONS AND REDISTRIBUTABLES +KDAB grants you a nonexclusive, royalty-free right to reproduce and +distribute the object code form of any portion of the Licensed Product +("Redistributables") for execution on any operating system of a type +listed in the License Certificate ("Platforms"). Copies of +Redistributables may only be distributed with and for the sole purpose +of executing Applications permitted under this License Agreement that +you have created using the Licensed Product. Under no circumstances +may any copies of Redistributables be distributed separately. + +The license granted in this EULA for you to create your own +Applications and distribute them and the Redistributables (if any) to +your customers is subject to all of the following conditions: (i) all +copies of the Applications you create must bear a valid copyright +notice, either your own or the copyright notice that appears on the +Licensed Product; (ii) you may not remove or alter any copyright, +trademark or other proprietary rights notice contained in any portion +of the Licensed Product; (iii) Redistributables, if any, shall be +licensed to your customer "as is" (KDAB MAKES NO WARRANTIES OR +REPRESENTATIONS VIS-A-VIS YOUR CUSTOMER WITH RESPECT TO +REDISTRIBUTABLES, AND KDAB EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES +VIS-A-VIS YOUR CUSTOMER, WHETHER EXPRESS OR IMPLIED, ORAL OR WRITTEN, +INCLUDING, BUT NOT LIMITED TO ANY IMPLIED WARRANTY OF MERCHANTABILITY +OR FITNESS FOR ANY PARTICULAR PURPOSE, WHETHER OR NOT KDAB KNOWS, HAS +REASON TO KNOW, HAS BEEN ADVISED OR IS OTHERWISE AWARE OF SUCH +PURPOSE); (iv) you will indemnify and hold KDAB, its related companies +and its suppliers, harmless from and against any claims or liabilities +arising out of the use, reproduction or distribution of your +Applications; (v) your Applications must be written using a licensed, +registered copy of the Licensed Product; (vi) your Applications must +add primary and substantial functionality to the Licensed Product; +(vii) your Applications may not pass on functionality which in any way +makes it possible for others to create Applications with the Software; +(viii) your Applications may not compete with the Licensed Product; +(ix)) you may not use KDAB's or any of its suppliers' names, logos, or +trademarks to market your programs, except to state that your program +was written using the Licensed Product. + +LICENSEE'S BREACH OF CONTRACT +In addition to penalties, other sanctions and the like as stated in +the Swedish Copyright Act (1960:729), or successive legislation as it +may appear, the Licensee agrees to pay a Contractual Fine in case of +his/her/their breach of any of the above mentioned obligations, +including but not limited to, the Licensee's obligation to let only +one person per license use the Software as stated under above. The +Contractual Fine is EUR 5000 and is payable by the Licensee to the +Licenser immediately upon the Licenser having reasonably demonstrated +that the Licensee is in breach of his obligations in this Agreement. + +WARRANTY DISCLAIMER +THE LICENSED PRODUCT IS LICENSED TO YOU "AS IS". TO THE MAXIMUM +EXTENT PERMITTED BY APPLICABLE LAW, KDAB ON BEHALF OF ITSELF AND ITS +SUPPLIERS, DISCLAIMS ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND +NON-INFRINGEMENT WITH REGARD TO THE LICENSED PRODUCT. THIS WARRANTY +DISCLAIMER NOTWITHSTANDING, YOU MAY HAVE SPECIFIC LEGAL RIGHTS WHICH +MAY VARY FROM STATE/JURISDICTION TO STATE/JURISDICTION. + + +LIMITATION OF LIABILITY +IF, KDAB'S WARRANTY DISCLAIMER NOTWITHSTANDING, KDAB IS HELD LIABLE TO +YOU, WHETHER IN CONTRACT, TORT OR ANY OTHER LEGAL THEORY, BASED ON THE +LICENSED PRODUCT, KDAB'S ENTIRE LIABILITY TO YOU AND YOUR EXCLUSIVE +REMEDY SHALL BE, AT KDAB'S OPTION, EITHER (A) RETURN OF THE PRICE YOU +PAID FOR THE LICENSED PRODUCT, OR (B) REPAIR OR REPLACEMENT OF THE +LICENSED PRODUCT, PROVIDED YOU RETURN TO KDAB ALL COPIES OF THE +LICENSED PRODUCT AS ORIGINALLY DELIVERED TO YOU. KDAB SHALL NOT UNDER +ANY CIRCUMSTANCES BE LIABLE TO YOU BASED ON FAILURE OF THE LICENSED +PRODUCT IF THE FAILURE RESULTED FROM ACCIDENT, ABUSE OR +MISAPPLICATION, NOR SHALL KDAB UNDER ANY CIRCUMSTANCES BE LIABLE FOR +SPECIAL DAMAGES, PUNITIVE OR EXEMPLARY DAMAGES, DAMAGES FOR LOSS OF +PROFITS OR INTERRUPTION OF BUSINESS OR FOR LOSS OR CORRUPTION OF DATA. +ANY AWARD OF DAMAGES FROM KDAB TO YOU SHALL NOT EXCEED THE TOTAL AMOUNT +YOU HAVE PAID TO KDAB IN CONNECTION WITH THIS EULA. + + +SUPPORT AND UPDATES +You will receive email based, software developer support and access to +Updates to the Licensed Product for one year from the date of initial +delivery, in accordance with KDAB support policies and procedures. +Such policies and procedures may be changed from time to time. + + +GENERAL PROVISIONS +This EULA may only be modified in writing signed by you and an +authorized officer of KDAB. All terms of any purchase order or other +ordering document shall be superseded by this EULA. If any provision +of the EULA is found void or unenforceable, the remainder will remain +valid and enforceable according to its terms. If any remedy provided +is determined to have failed for its essential purpose, all +limitations of liability and exclusions of damages set forth in this +EULA shall remain in effect. + +This EULA shall be construed, interpreted and governed by the laws of +Sweden, the venue to be Sunne Tingsratt. The EULA gives you specific +legal rights; you may have others, which vary from state to state and +from country to country. KDAB reserves all rights not specifically +granted in this EULA. + diff --git a/massif-visualizer/kdchart/LICENSE.txt b/massif-visualizer/kdchart/LICENSE.txt new file mode 100644 index 00000000..706ecace --- /dev/null +++ b/massif-visualizer/kdchart/LICENSE.txt @@ -0,0 +1,104 @@ +KD Chart COMMERCIAL LICENSE AGREEMENT +FOR COMMERCIAL VERSIONS +Version 1.0 + +Copyright of this license text (C) 2001 Trolltech AS and (C) 2002-2011 +Klaralvdalens Datakonsult AB. All rights reserved. License text used +with kind permission of Trolltech AS. The software and accompanying +material is Copyright (C) 2002-2011 Klaralvdalens Datakonsult AB. + +This non-exclusive non-transferable License Agreement ("Agreement") is +between you ("Licensee") and Klaralvdalens Datakonsult AB (KDAB), and +pertains to the Klaralvdalens Datakonsult AB software product(s) +accompanying this Agreement, which include(s) computer software and +may include "online" or electronic documentation, associated media, +and printed materials, including the source code, example programs and +the documentation ("Software"). + + + COPYRIGHT AND RESTRICTIONS + +1. All intellectual property rights in the Software are owned by KDAB +and are protected by Swedish copyright laws, other applicable +copyright laws, and international treaty provisions. KDAB retains all +rights not expressly granted. No title, property rights or copyright +in the Software or in any modifications to the Software shall pass to +the Licensee under any circumstances. The Software is licensed, not +sold. + +2. By installing, copying, or otherwise using the Software, you agree +to be bound by the terms of this agreement. If you do not agree to the +terms of this Agreement, do not install, copy, or otherwise use the +Software. + +3. Upon your acceptance of the terms and conditions of this Agreement, +KDAB grants you the right to use the Software in the manner provided +below. + +4. KDAB grants to you as an individual a personal, nonexclusive, +non-transferable license to make and use copies of the Software for +the sole purposes of designing, developing, testing and distributing +your software product(s) ("Applications"). You may install copies of +the Software on an unlimited number of computers provided that you are +the only individual using the Software. If you are an entity, KDAB +grants you the right to designate one, and only one, individual within +your organization who shall have the sole right to use the Software in +the manner provided above. + +5. The license granted in this Agreement for you to create and +distribute your own Applications is subject to all of the following +conditions: (i) all copies of the Applications you create must bear a +valid copyright notice, either your own or the copyright notice that +appears on the Software; (ii) you may not remove or alter any +copyright, trademark or other proprietary rights notice contained in +any portion of the Software; (iii) you will indemnify and hold KDAB, its +related companies and its suppliers, harmless from and against any +claims or liabilities arising out of the use and/or reproduction of +your Applications; (iv) your Applications must be written using a +licensed, registered copy of the Software; (v) your Applications must +add primary and substantial functionality to the Software; (vi) your +Applications may not pass on functionality which in any way makes it +possible for others to create Applications with the Software; (vii) +your Applications may not compete with the Software; (viii) you may +not use KDAB's or any of its suppliers' names, logos, or trademarks to +market your programs, except to state that your program was written +using the Software. + +6. LICENSEE'S BREACH OF CONTRACT +In addition to penalties, other sanctions and the like as stated in +the Swedish Copyright Act (1960:729), or successive legislation as it +may appear, the Licensee agrees to pay a Contractual Fine in case of +his/her/their breach of any of the above mentioned obligations, +including but not limited to, the Licensee's obligation to let only +one person per license use the Software as stated under above. The +Contractual Fine is EUR 5000 and is payable by the Licensee to the +Licenser immediately upon the Licenser having reasonably demonstrated +that the Licensee is in breach of his obligations in this Agreement. + +7. WARRANTY DISCLAIMER +THE SOFTWARE IS LICENSED TO YOU "AS IS". TO THE MAXIMUM EXTENT +PERMITTED BY APPLICABLE LAW, KDAB ON BEHALF OF ITSELF AND ITS SUPPLIERS, +DISCLAIMS ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT WITH +REGARD TO THE SOFTWARE. + +8. LIMITATION OF LIABILITY +IF, KDAB'S WARRANTY DISCLAIMER NOTWITHSTANDING, KDAB IS HELD LIABLE TO +YOU BASED ON THE SOFTWARE, KDAB'S ENTIRE LIABILITY TO YOU AND YOUR +EXCLUSIVE REMEDY SHALL BE, AT REPAIR OR REPLACEMENT OF THE SOFTWARE, +PROVIDED YOU RETURN TO KDAB ALL COPIES OF THE SOFTWARE AS ORIGINALLY +DELIVERED TO YOU. KDAB SHALL NOT UNDER ANY CIRCUMSTANCES BE LIABLE TO +YOU BASED ON FAILURE OF THE SOFTWARE IF THE FAILURE RESULTED FROM +ACCIDENT, ABUSE OR MISAPPLICATION, NOR SHALL KDAB UNDER ANY +CIRCUMSTANCES BE LIABLE FOR SPECIAL DAMAGES, PUNITIVE OR EXEMPLARY +DAMAGES, DAMAGES FOR LOSS OF PROFITS OR INTERRUPTION OF BUSINESS OR +FOR LOSS OR CORRUPTION OF DATA. + +9. This Agreement may only be modified in writing signed by you and an +authorized officer of KDAB. All terms of any purchase order or other +ordering document shall be superseded by this Agreement. + +10. This Agreement shall be construed, interpreted and governed by the +laws of Sweden, the venue to be Sunne Tingsratt. + diff --git a/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation b/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation new file mode 100644 index 00000000..643a074f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation @@ -0,0 +1 @@ +#include "CartesianCoordinateTransformation.h" diff --git a/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation.h b/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation.h new file mode 100644 index 00000000..08925ac2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/CartesianCoordinateTransformation.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef CARTESIANCOORDINATETRANSFORMATION_H +#define CARTESIANCOORDINATETRANSFORMATION_H + +#include +#include +#include + +#include "KDChartZoomParameters.h" + +#include +#include + +namespace KDChart { + + // FIXME: if this struct is used more often, we need to make it a class + // with proper accessor methods: + + /** + * \internal + */ + struct CoordinateTransformation { + + CoordinateTransformation() + : axesCalcModeY( CartesianCoordinatePlane::Linear ), + axesCalcModeX( CartesianCoordinatePlane::Linear ), + isPositiveX( true ), + isPositiveY( true ) + {} + + CartesianCoordinatePlane::AxesCalcMode axesCalcModeY; + CartesianCoordinatePlane::AxesCalcMode axesCalcModeX; + + ZoomParameters zoom; + + QTransform transform; + QTransform backTransform; + // a logarithmic scale cannot cross zero, so we have to know which side we are on. + bool isPositiveX; + bool isPositiveY; + + qreal logTransform( qreal value, bool isPositiveRange ) const + { + if ( isPositiveRange ) { + return log10( value ); + } else { + return -log10( -value ); + } + } + + qreal logTransformBack( qreal value, bool wasPositive ) const + { + if ( wasPositive ) { + return pow( 10.0, value ); + } else { + return -pow( 10.0, -value ); + } + } + + void updateTransform( const QRectF& constDataRect, const QRectF& screenRect ) + { + QRectF dataRect = constDataRect; + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + // the data will be scaled by logTransform() later, so scale its bounds as well + isPositiveX = dataRect.left() >= 0.0; + dataRect.setLeft( logTransform( dataRect.left(), isPositiveX ) ); + dataRect.setRight( logTransform( dataRect.right(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + isPositiveY = dataRect.top() >= 0.0; + dataRect.setTop( logTransform( dataRect.top(), isPositiveY ) ); + dataRect.setBottom( logTransform( dataRect.bottom(), isPositiveY ) ); + } + + transform.reset(); + // read the following transformation sequence from bottom to top(!) + transform.translate( screenRect.left(), screenRect.bottom() ); + transform.scale( screenRect.width(), screenRect.height() ); + + // TODO: mirror in case of "reverse" axes? + + // transform into screen space + transform.translate( 0.5, -0.5 ); + transform.scale( zoom.xFactor, zoom.yFactor ); + transform.translate( -zoom.xCenter, 1.0 - zoom.yCenter ); + // zoom + transform.scale( 1.0 / dataRect.width(), 1.0 / dataRect.height() ); + transform.translate( -dataRect.left(), -dataRect.bottom() ); + // transform into the unit square + + backTransform = transform.inverted(); + } + + // convert data space point to screen point + inline QPointF translate( const QPointF& dataPoint ) const + { + QPointF data = dataPoint; + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + data.setX( logTransform( data.x(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + data.setY( logTransform( data.y(), isPositiveY ) ); + } + + return transform.map( data ); + } + + // convert screen point to data space point + inline const QPointF translateBack( const QPointF& screenPoint ) const + { + QPointF ret = backTransform.map( screenPoint ); + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + ret.setX( logTransformBack( ret.x(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + ret.setY( logTransformBack( ret.y(), isPositiveY ) ); + } + return ret; + } + }; + + typedef QList CoordinateTransformationList; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem b/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem new file mode 100644 index 00000000..1ea6fc95 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem @@ -0,0 +1 @@ +#include "ChartGraphicsItem.h" diff --git a/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem.h b/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem.h new file mode 100644 index 00000000..b94f83b5 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/ChartGraphicsItem.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef CHARTGRAPHICSITEM_H +#define CHARTGRAPHICSITEM_H + +#include + +namespace KDChart { + + /** + * @brief Graphics item used inside of the ReverseMapper + * \internal + */ + class ChartGraphicsItem : public QGraphicsPolygonItem + { + public: + enum { Type = UserType + 1 }; + + ChartGraphicsItem(); + + ChartGraphicsItem( int row, int column ); + + int row() const { return m_row; } + int column() const { return m_column; } + int type() const { return Type; } + + private: + int m_row; + int m_column; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChart b/massif-visualizer/kdchart/include/KDChart/KDChart new file mode 100644 index 00000000..1a5488be --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChart @@ -0,0 +1,45 @@ +#include "KDChartDatasetProxyModel.h" +#include "KDChartNullPaintDevice.h" +#include "KDChartChart.h" +#include "KDChartHeaderFooter.h" +#include "KDChartGlobal.h" +#include "KDChartDataValueAttributes.h" +#include "KDChartPalette.h" +#include "KDChartSignalCompressor.h" +#include "KDChartDiagramObserver.h" +#include "KDTextDocument.h" +#include "KDChartMeasure.h" +#include "KDChartGridAttributes.h" +#include "KDChartPrintingParameters.h" +#include "KDChartLineAttributes.h" +#include "KDChartValueTrackerAttributes.h" +#include "ReverseMapper.h" +#include "KDChartAbstractGrid.h" +#include "KDChartRulerAttributes.h" +#include "KDChartTextArea.h" +#include "KDChartAttributesModel.h" +#include "KDChartEnums.h" +#include "kdchart_export.h" +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartLegend.h" +#include "KDChartRelativePosition.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartMarkerAttributes.h" +#include "KDChartAbstractAxis.h" +#include "KDChartTextAttributes.h" +#include "KDChartFrameAttributes.h" +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartTextLabelCache.h" +#include "KDChartBackgroundAttributes.h" +#include "KDChartAbstractAreaWidget.h" +#include "KDChartThreeDLineAttributes.h" +#include "KDChartPosition.h" +#include "KDChartZoomParameters.h" +#include "ChartGraphicsItem.h" +#include "KDChartAbstractAreaBase.h" +#include "KDChartPaintContext.h" +#include "KDChartAbstractProxyModel.h" +#include "KDChartDatasetSelector.h" +#include "KDChartLayoutItems.h" +#include "KDChartAbstractArea.h" +#include "KDChartWidget.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea new file mode 100644 index 00000000..9c1c9b9f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea @@ -0,0 +1 @@ +#include "KDChartAbstractArea.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea.h new file mode 100644 index 00000000..1ede0cc7 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractArea.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREA_H +#define KDCHARTABSTRACTAREA_H + +#include + +#include "KDChartGlobal.h" +#include "KDChartAbstractAreaBase.h" +#include "KDChartLayoutItems.h" + +namespace KDChart { + + +/** + * @class AbstractArea KDChartAbstractArea.h + * @brief An area in the chart with a background, a frame, etc. + * + * AbstractArea is the base class for all non-widget chart elements that have + * a set of background attributes and frame attributes, such as + * coordinate planes or axes. + * + * @note This class inherits from AbstractAreaBase, AbstractLayoutItem, QObject. + * The reason for this triple inheritance is that neither AbstractAreaBase nor + * AbstractLayoutItem are QObject. + */ +class KDCHART_EXPORT AbstractArea : public QObject, + public AbstractAreaBase, + public AbstractLayoutItem +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractArea ) + KDCHART_DECLARE_PRIVATE_DERIVED( AbstractArea ) + +public: + virtual ~AbstractArea() ; + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite AbstractLayoutItem::paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + virtual void paintAll( QPainter& painter ); + + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the left edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int leftOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the right edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int rightOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the top edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int topOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart:AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the bottom edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int bottomOverlap( bool doNotRecalculate=false ) const; + +protected: + AbstractArea(); + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); + +Q_SIGNALS: + void positionChanged( AbstractArea * ); +}; // End of class AbstractArea + +} +#endif // KDCHARTABSTRACTAREA_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase new file mode 100644 index 00000000..2fa83f9c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase @@ -0,0 +1 @@ +#include "KDChartAbstractAreaBase.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase.h new file mode 100644 index 00000000..758cd22a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaBase.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREABASE_H +#define KDCHARTABSTRACTAREABASE_H + +#include +#include +#include + +#include "KDChartGlobal.h" +#include "KDChartLayoutItems.h" +#include "KDChartRelativePosition.h" +#include "KDChartAbstractAreaBase.h" + + +QT_BEGIN_NAMESPACE +class QPainter; +class QString; +QT_END_NAMESPACE + +namespace KDChart { + class TextAttributes; + class BackgroundAttributes; + class FrameAttributes; + class PaintContext; + + +/** + * @class AbstractAreaBase KDChartAbstractAreaBase.h + * @brief Base class for AbstractArea and AbstractAreaWidget: An area + * in the chart with a background, a frame, etc. + * + * AbstractAreaBase is the base class for all chart elements that have + * a set of background attributes and frame attributes, such as + * legends or axes. + * + * @note Normally you should not use AbstractAreaBase directly, but + * derive your classes from AbstractArea or AbstractAreaWidget. + * + * @note This classis not a QObject, so it is easier to inherit from + * it, if your are inheriting from a QObject too like AbstractAreaWidget does it. + * + * @sa AbstractArea, AbstractAreaWidget + */ +class KDCHART_EXPORT AbstractAreaBase +{ + Q_DISABLE_COPY( AbstractAreaBase ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AbstractAreaBase ) + +protected: + AbstractAreaBase(); + virtual ~AbstractAreaBase() ; + +public: +// virtual AbstractAreaBase * clone() const = 0; + + /** + * Returns true if both areas have the same settings. + */ + bool compare( const AbstractAreaBase* other ) const; + + void alignToReferencePoint( const RelativePosition& position ); + + void setFrameAttributes( const FrameAttributes &a ); + FrameAttributes frameAttributes() const; + + void setBackgroundAttributes( const BackgroundAttributes &a ); + BackgroundAttributes backgroundAttributes() const; + + virtual void paintBackground( QPainter& painter, const QRect& rectangle ); + virtual void paintFrame( QPainter& painter, const QRect& rectangle ); + + static void paintBackgroundAttributes( QPainter& painter, const QRect& rectangle, + const KDChart::BackgroundAttributes& attributes ); + static void paintFrameAttributes( QPainter& painter, const QRect& rectangle, + const KDChart::FrameAttributes& attributes ); + + /** \internal + * \note Normally you should not call this method, but derive your classes + * from AbstractArea or AbstractAreaWidget. + * \sa AbstractArea, AbstractAreaWidget + */ + void getFrameLeadings(int& left, int& top, int& right, int& bottom ) const; + + +protected: + /** \internal + * \note Normally you should not call this method, but derive your classes + * from AbstractArea or AbstractAreaWidget. + * \sa AbstractArea, AbstractAreaWidget + */ + QRect innerRect() const; + + /** \internal + * This internal method is used by AbstractArea and AbstractAreaWidget + * to find out the real widget size. + * \sa AbstractArea, AbstractAreaWidget + */ + virtual QRect areaGeometry() const = 0; + + /** \internal + * This internal method can be overwritten by derived classes, + * if they want to emit a signal (or perform other actions, resp.) + * when the Position of the area has been changed. + * The default implementation does nothing. + */ + virtual void positionHasChanged(); + +}; // End of class AbstractAreaBase + +} +#endif // KDCHARTABSTRACTAREABASE_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget new file mode 100644 index 00000000..2d842a1f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget @@ -0,0 +1 @@ +#include "KDChartAbstractAreaWidget.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget.h new file mode 100644 index 00000000..80bb41e8 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAreaWidget.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREAWIDGET_H +#define KDCHARTABSTRACTAREAWIDGET_H + +#include +#include +#include +#include + +#include "KDChartAbstractAreaBase.h" + +namespace KDChart { + + +/** + * @class AbstractAreaWidget KDChartAbstractArea.h + * @brief An area in the chart with a background, a frame, etc. + * + * AbstractAreaWidget is the base for all widget classes that have + * a set of background attributes and frame attributes, such as + * KDChart::Chart and KDChart::Legend. + */ +class KDCHART_EXPORT AbstractAreaWidget : public QWidget, public AbstractAreaBase +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractAreaWidget ) + KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( AbstractAreaWidget ) + +public: + explicit AbstractAreaWidget( QWidget* parent = 0 ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite paint() instead. + * @sa paint + */ + virtual void paintEvent( QPaintEvent* event ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Overwrite this to paint the inner contents of your widget. + * + * @note When overriding this method, please let your widget draw + * itself at the top/left corner of the painter. You should call rect() + * (or width(), height(), resp.) to find the drawable area's size: + * While the paint() method is being executed the frame of the widget + * is outside of its rect(), so you can use all of rect() for + * your custom drawing! + * @sa paint, paintIntoRect + */ + virtual void paint( QPainter* painter ) = 0; + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + void paintAll( QPainter& painter ); + + /** + * Call this to trigger an unconditional re-building of the widget's internals. + */ + virtual void forceRebuild(); + + /** + * Call this to trigger an conditional re-building of the widget's internals. + * + * e.g. AbstractAreaWidget call this, before calling layout()->setGeometry() + */ + virtual void needSizeHint(); + //virtual void setGeometry( const QRect & rect ); + virtual void resizeLayout( const QSize& ); + +protected: + virtual ~AbstractAreaWidget() ; + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); + + +public: +// virtual AbstractAreaWidget * clone() const = 0; + +Q_SIGNALS: + void positionChanged( AbstractAreaWidget * ); + +}; // End of class AbstractAreaWidget + +} +#endif // KDCHARTABSTRACTAREAWIDGET_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis new file mode 100644 index 00000000..d10947cb --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis @@ -0,0 +1 @@ +#include "KDChartAbstractAxis.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis.h new file mode 100644 index 00000000..f8d418b2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractAxis.h @@ -0,0 +1,247 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAXIS_H +#define KDCHARTABSTRACTAXIS_H + +// #include +// #include +// #include + +#include "kdchart_export.h" +#include "KDChartGlobal.h" +#include "KDChartAbstractArea.h" +#include "KDChartTextAttributes.h" +#include "KDChartRulerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QSizeF; +QT_END_NAMESPACE + + +namespace KDChart { + + class Area; + class AbstractCoordinatePlane; + class PaintContext; + class AbstractDiagram; + + /** + * The base class for axes. + * + * For being useful, axes need to be assigned to a diagram, see + * AbstractCartesianDiagram::addAxis and AbstractCartesianDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT AbstractAxis : public AbstractArea + { + Q_OBJECT + + Q_DISABLE_COPY( AbstractAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( AbstractAxis, AbstractDiagram* ) + + public: + explicit AbstractAxis( AbstractDiagram* diagram = 0 ); + virtual ~AbstractAxis(); + + // FIXME implement when code os ready for it: + // virtual Area* clone() const = 0; + + // FIXME (Mirko) readd when needed + // void copyRelevantDetailsFrom( const KDChartAxis* axis ); + + /* virtual void paint( PaintContext* ) const = 0; + virtual QSize sizeHint() const = 0;*/ + //virtual void paintEvent( QPaintEvent* event) = 0; + + /** + * \brief Implement this method if you want to adjust axis labels + * before they are printed. + * + * KD Chart is calling this method immediately before drawing the + * text, this means: What you return here will be drawn without + * further modifications. + * + * \param label The text of the label as KD Chart has calculated it + * automatically (or as it was taken from a QStringList provided + * by you, resp.) + * + * \return The text to be drawn. By default this is the same as \c label. + */ + virtual const QString customizedLabel( const QString& label ) const; + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const AbstractAxis* other ) const; + + /** + * \internal + * + * Method invoked by AbstractCartesianDiagram::addAxis(). + * + * You should not call this function, unless you know exactly, + * what you are doing. + * + * \sa connectSignals(), AbstractCartesianDiagram::addAxis() + */ + void createObserver( AbstractDiagram* diagram ); + + /** + * \internal + * + * Method invoked by AbstractCartesianDiagram::takeAxis(). + * + * You should not call this function, unless you know exactly, + * what you are doing. + * + * \sa AbstractCartesianDiagram::takeAxis() + */ + void deleteObserver( AbstractDiagram* diagram ); + const AbstractDiagram* diagram() const; + bool observedBy( AbstractDiagram* diagram ) const; + + /** + * Wireing the signal/slot connections. + * + * This method gets called automatically, each time, when you assign + * the axis to a diagram, either by passing a diagram* to the c'tor, + * or by calling the diagram's setAxis method, resp. + * + * If overwriting this method in derived classes, make sure to call + * this base method AbstractAxis::connectSignals(), so your axis + * gets connected to the diagram's built-in signals. + * + * \sa AbstractCartesianDiagram::addAxis() + */ + virtual void connectSignals(); + + /** + \brief Use this to specify the text attributes to be used for axis labels. + + By default, the reference area will be set at painting time. + It will be the then-valid coordinate plane's parent widget, + so normally, it will be the KDChart::Chart. + Thus the labels of all of your axes in all of your diagrams + within that Chart will be drawn in same font size, by default. + + \sa textAttributes, setLabels + */ + void setTextAttributes( const TextAttributes &a ); + + /** + \brief Returns the text attributes to be used for axis labels. + + \sa setTextAttributes + */ + TextAttributes textAttributes() const; + + /** + \brief Use this to specify the attributes used to paint the axis ruler + + Every axis has a default set of ruler attributes that is exactly the + same among them. Use this method to specify your own attributes. + + \sa rulerAttributes + */ + void setRulerAttributes( const RulerAttributes &a ); + + /** + \brief Returns the attributes to be used for painting the rulers + + \sa setRulerAttributes + */ + RulerAttributes rulerAttributes() const; + + /** + \brief Use this to specify your own set of strings, to be used as axis labels. + + Labels specified via setLabels take precedence: + If a non-empty list is passed, KD Chart will use these strings as axis labels, + instead of calculating them. + + If you pass a smaller number of strings than the number of labels drawn at this + axis, KD Chart will repeat the strings until all labels are drawn. + As an example you could specify the seven days of the week as abscissa labels, + which would be repeatedly used then. + + By passing an empty QStringList you can reset the default behaviour. + + \sa labels, setShortLabels + */ + void setLabels( const QStringList& list ); + + /** + Returns a list of strings, that are used as axis labels, as set via setLabels. + + \sa setLabels + */ + QStringList labels() const; + + /** + \brief Use this to specify your own set of strings, to be used as axis labels, + in case the normal labels are too long. + + \note Setting done via setShortLabels will be ignored, if you did not pass + a non-empty string list via setLabels too! + + By passing an empty QStringList you can reset the default behaviour. + + \sa shortLabels, setLabels + */ + void setShortLabels( const QStringList& list ); + + /** + Returns a list of strings, that are used as axis labels, as set via setShortLabels. + + \note Setting done via setShortLabels will be ignored, if you did not pass + a non-empty string list via setLabels too! + + \sa setShortLabels + */ + QStringList shortLabels() const; + + virtual void setGeometry( const QRect& rect ) = 0; + virtual QRect geometry() const = 0; + + /** + \brief Convenience function, returns the coordinate plane, in which this axis is used. + + If the axis is not used in a coordinate plane, the return value is Zero. + */ + const AbstractCoordinatePlane* coordinatePlane() const; + + protected Q_SLOTS: + /** called for initializing after the c'tor has completed */ + virtual void delayedInit(); + + public Q_SLOTS: + void update(); + + Q_SIGNALS: + void coordinateSystemChanged(); + }; +} + +#endif // KDCHARTABSTRACTAXIS_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram new file mode 100644 index 00000000..fe791e08 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram @@ -0,0 +1 @@ +#include "KDChartAbstractCartesianDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram.h new file mode 100644 index 00000000..acce0469 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCartesianDiagram.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTCARTESIANDIAGRAM_H +#define KDCHARTABSTRACTCARTESIANDIAGRAM_H + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartCartesianAxis.h" + +namespace KDChart { + + class GridAttributes; + + /** + * @brief Base class for diagrams based on a cartesian coordianate system. + * + * The AbstractCartesianDiagram interface adds those elements that are + * specific to diagrams based on a cartesian coordinate system to the + * basic AbstractDiagram interface. + */ + class KDCHART_EXPORT AbstractCartesianDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractCartesianDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractCartesianDiagram, CartesianCoordinatePlane ) + + public: + explicit AbstractCartesianDiagram( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~AbstractCartesianDiagram(); + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractCartesianDiagram* other ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const int numberOfAbscissaSegments() const = 0; + virtual const int numberOfOrdinateSegments() const = 0; +#else + virtual int numberOfAbscissaSegments() const = 0; + virtual int numberOfOrdinateSegments() const = 0; +#endif + /** + * Add the axis to the diagram. The diagram takes ownership of the axis + * and will delete it. + * + * To gain back ownership (e.g. for assigning the axis to another diagram) + * use the takeAxis method, before calling addAxis on the other diagram. + * + * \sa takeAxis + */ + virtual void addAxis( CartesianAxis * axis ); + /** + * Removes the axis from the diagram, without deleting it. + * + * The diagram no longer owns the axis, so it is + * the caller's responsibility to delete the axis. + * + * \sa addAxis + */ + virtual void takeAxis( CartesianAxis * axis ); + /** + * @return a list of all axes added to the diagram + */ + virtual KDChart::CartesianAxisList axes() const; + + /** + * Triggers layouting of all coordinate planes on the current chart. + * Normally you don't need to call this method. It's handled automatically for you. + */ + virtual void layoutPlanes(); + /** \reimpl */ + virtual void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Makes this diagram use another diagram \a diagram as reference diagram with relative offset + * \a offset. + * To share cartesian axes between different diagrams there might be cases when you need that. + * Normally you don't. + * \sa examples/SharedAbscissa + */ + virtual void setReferenceDiagram( AbstractCartesianDiagram* diagram, const QPointF& offset = QPointF() ); + /** + * @return this diagram's reference diagram + * \sa setReferenceDiagram + */ + virtual AbstractCartesianDiagram* referenceDiagram() const; + /** + * @return the relative offset of this diagram's reference diagram + * \sa setReferenceDiagram + */ + virtual QPointF referenceDiagramOffset() const; + + /* reimpl */ + void setModel( QAbstractItemModel* model ); + /* reimpl */ + void setRootIndex( const QModelIndex& index ); + /* reimpl */ + void setAttributesModel( AttributesModel* model ); + + protected Q_SLOTS: + void connectAttributesModel( AttributesModel* ); + + protected: + /** @return the 3D item depth of the model index \a index */ + virtual qreal threeDItemDepth( const QModelIndex& index ) const = 0; + /** @return the 3D item depth of the data set \a column */ + virtual qreal threeDItemDepth( int column ) const = 0; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane new file mode 100644 index 00000000..2834bf61 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartAbstractCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane.h new file mode 100644 index 00000000..ece24b83 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractCoordinatePlane.h @@ -0,0 +1,446 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTCOORDINATEPLANE_H +#define KDCHARTABSTRACTCOORDINATEPLANE_H + +#include +#include + +#include "KDChartAbstractArea.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartEnums.h" + +namespace KDChart { + + class Chart; + class GridAttributes; + class DataDimension; + + typedef QList DataDimensionsList; + + /** + * @brief Base class common for all coordinate planes, CartesianCoordinatePlane, PolarCoordinatePlane, TernaryCoordinatePlane + */ + class KDCHART_EXPORT AbstractCoordinatePlane : public AbstractArea + { + Q_OBJECT + + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( AbstractCoordinatePlane, Chart* ) + + friend class AbstractGrid; + + public: + enum AxesCalcMode { Linear, Logarithmic }; + + protected: + explicit AbstractCoordinatePlane( Chart* parent = 0 ); + + public: + virtual ~AbstractCoordinatePlane(); + + /** + * Adds a diagram to this coordinate plane. + * @param diagram The diagram to add. + * + * \sa replaceDiagram, takeDiagram + */ + virtual void addDiagram( AbstractDiagram* diagram ); + + /** + * Replaces the old diagram, or appends the + * diagram, it there is none yet. + * + * @param diagram The diagram to be used instead of the old diagram. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldDiagram The diagram to be removed by the new diagram. This + * diagram will be deleted automatically. If the parameter is omitted, + * the very first diagram will be replaced. In case, there was no + * diagram yet, the new diagram will just be added. + * + * \note If you want to re-use the old diagram, call takeDiagram and + * addDiagram, instead of using replaceDiagram. + * + * \sa addDiagram, takeDiagram + */ + virtual void replaceDiagram( AbstractDiagram* diagram, AbstractDiagram* oldDiagram = 0 ); + + /** + * Removes the diagram from the plane, without deleting it. + * + * The plane no longer owns the diagram, so it is + * the caller's responsibility to delete the diagram. + * + * \sa addDiagram, replaceDiagram + */ + virtual void takeDiagram( AbstractDiagram* diagram ); + + /** + * @return The first diagram associated with this coordinate plane. + */ + AbstractDiagram* diagram(); + + /** + * @return The list of diagrams associated with this coordinate plane. + */ + AbstractDiagramList diagrams(); + + /** + * @return The list of diagrams associated with this coordinate plane. + */ + ConstAbstractDiagramList diagrams() const; + + /** + * Distribute the available space among the diagrams and axes. + */ + virtual void layoutDiagrams() = 0; + + /** + * Translate the given point in value space coordinates to a position + * in pixel space. + * @param diagramPoint The point in value coordinates. + * @returns The translated point. + */ + virtual const QPointF translate( const QPointF& diagramPoint ) const = 0; + + /** + * @return Whether zooming with a rubber band using the mouse is enabled. + */ + bool isRubberBandZoomingEnabled() const; + + /** + * Enables or disables zooming with a rubber band using the mouse. + */ + void setRubberBandZoomingEnabled( bool enable ); + + /** + * @return The zoom factor in horizontal direction, that is applied + * to all coordinate transformations. + */ + virtual qreal zoomFactorX() const { return 1.0; } + + /** + * @return The zoom factor in vertical direction, that is applied + * to all coordinate transformations. + */ + virtual qreal zoomFactorY() const { return 1.0; } + + /** + * Sets both zoom factors in one go. + * \sa setZoomFactorX,setZoomFactorY + */ + virtual void setZoomFactors( qreal factorX, qreal factorY ) { Q_UNUSED( factorX ); Q_UNUSED( factorY ); } + + /** + * Sets the zoom factor in horizontal direction, that is applied + * to all coordinate transformations. + * @param factor The new zoom factor + */ + virtual void setZoomFactorX( qreal factor ) { Q_UNUSED( factor ); } + + /** + * Sets the zoom factor in vertical direction, that is applied + * to all coordinate transformations. + * @param factor The new zoom factor + */ + virtual void setZoomFactorY( qreal factor ) { Q_UNUSED( factor ); } + + /** + * @return The center point (in value coordinates) of the + * coordinate plane, that is used for zoom operations. + */ + virtual QPointF zoomCenter() const { return QPointF(0.0, 0.0); } + + /** + * Set the point (in value coordinates) to be used as the + * center point in zoom operations. + * @param center The point to use. + */ + virtual void setZoomCenter( const QPointF& center ) { Q_UNUSED( center ); } + + /** + * Set the grid attributes to be used by this coordinate plane. + * To disable grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->globalGridAttributes(); + * ga.setGlobalGridVisible( false ); + * plane->setGlobalGridAttributes( ga ); + * \endcode + * \sa globalGridAttributes + * \sa CartesianCoordinatePlane::setGridAttributes + */ + void setGlobalGridAttributes( const GridAttributes & ); + + /** + * @return The grid attributes used by this coordinate plane. + * \sa setGlobalGridAttributes + * \sa CartesianCoordinatePlane::gridAttributes + */ + GridAttributes globalGridAttributes() const; + + /** + * Returns the dimensions used for drawing the grid lines. + * + * Returned data is the result of (cached) grid calculations, + * so - if you need that information for your own tasks - make sure to + * call again this function after every data modification that has changed + * the data range, since grid calculation is based upon the data range, + * thus the grid start/end might have changed if the data was changed. + * + * @note Returned list will contain different numbers of DataDimension, + * depending on the kind of coordinate plane used. + * For CartesianCoordinatePlane two DataDimension are returned: the first + * representing grid lines in X direction (matching the Abscissa axes) + * and the second indicating vertical grid lines (or Ordinate axes, resp.). + * + * @return The dimensions used for drawing the grid lines. + * @sa DataDimension + */ + DataDimensionsList gridDimensionsList(); + + /** + * Set another coordinate plane to be used as the reference plane + * for this one. + * @param plane The coordinate plane to be used the reference plane + * for this one. + * @see referenceCoordinatePlane + */ + void setReferenceCoordinatePlane( AbstractCoordinatePlane * plane ); + + /** + * There are two ways, in which planes can be caused to interact, in + * where they are put layouting wise: The first is the reference plane. If + * such a reference plane is set, on a plane, it will use the same cell in the + * layout as that one. In addition to this, planes can share an axis. In that case + * they will be laid out in relation to each other as suggested by the position + * of the axis. If, for example Plane1 and Plane2 share an axis at position Left, + * that will result in the layout: Axis Plane1 Plane 2, vertically. If Plane1 + * also happens to be Plane2's reference plane, both planes are drawn over each + * other. The reference plane concept allows two planes to share the same space + * even if neither has any axis, and in case there are shared axis, it is used + * to decided, whether the planes should be painted on top of each other or + * laid out vertically or horizontally next to each other. + * @return The reference coordinate plane associated with this one. + */ + AbstractCoordinatePlane * referenceCoordinatePlane() const; + + /** + * @return Whether this plane should have spacers in the corners + * formed by the presence of axes. + */ + bool isCornerSpacersEnabled() const; + + /** + * Enables or disables the use of spacers in the plane corners. + */ + void setCornerSpacersEnabled( bool enable ); + + virtual AbstractCoordinatePlane* sharedAxisMasterPlane( QPainter* p = 0 ); // KDChart 3: const method? + + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem + * + * \note Do not call this function directly, unless you know + * exactly what you are doing. Geometry management is done + * by KD Chart's internal layouting measures. + */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual void mousePressEvent( QMouseEvent* event ); + virtual void mouseDoubleClickEvent( QMouseEvent* event ); + virtual void mouseMoveEvent( QMouseEvent* event ); + virtual void mouseReleaseEvent( QMouseEvent* event ); + + /** + * Called internally by KDChart::Chart + */ + void setParent( Chart* parent ); + Chart* parent(); + const Chart* parent() const; + + /** + * Tests, if a point is visible on the coordinate plane. + * + * \note Before calling this function the point must have been translated into coordinate plane space. + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const bool isVisiblePoint( const QPointF& point ) const; +#else + bool isVisiblePoint( const QPointF& point ) const; +#endif + + public Q_SLOTS: + /** + * Calling update() on the plane triggers the global KDChart::Chart::update() + */ + void update(); + /** + * Calling relayout() on the plane triggers the global KDChart::Chart::slotRelayout() + */ + void relayout(); + /** + * Calling layoutPlanes() on the plane triggers the global KDChart::Chart::slotLayoutPlanes() + */ + void layoutPlanes(); + /** + * Used by the chart to clear the cached grid data. + */ + void setGridNeedsRecalculate(); + + Q_SIGNALS: + /** Emitted when this coordinate plane is destroyed. */ + void destroyedCoordinatePlane( AbstractCoordinatePlane* ); + + /** Emitted when plane needs to update its drawings. */ + void needUpdate(); + + /** Emitted when plane needs to trigger the Chart's layouting. */ + void needRelayout(); + + /** Emitted when plane needs to trigger the Chart's layouting of the coord. planes. */ + void needLayoutPlanes(); + + /** Emitted upon change of a property of the Coordinate Plane or any of its components. */ + void propertiesChanged(); + + void boundariesChanged(); + + /** Emitted after the geometry of the Coordinate Plane has been changed. + * and control has returned to the event loop. + * + * Parameters are the the old geometry, the new geometry. + */ + void geometryChanged( QRect, QRect ); + + private: + Q_SIGNALS: + // Emitted from inside the setGeometry() + // This is connected via QueuedConnection to the geometryChanged() Signal + // that users can connect to safely then. + void internal_geometryChanged( QRect, QRect ); + /** Emitted upon change of the view coordinate system */ + void viewportCoordinateSystemChanged(); + + protected: + virtual DataDimensionsList getDataDimensionsList() const = 0; + + //KDCHART_DECLARE_PRIVATE_DERIVED( AbstractCoordinatePlane ) + }; + + /** + * \brief Helper class for one dimension of data, e.g. for the rows in a data model, + * or for the labels of an axis, or for the vertical lines in a grid. + * + * isCalculated specifies whether this dimension's values are calculated or counted. + * (counted == "Item 1", "Item 2", "Item 3" ...) + * + * sequence is the GranularitySequence, as specified at for the respective + * coordinate plane. + * + * Step width is an optional parameter, to be omitted (or set to Zero, resp.) + * if the step width is unknown. + * + * The default c'tor just gets you counted values from 1..10, using step width 1, + * used by the CartesianGrid, when showing an empty plane without any diagrams. + */ + class DataDimension{ + public: + DataDimension() + : start( 1.0 ) + , end( 10.0 ) + , isCalculated( false ) + , calcMode( AbstractCoordinatePlane::Linear ) + , sequence( KDChartEnums::GranularitySequence_10_20 ) + , stepWidth( 1.0 ) + , subStepWidth( 0.0 ) + {} + DataDimension( qreal start_, + qreal end_, + bool isCalculated_, + AbstractCoordinatePlane::AxesCalcMode calcMode_, + KDChartEnums::GranularitySequence sequence_, + qreal stepWidth_=0.0, + qreal subStepWidth_=0.0 ) + : start( start_ ) + , end( end_ ) + , isCalculated( isCalculated_ ) + , calcMode( calcMode_ ) + , sequence( sequence_ ) + , stepWidth( stepWidth_ ) + , subStepWidth( subStepWidth_ ) + {} + /** + * Returns the size of the distance, + * equivalent to the width() (or height(), resp.) of a QRectF. + * + * Note that this value can be negative, e.g. indicating axis labels + * going in reversed direction. + */ + qreal distance() const + { + return end-start; + } + + bool operator==( const DataDimension& r ) const + { + return + (start == r.start) && + (end == r.end) && + (sequence == r.sequence) && + (isCalculated == r.isCalculated) && + (calcMode == r.calcMode) && + (stepWidth == r.stepWidth) && + (subStepWidth == r.subStepWidth); + } + + bool operator!=( const DataDimension& other ) const + { return !operator==( other ); } + + + qreal start; + qreal end; + bool isCalculated; + AbstractCoordinatePlane::AxesCalcMode calcMode; + KDChartEnums::GranularitySequence sequence; + qreal stepWidth; + qreal subStepWidth; + }; + +#if !defined(QT_NO_DEBUG_STREAM) + QDebug operator<<( QDebug stream, const DataDimension& r ); +#endif + +} +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram new file mode 100644 index 00000000..5e3b3e98 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram @@ -0,0 +1 @@ +#include "KDChartAbstractDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram.h new file mode 100644 index 00000000..82c220cb --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractDiagram.h @@ -0,0 +1,742 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTDIAGRAM_H +#define KDCHARTABSTRACTDIAGRAM_H + +#include +#include +#include + +#include "KDChartGlobal.h" +#include "KDChartMarkerAttributes.h" +#include "KDChartAttributesModel.h" + +namespace KDChart { + + class AbstractCoordinatePlane; + class AttributesModel; + class DataValueAttributes; + class PaintContext; + + /** + * @brief AbstractDiagram defines the interface for diagram classes + * + * AbstractDiagram is the base class for diagram classes ("chart types"). + * + * It defines the interface, that needs to be implemented for the diagram, + * to function within the KDChart framework. It extends Interview's + * QAbstractItemView. + */ + class KDCHART_EXPORT AbstractDiagram : public QAbstractItemView + { + Q_OBJECT + Q_DISABLE_COPY( AbstractDiagram ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AbstractDiagram ) + + friend class AbstractCoordinatePlane; + friend class CartesianCoordinatePlane; + friend class PolarCoordinatePlane; + + protected: + explicit inline AbstractDiagram( + Private *p, QWidget* parent, AbstractCoordinatePlane* plane ); + explicit AbstractDiagram ( + QWidget* parent = 0, AbstractCoordinatePlane* plane = 0 ); + public: + virtual ~AbstractDiagram(); + + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractDiagram* other ) const; + + + /** + * @brief Return the bottom left and top right data point, that the + * diagram will display (unless the grid adjusts these values). + * + * This method returns a cached result of calculations done by + * calculateDataBoundaries. + * Classes derived from AbstractDiagram must implement the + * calculateDataBoundaries function, to specify their own + * way of calculating the data boundaries. + * If derived classes want to force recalculation of the + * data boundaries, they can call setDataBoundariesDirty() + * + * Returned value is in diagram coordinates. + */ + const QPair dataBoundaries() const; + + // protected: // FIXME: why should that be private? (Mirko) + /** + * Draw the diagram contents to the rectangle and painter, that are + * passed in as part of the paint context. + * + * @param paintContext All information needed for painting. + */ + virtual void paint ( PaintContext* paintContext ) = 0; + + /** + * Called by the widget's sizeEvent. Adjust all internal structures, + * that are calculated, dependending on the size of the widget. + * + * @param area + */ + virtual void resize ( const QSizeF& area ) = 0; + + /** Associate a model with the diagram. */ + virtual void setModel ( QAbstractItemModel * model ); + + /** Associate a seleection model with the diagrom. */ + virtual void setSelectionModel( QItemSelectionModel* selectionModel ); + + /** + * Associate an AttributesModel with this diagram. Note that + * the diagram does _not_ take ownership of the AttributesModel. + * This should thus only be used with AttributesModels that + * have been explicitly created by the user, and are owned + * by her. Setting an AttributesModel that is internal to + * another diagram is an error. + * + * Correct: + * + * \code + * AttributesModel *am = new AttributesModel( model, 0 ); + * diagram1->setAttributesModel( am ); + * diagram2->setAttributesModel( am ); + * + * \endcode + * + * Wrong: + * + * \code + * + * diagram1->setAttributesModel( diagram2->attributesModel() ); + * + * \endcode + * + * @param model The AttributesModel to use for this diagram. + * @see AttributesModel, usesExternalAttributesModel + */ + virtual void setAttributesModel( AttributesModel* model ); + + /** + * Returns whether the diagram is using its own built-in attributes model + * or an attributes model that was set via setAttributesModel. + * + * @see setAttributesModel + */ + virtual bool usesExternalAttributesModel() const; + + /** + * Returns the AttributesModel, that is used by this diagram. + * By default each diagram owns its own AttributesModel, which + * should never be deleted. Only if a user-supplied AttributesModel + * has been set does the pointer returned here not belong to the + * diagram. + * + * @return The AttributesModel associated with the diagram. + * @see setAttributesModel + */ + virtual AttributesModel* attributesModel() const; + + /** Set the root index in the model, where the diagram starts + * referencing data for display. */ + virtual void setRootIndex ( const QModelIndex& idx ); + + /** \reimpl */ + virtual QRect visualRect(const QModelIndex &index) const; + /** \reimpl */ + virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); + /** \reimpl */ + virtual QModelIndex indexAt(const QPoint &point) const; + /** \reimpl */ + virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); + /** \reimpl */ + virtual int horizontalOffset() const; + /** \reimpl */ + virtual int verticalOffset() const; + /** \reimpl */ + virtual bool isIndexHidden(const QModelIndex &index) const; + /** \reimpl */ + virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); + /** \reimpl */ + virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; + virtual QRegion visualRegion(const QModelIndex &index) const; + /** \reimpl */ +#if QT_VERSION < 0x050000 + virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); +#else + virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); +#endif + /** \reimpl */ + virtual void doItemsLayout(); + + /** + * The coordinate plane associated with the diagram. This determines + * how coordinates in value space are mapped into pixel space. By default + * this is a CartesianCoordinatePlane. + * @return The coordinate plane associated with the diagram. + */ + AbstractCoordinatePlane* coordinatePlane() const; + + /** + * Set the coordinate plane associated with the diagram. This determines + * how coordinates in value space are mapped into pixel space. The chart + * takes ownership. + * @return The coordinate plane associated with the diagram. + */ + virtual void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + + /** + * Hide (or unhide, resp.) a data cell. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param index The datapoint to set the hidden status for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param hidden The hidden status to set. + */ + void setHidden( const QModelIndex & index, bool hidden ); + + /** + * Hide (or unhide, resp.) a dataset. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param dataset The dataset to set the hidden status for. + * @param hidden The hidden status to set. + */ + void setHidden( int dataset, bool hidden ); + + /** + * Hide (or unhide, resp.) all datapoints in the model. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param hidden The hidden status to set. + */ + void setHidden( bool hidden ); + + /** + * Retrieve the hidden status specified globally. This will fall + * back automatically to the default settings ( = not hidden), if there + * are no specific settings. + * @return The global hidden status. + */ + bool isHidden() const; + + /** + * Retrieve the hidden status for the given dataset. This will fall + * back automatically to what was set at diagram level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the hidden status for. + * @return The hidden status for the given dataset. + */ + bool isHidden( int dataset ) const; + + /** + * Retrieve the hidden status for the given index. This will fall + * back automatically to what was set at dataset or diagram level, if there + * are no datapoint specific settings. + * @param index The datapoint to retrieve the hidden status for. + * @return The hidden status for the given index. + */ + bool isHidden( const QModelIndex & index ) const; + + + /** + * Set the DataValueAttributes for the given index. + * @param index The datapoint to set the attributes for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param a The attributes to set. + */ + void setDataValueAttributes( const QModelIndex & index, + const DataValueAttributes & a ); + + /** + * Set the DataValueAttributes for the given dataset. + * @param dataset The dataset to set the attributes for. + * @param a The attributes to set. + */ + void setDataValueAttributes( int dataset, const DataValueAttributes & a ); + + /** + * Set the DataValueAttributes for all datapoints in the model. + * @param a The attributes to set. + */ + void setDataValueAttributes( const DataValueAttributes & a ); + + /** + * Retrieve the DataValueAttributes specified globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The global DataValueAttributes. + */ + DataValueAttributes dataValueAttributes() const; + + /** + * Retrieve the DataValueAttributes for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the attributes for. + * @return The DataValueAttributes for the given dataset. + */ + DataValueAttributes dataValueAttributes( int dataset ) const; + + /** + * Retrieve the DataValueAttributes for the given index. This will fall + * back automatically to what was set at dataset or model level, if there + * are no datapoint specific settings. + * @param index The datapoint to retrieve the attributes for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The DataValueAttributes for the given index. + */ + DataValueAttributes dataValueAttributes( const QModelIndex & index ) const; + + /** + * Set the pen to be used, for painting the datapoint at the given index. + * @param index The datapoint's index in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param pen The pen to use. + */ + void setPen( const QModelIndex& index, const QPen& pen ); + + /** + * Set the pen to be used, for painting the given dataset. + * @param dataset The dataset to set the pen for. + * @param pen The pen to use. + */ + void setPen( int dataset, const QPen& pen ); + + /** + * Set the pen to be used, for painting all datasets in the model. + * @param pen The pen to use. + */ + void setPen( const QPen& pen ); + + /** + * Retrieve the pen to be used for painting datapoints globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The pen to use for painting. + */ + QPen pen() const; + /** + * Retrieve the pen to be used for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the pen for. + * @return The pen to use for painting. + */ + QPen pen( int dataset ) const; + /** + * Retrieve the pen to be used, for painting the datapoint at the given + * index in the model. + * @param index The index of the datapoint in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The pen to use for painting. + */ + QPen pen( const QModelIndex& index ) const; + + /** + * Set the brush to be used, for painting the datapoint at the given index. + * @param index The datapoint's index in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param brush The brush to use. + */ + void setBrush( const QModelIndex& index, const QBrush& brush); + + /** + * Set the brush to be used, for painting the given dataset. + * @param dataset The dataset to set the brush for. + * @param brush The brush to use. + */ + void setBrush( int dataset, const QBrush& brush ); + + /** + * Set the brush to be used, for painting all datasets in the model. + * @param brush The brush to use. + */ + void setBrush( const QBrush& brush); + + /** + * Retrieve the brush to be used for painting datapoints globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The brush to use for painting. + */ + QBrush brush() const; + /** + * Retrieve the brush to be used for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the brush for. + * @return The brush to use for painting. + */ + QBrush brush( int dataset ) const; + /** + * Retrieve the brush to be used, for painting the datapoint at the given + * index in the model. + * @param index The index of the datapoint in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The brush to use for painting. + */ + QBrush brush( const QModelIndex& index ) const; + + /** + * Set the unit prefix to be used on axes for one specific column. + * @param prefix The prefix to be used. + * @param column The column which should be set. + * @param orientation The orientation of the axis to use. + */ + void setUnitPrefix( const QString& prefix, int column, Qt::Orientation orientation ); + /** + * Set the unit prefix to be used on axes for all columns. + * @param prefix The prefix to be used. + * @param orientation The orientation of the axis to use. + */ + void setUnitPrefix( const QString& prefix, Qt::Orientation orientation ); + + /** + * Set the unit prefix to be used on axes for one specific column. + * @param suffix The suffix to be used. + * @param column The column which should be set. + * @param orientation The orientation of the axis to use. + */ + void setUnitSuffix( const QString& suffix, int column, Qt::Orientation orientation ); + /** + * Set the unit prefix to be used on axes for all columns. + * @param suffix The suffix to be used. + * @param orientation The orientation of the axis to use. + */ + void setUnitSuffix( const QString& suffix, Qt::Orientation orientation ); + + /** + * Retrieves the axis unit prefix for a specific column. + * @param column The column whose prefix should be retrieved. + * @param orientation The orientation of the axis. + * @param fallback If true, the prefix for all columns is returned, when + * none is set for the selected column. + * @return The axis unit prefix. + */ + QString unitPrefix( int column, Qt::Orientation orientation, bool fallback = false ) const; + /** + * Retrieves the axis unit prefix. + * @param orientation The orientation of the axis. + * @return The axis unit prefix. + */ + QString unitPrefix( Qt::Orientation orientation ) const; + + /** + * Retrieves the axis unit suffix for a specific column. + * @param column The column whose prefix should be retrieved. + * @param orientation The orientation of the axis. + * @param fallback If true, the suffix for all columns is returned, when + * none is set for the selected column. + * @return The axis unit suffix. + */ + QString unitSuffix( int column, Qt::Orientation orientation, bool fallback = false ) const; + /** + * Retrieves the axis unit suffix. + * @param orientation The orientation of the axis. + * @return The axis unit suffix. + */ + QString unitSuffix( Qt::Orientation orientation ) const; + + /** + * Set whether data value labels are allowed to overlap. + * @param allow True means that overlapping labels are allowed. + */ + void setAllowOverlappingDataValueTexts( bool allow ); + + /** + * @return Whether data value labels are allowed to overlap. + */ + bool allowOverlappingDataValueTexts() const; + + /** + * Set whether anti-aliasing is to be used while rendering + * this diagram. + * @param enabled True means that AA is enabled. + */ + void setAntiAliasing( bool enabled ); + + /** + * @return Whether anti-aliasing is to be used for rendering + * this diagram. + */ + bool antiAliasing() const; + + /** + * Set the palette to be used, for painting datasets to the default + * palette. + * @see KDChart::Palette. + * FIXME: fold into one usePalette (KDChart::Palette&) method + */ + void useDefaultColors(); + + /** + * Set the palette to be used, for painting datasets to the rainbow + * palette. + * @see KDChart::Palette. + */ + void useRainbowColors(); + + /** + * Set the palette to be used, for painting datasets to the subdued + * palette. + * @see KDChart::Palette. + */ + void useSubduedColors(); + + /** + * The set of item row labels currently displayed, for use in Abscissa axes, etc. + * @return The set of item row labels currently displayed. + */ + QStringList itemRowLabels() const; + + /** + * The set of dataset labels currently displayed, for use in legends, etc. + * @return The set of dataset labels currently displayed. + */ + QStringList datasetLabels() const; + + /** + * The set of dataset brushes currently used, for use in legends, etc. + * + * @note Cell-level override brushes, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the brush, that is used for a single cell. + * + * @return The current set of dataset brushes. + */ + QList datasetBrushes() const; + + /** + * The set of dataset pens currently used, for use in legends, etc. + * + * @note Cell-level override pens, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the pens, that is used for a single cell. + * + * @return The current set of dataset pens. + */ + QList datasetPens() const; + + /** + * The set of dataset markers currently used, for use in legends, etc. + * + * @note Cell-level override markers, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the marker, that is shown for a single cell. + * + * @return The current set of dataset brushes. + */ + QList datasetMarkers() const; + + + /** + * \deprecated + * + * \brief Deprecated method that turns the percent mode of this diagram on or off. + * + * This method is deprecated. Use the setType() method of a supporting diagram implementation + * instead, e.g. BarDiagram::setType(). + * + * \see percentMode + */ + void setPercentMode( bool percent ); + + + /** + * \brief Returns whether this diagram is drawn in percent mode. + * + * If true, all data points in the same column of a diagram will + * be be drawn at the same X coordinate and stacked up so that the distance from the + * last data point (or the zero line) to a data point P is always the ratio of (Y-Value of P)/ + * (sum of all Y-Values in same column as P) relative to the diagrams height + * (or width, if abscissa and ordinate are swapped). + * + * Note that this property is not applicable to all diagram types. + */ + bool percentMode() const; + + virtual void paintMarker( QPainter* painter, + const MarkerAttributes& markerAttributes, + const QBrush& brush, const QPen&, + const QPointF& point, const QSizeF& size ); + + /** + * The dataset dimension of a diagram determines how many value dimensions + * it expects each datapoint to have. + * For each dimension and data series it will expect one column of values in the model. + * If the dimension is 1, automatic values will be used for X. + * + * For example, a diagram with the default dimension of 1 will have one column + * per data series (the Y values) and will use automatic values for X + * (1, 2, 3, ... n). + * If the dimension is 2, the diagram will use the first, (and the third, + * fifth, etc) columns as X values, and the second, (and the fourth, sixth, + * etc) column as Y values. + * @return The dataset dimension of the diagram. + */ + int datasetDimension() const; + + /** + * \deprecated + * + * Sets the dataset dimension of the diagram. Using this method + * is deprecated. Use the specific diagram types instead. + */ + void setDatasetDimension( int dimension ); + + protected: + void setDatasetDimensionInternal( int dimension ); + + public: + void update() const; + + void paintMarker( QPainter* painter, const DataValueAttributes& a, + const QModelIndex& index, + const QPointF& pos ); + void paintMarker( QPainter* painter, + const QModelIndex& index, + const QPointF& pos ); + void paintDataValueText( QPainter* painter, const QModelIndex& index, + const QPointF& pos, qreal value ); + + // reverse mapping: + /** This method is added alongside with indexAt from QAIM, + since in kdchart multiple indexes can be displayed at the same + spot. */ + QModelIndexList indexesAt( const QPoint& point ) const; + QModelIndexList indexesIn( const QRect& rect ) const; + + protected: + virtual bool checkInvariants( bool justReturnTheStatus=false ) const; + virtual const QPair calculateDataBoundaries() const = 0; + + protected Q_SLOTS: + void setDataBoundariesDirty() const; + + protected: + /** + * \deprecated + * This method is deprecated and provided for backward-compatibility only. + * Your own diagram classes should call + * d->paintDataValueTextsAndMarkers() instead + * which also is taking care for showing your cell-specific comments, if any, + */ + virtual void paintDataValueTexts( QPainter* painter ); + /** + * \deprecated + * This method is deprecated and provided for backward-compatibility only. + * Your own diagram classes should call + * d->paintDataValueTextsAndMarkers() instead + * which also is taking care for showing your cell-specific comments, if any, + */ + virtual void paintMarkers( QPainter* painter ); + void setAttributesModelRootIndex( const QModelIndex& ); + QModelIndex attributesModelRootIndex() const; + + /** + * Helper method, retrieving the data value (DisplayRole) for a given row and column + * @param row The row to query. + * @param column The column to query. + * @return The value of the display role at the given row and column as a qreal. + * @deprecated + */ + qreal valueForCell( int row, int column ) const; + + Q_SIGNALS: + /** Diagrams are supposed to emit this signal, when the layout of one + of their element changes. Layouts can change, for example, when + axes are added or removed, or when the configuration was changed + in a way that the axes or the diagram itself are displayed in a + different geometry. + Changes in the diagrams coordinate system also result + in the layoutChanged() signal being emitted. + */ + void layoutChanged( AbstractDiagram* ); + + /** + * This signal is emitted when this diagram is being destroyed, but before all the + * data, i.e. the attributes model, is invalidated. + */ + void aboutToBeDestroyed(); + + /** This signal is emitted when either the model or the AttributesModel is replaced. */ + void modelsChanged(); + + /** This signal is emitted just before the new attributes model is connected internally. + It gives you a chance to connect to its signals first or perform other setup work. */ + void attributesModelAboutToChange( AttributesModel* newModel, AttributesModel* oldModel ); + + /** This signal is emitted, when the model data is changed. */ + void modelDataChanged(); + + /** This signal is emitted, when the hidden status of at least one data cell was (un)set. */ + void dataHidden(); + + /** Emitted upon change of a property of the Diagram. */ + void propertiesChanged(); + + /** Emitted upon change of a data boundary */ + void boundariesChanged(); + /** Emitted upon change of the view coordinate system */ + void viewportCoordinateSystemChanged(); + + private: + QModelIndex conditionallyMapFromSource( const QModelIndex & sourceIndex ) const; + }; + + typedef QList AbstractDiagramList; + typedef QList ConstAbstractDiagramList; + + /** + * @brief Internally used class just adding a special constructor used by AbstractDiagram + */ + class PrivateAttributesModel : public AttributesModel { + Q_OBJECT + public: + explicit PrivateAttributesModel( QAbstractItemModel* model, QObject * parent = 0 ) + : AttributesModel(model,parent) {} + }; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid new file mode 100644 index 00000000..75613743 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid @@ -0,0 +1 @@ +#include "KDChartAbstractGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid.h new file mode 100644 index 00000000..6bf6577e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractGrid.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTGRID_H +#define KDCHARTABSTRACTGRID_H + +#include + +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartGridAttributes.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartCartesianAxis.h" + +namespace KDChart { + + class PaintContext; + + + /** + * \internal + * + * \brief Abstract base class for grid classes: cartesian, polar, ... + * + * The AbstractGrid interface is the base class used by + * AbstractCoordinatePlane, for calculating and for drawing + * the grid lines of the plane. + */ + class AbstractGrid + { + public: + virtual ~AbstractGrid(); + protected: + AbstractGrid (); + + + public: + /** \brief Returns the cached result of data calculation. + * + * For this, all derived classes need to implement the + * pure-virtual calculateGrid() method. + */ + DataDimensionsList updateData( AbstractCoordinatePlane* plane ); + + /** + * Doing the actual drawing. + * + * Every derived class must implement this. + * + * \note When implementing drawGrid(): Before you start drawing, + * make sure to call updateData(), to get the data boundaries + * recalculated. + * For an example, see the implementation of CartesianGrid:drawGrid(). + */ + virtual void drawGrid( PaintContext* context ) = 0; + + /** + * Causes grid to be recalculated upon the next call + * of updateData(). + * + * \see calculateGrid + */ + void setNeedRecalculate(); + + /** + * Checks whether both coordinates of r are valid according + * to isValueValid + * + * \see isValueValid + */ + static bool isBoundariesValid(const QRectF& r ); + + /** + * Checks whether both coordinates of both points are valid + * according to isValueValid + * + * \see isValueValid + */ + static bool isBoundariesValid(const QPair& b ); + + /** + * Checks whether all start and end properties of every + * DataDimension in the list l are valid according to + * isValueValid(). + * + * \see isValueValid + */ + static bool isBoundariesValid(const DataDimensionsList& l ); + + /** + * Checks if r is neither NaN nor infinity. + */ + static bool isValueValid(const qreal& r ); + + /** + * Adjusts \a start and/or \a end so that they are a multiple of + * \a stepWidth + */ + static void adjustLowerUpperRange( + qreal& start, qreal& end, + qreal stepWidth, + bool adjustLower, bool adjustUpper ); + + /** + * Adjusts \a dim so that \c dim.start and/or \c dim.end are a multiple + * of \c dim.stepWidth. + * + * \see adjustLowerUpperRange + */ + static const DataDimension adjustedLowerUpperRange( + const DataDimension& dim, + bool adjustLower, bool adjustUpper ); + + GridAttributes gridAttributes; + + protected: + DataDimensionsList mDataDimensions; + AbstractCoordinatePlane* mPlane; + + private: + /** + * \brief Calculates the grid start/end/step width values. + * + * Gets the raw data dimensions - e.g. the data model's boundaries, + * together with their isCalculated flags. + * + * Returns the calculated start/end values for the grid, and their + * respective step widths. + * If at least one of the step widths is Zero, all dimensions of + * the returned list are considered invalid! + * + * \note This function needs to be implemented by all derived classes, + * like CartesianGrid, PolarGrid, ... + */ + virtual DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const = 0; + DataDimensionsList mCachedRawDataDimensions; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram new file mode 100644 index 00000000..257b9b4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram @@ -0,0 +1 @@ +#include "KDChartAbstractPieDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram.h new file mode 100644 index 00000000..75737845 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPieDiagram.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPIEDIAGRAM_H +#define KDCHARTABSTRACTPIEDIAGRAM_H + +#include "KDChartAbstractPolarDiagram.h" + +namespace KDChart { + class PieAttributes; + class ThreeDPieAttributes; + +/** + * @brief Base class for any diagram type + */ +class KDCHART_EXPORT AbstractPieDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractPieDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractPieDiagram, PolarCoordinatePlane ) + +public: + explicit AbstractPieDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~AbstractPieDiagram(); + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractPieDiagram* other ) const; + + /** Set the granularity: the smaller the granularity the more your diagram + * segments will show facettes instead of rounded segments. + * \param value the granularity value between 0.05 (one twentieth of a degree) + * and 36.0 (one tenth of a full circle), other values will be interpreted as 1.0. + */ + void setGranularity( qreal value ); + + /** @return the granularity. */ + qreal granularity() const; + + /** \deprecated Use PolarCoordinatePlane::setStartPosition( qreal degrees ) instead. */ + void setStartPosition( int degrees ); + /** \deprecated Use qreal PolarCoordinatePlane::startPosition instead. */ + int startPosition() const; + + /** If this property is set, and if a pie's TextAttributes have no rotation set, its labels will + * automatically be rotated according to the pie's angle. + */ + void setAutoRotateLabels( bool autoRotate ); + /** \see setAutoRotateLabels( bool autoRotate ) + */ + bool autoRotateLabels() const; + + void setPieAttributes( const PieAttributes & a ); + void setPieAttributes( int column, + const PieAttributes & a ); + void setPieAttributes( const QModelIndex & index, + const PieAttributes & a ); + PieAttributes pieAttributes() const; + PieAttributes pieAttributes( int column ) const; + PieAttributes pieAttributes( const QModelIndex & index ) const; + + void setThreeDPieAttributes( const ThreeDPieAttributes & a ); + void setThreeDPieAttributes( int column, + const ThreeDPieAttributes & a ); + void setThreeDPieAttributes( const QModelIndex & index, + const ThreeDPieAttributes & a ); + ThreeDPieAttributes threeDPieAttributes() const; + ThreeDPieAttributes threeDPieAttributes( int column ) const; + ThreeDPieAttributes threeDPieAttributes( const QModelIndex & index ) const; +}; // End of class KDChartAbstractPieDiagram + +} + +#endif // KDCHARTABSTACTPIEDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram new file mode 100644 index 00000000..502fd30a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram @@ -0,0 +1 @@ +#include "KDChartAbstractPolarDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram.h new file mode 100644 index 00000000..25ee8392 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractPolarDiagram.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPOLARDIAGRAM_H +#define KDCHARTABSTRACTPOLARDIAGRAM_H + +#include "KDChartPolarCoordinatePlane.h" +#include "KDChartAbstractDiagram.h" + +namespace KDChart { + + class GridAttributes; + + /** + * @brief Base class for diagrams based on a polar coordinate system. + */ + class KDCHART_EXPORT AbstractPolarDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractPolarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractPolarDiagram, PolarCoordinatePlane ) + + public: + explicit AbstractPolarDiagram ( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~AbstractPolarDiagram() {} + + virtual qreal valueTotals () const = 0; + virtual qreal numberOfValuesPerDataset() const = 0; + virtual qreal numberOfDatasets() const { return 1; }; + virtual qreal numberOfGridRings() const = 0; + + const PolarCoordinatePlane * polarCoordinatePlane() const; + + int columnCount() const; + int rowCount() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel new file mode 100644 index 00000000..a19cadf2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel @@ -0,0 +1 @@ +#include "KDChartAbstractProxyModel.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel.h new file mode 100644 index 00000000..442fa1d9 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractProxyModel.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPROXYMODEL_H +#define KDCHARTABSTRACTPROXYMODEL_H + +#include + +#include "KDChartGlobal.h" + +namespace KDChart +{ + /** + * @brief Base class for all proxy models used inside KD Chart + * \internal + */ + class KDCHART_EXPORT AbstractProxyModel : public QAbstractProxyModel + { + Q_OBJECT + public: + explicit AbstractProxyModel( QObject* parent = 0 ); + + /*! \reimpl */ + QModelIndex mapFromSource( const QModelIndex & sourceIndex ) const; + /*! \reimpl */ + QModelIndex mapToSource( const QModelIndex &proxyIndex ) const; + + /*! \reimpl */ + QModelIndex index( int row, int col, const QModelIndex& index ) const; + /*! \reimpl */ + QModelIndex parent( const QModelIndex& index ) const; + }; +} + +#endif /* KDCHARTABSTRACTPROXYMODEL_H */ diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram new file mode 100644 index 00000000..62d5d2cd --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram @@ -0,0 +1 @@ +#include "KDChartAbstractTernaryDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram.h new file mode 100644 index 00000000..335641f7 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractTernaryDiagram.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTTERNARYDIAGRAM_H +#define KDCHARTABSTRACTTERNARYDIAGRAM_H + +#include "KDChartAbstractDiagram.h" +#include "KDChartTernaryAxis.h" + +namespace KDChart { + + class TernaryCoordinatePlane; + class TernaryAxis; + + /** + * @brief Base class for diagrams based on a ternary coordinate plane. + */ + class KDCHART_EXPORT AbstractTernaryDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractTernaryDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractTernaryDiagram, + TernaryCoordinatePlane ) + + public: + explicit AbstractTernaryDiagram ( QWidget* parent = 0, + TernaryCoordinatePlane* plane = 0 ); + virtual ~AbstractTernaryDiagram(); + + virtual void resize (const QSizeF &area) = 0; + virtual void paint (PaintContext *paintContext); + + virtual void addAxis( TernaryAxis* axis ); + virtual void takeAxis( TernaryAxis* axis ); + virtual TernaryAxisList axes () const; + + protected: + virtual const QPair< QPointF, QPointF > calculateDataBoundaries () const = 0; + + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes new file mode 100644 index 00000000..5c2a56d3 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes @@ -0,0 +1 @@ +#include "KDChartAbstractThreeDAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes.h new file mode 100644 index 00000000..f818d0d6 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAbstractThreeDAttributes.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTTHREEDATTRIBUTES_H +#define KDCHARTABSTRACTTHREEDATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Base class for 3D attributes + */ +class KDCHART_EXPORT AbstractThreeDAttributes +{ +public: + AbstractThreeDAttributes(); + AbstractThreeDAttributes( const AbstractThreeDAttributes& ); + AbstractThreeDAttributes &operator= ( const AbstractThreeDAttributes& ); + + virtual ~AbstractThreeDAttributes() = 0; + + void setEnabled( bool enabled ); + bool isEnabled() const; + + void setDepth( qreal depth ); + qreal depth() const; + + // returns the depth(), if is isEnabled() is true, otherwise returns 0.0 + qreal validDepth() const; + + bool isThreeDBrushEnabled() const; + void setThreeDBrushEnabled( bool enabled ); + virtual QBrush threeDBrush( const QBrush& brush, const QRectF& rect ) const; + + bool operator==( const AbstractThreeDAttributes& ) const; + inline bool operator!=( const AbstractThreeDAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC(AbstractThreeDAttributes) + + KDCHART_DECLARE_SWAP_BASE(AbstractThreeDAttributes) + +}; // End of class AbstractThreeDAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::AbstractThreeDAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + + + +#endif // KDCHARTABSTRACTTHREEDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel b/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel new file mode 100644 index 00000000..10d6bc53 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel @@ -0,0 +1 @@ +#include "KDChartAttributesModel.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel.h b/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel.h new file mode 100644 index 00000000..47c210e1 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAttributesModel.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHART_ATTRIBUTES_MODEL_H__ +#define __KDCHART_ATTRIBUTES_MODEL_H__ + +#include "KDChartAbstractProxyModel.h" +#include +#include + +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A proxy model used for decorating data with attributes. + * + * An AttributesModel forwards data from and to the source model and adds attributes, + * data that influences the graphical rendering of the source model data. + * The attributes are distinguished from the source model's data by their @p role values. + * Therefore this class does not need to, and does not, change the data layout from the + * source model's; indexes that refer to the same data have the same row and column + * values in both models. + * Attribute changes, that is changes to data with the attribute role, via the interface + * of this class (including setData()) are stored internally and not forwarded to the source model. + */ +class KDCHART_EXPORT AttributesModel : public AbstractProxyModel +{ + Q_OBJECT + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AttributesModel ) +public: + enum PaletteType { + PaletteTypeDefault = 0, + PaletteTypeRainbow = 1, + PaletteTypeSubdued = 2 + }; + + explicit AttributesModel( QAbstractItemModel* model, QObject * parent = 0 ); + ~AttributesModel(); + + /** Copies the internal data (maps and palette) of another + * AttributesModel* into this one. + */ + void initFrom( const AttributesModel* other ); + + /** Returns true if both, all of the attributes set, and + * the palette set is equal in both of the AttributeModels. + */ + bool compare( const AttributesModel* other ) const; + + bool compareAttributes( int role, const QVariant& a, const QVariant& b ) const; + + /* Attributes Model specific API */ + bool setModelData( const QVariant value, int role ); + QVariant modelData( int role ) const; + + /** Returns whether the given role corresponds to one of the known + * internally used ones. */ + bool isKnownAttributesRole( int role ) const; + + /** Sets the palettetype used by this attributesmodel */ + void setPaletteType( PaletteType type ); + PaletteType paletteType() const; + + /** Returns the data that were specified at global level, + * or the default data, or QVariant(). + */ + QVariant data(int role) const; + + /** Returns the data that were specified at per column level, + * or the globally set data, or the default data, or QVariant(). + */ + QVariant data(int column, int role) const; + + /** \reimpl */ + QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + /** \reimpl */ + int rowCount(const QModelIndex& ) const; + /** \reimpl */ + int columnCount(const QModelIndex& ) const; + /** \reimpl */ + QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const; + /** \reimpl */ + bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::DisplayRole); + /** Remove any explicit attributes settings that might have been specified before. */ + bool resetData ( const QModelIndex & index, int role = Qt::DisplayRole); + /** \reimpl */ + bool setHeaderData ( int section, Qt::Orientation orientation, const QVariant & value, + int role = Qt::DisplayRole); + /** Returns default values for the header data. */ + virtual QVariant defaultHeaderData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + /** Remove any explicit attributes settings that might have been specified before. */ + bool resetHeaderData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole); + /** \reimpl */ + void setSourceModel ( QAbstractItemModel* sourceModel ); + + /** Define the default value for a certain role. + Passing a default-constructed QVariant is equivalent to removing the default. */ + void setDefaultForRole( int role, const QVariant& value ); + + /** Set the dimension of the dataset in the source model. \sa AbstractDiagram::setDatasetDimension */ + void setDatasetDimension( int dimension ); + int datasetDimension() const; + +Q_SIGNALS: + void attributesChanged( const QModelIndex&, const QModelIndex& ); + +private Q_SLOTS: + void slotRowsAboutToBeInserted( const QModelIndex& parent, int start, int end ); + void slotColumnsAboutToBeInserted( const QModelIndex& parent, int start, int end ); + void slotRowsInserted( const QModelIndex& parent, int start, int end ); + void slotColumnsInserted( const QModelIndex& parent, int start, int end ); + + void slotRowsAboutToBeRemoved( const QModelIndex& parent, int start, int end ); + void slotColumnsAboutToBeRemoved( const QModelIndex& parent, int start, int end ); + void slotRowsRemoved( const QModelIndex& parent, int start, int end ); + void slotColumnsRemoved( const QModelIndex& parent, int start, int end ); + + void slotDataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight ); + +private: + // helper + QVariant defaultsForRole( int role ) const; + bool compareHeaderDataMaps( const QMap< int, QMap< int, QVariant > >& mapA, + const QMap< int, QMap< int, QVariant > >& mapB ) const; + + void removeEntriesFromDataMap( int start, int end ); + void removeEntriesFromDirectionDataMaps( Qt::Orientation dir, int start, int end ); +}; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartAutoSpacerLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartAutoSpacerLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartAutoSpacerLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes new file mode 100644 index 00000000..2005dad3 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes @@ -0,0 +1 @@ +#include "KDChartBackgroundAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes.h new file mode 100644 index 00000000..733e12b6 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBackgroundAttributes.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBACKGROUNDATTRIBUTES_H +#define KDCHARTBACKGROUNDATTRIBUTES_H + +#include +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * Set of attributes usable for background pixmaps + */ +class KDCHART_EXPORT BackgroundAttributes +{ +public: + BackgroundAttributes(); + BackgroundAttributes( const BackgroundAttributes& ); + BackgroundAttributes &operator= ( const BackgroundAttributes& ); + + ~BackgroundAttributes(); + + enum BackgroundPixmapMode { BackgroundPixmapModeNone, + BackgroundPixmapModeCentered, + BackgroundPixmapModeScaled, + BackgroundPixmapModeStretched }; + + void setVisible( bool visible ); + bool isVisible() const; + + void setBrush( const QBrush &brush ); + QBrush brush() const; + + void setPixmapMode( BackgroundPixmapMode mode ); + BackgroundPixmapMode pixmapMode() const; + + void setPixmap( const QPixmap &backPixmap ); + QPixmap pixmap() const; + + bool operator==( const BackgroundAttributes& ) const; + inline bool operator!=( const BackgroundAttributes& other ) const { return !operator==(other); } + + bool isEqualTo( const BackgroundAttributes& other, bool ignorePixmap=false ) const; + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( BackgroundAttributes ) +}; // End of class BackgroundAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::BackgroundAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::BackgroundAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::BackgroundAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::BackgroundAttributes ) + +#endif // KDCHARTBACKGROUNDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes new file mode 100644 index 00000000..1c2059a3 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes @@ -0,0 +1 @@ +#include "KDChartBarAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes.h new file mode 100644 index 00000000..1f8a257a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBarAttributes.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBARATTRIBUTES_H +#define KDCHARTBARATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Set of attributes for changing the appearance of bar charts + */ +class KDCHART_EXPORT BarAttributes +{ +public: + BarAttributes(); + BarAttributes( const BarAttributes& ); + BarAttributes &operator= ( const BarAttributes& ); + + ~BarAttributes(); + + void setFixedDataValueGap( qreal gap ); + qreal fixedDataValueGap() const; + + void setUseFixedDataValueGap( bool gapIsFixed ); + bool useFixedDataValueGap() const; + + void setFixedValueBlockGap( qreal gap ); + qreal fixedValueBlockGap() const; + + void setUseFixedValueBlockGap( bool gapIsFixed ); + bool useFixedValueBlockGap() const; + + void setFixedBarWidth( qreal width ); + qreal fixedBarWidth() const; + + void setUseFixedBarWidth( bool useFixedBarWidth ); + bool useFixedBarWidth() const; + + void setGroupGapFactor ( qreal gapFactor ); + qreal groupGapFactor() const; + + void setBarGapFactor( qreal gapFactor ); + qreal barGapFactor() const; + + void setDrawSolidExcessArrows( bool solidArrows ); + bool drawSolidExcessArrows() const; + + bool operator==( const BarAttributes& ) const; + inline bool operator!=( const BarAttributes& other ) const { return !operator==(other); } + +private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } +}; // End of class BarAttributes + +} + +Q_DECLARE_METATYPE( KDChart::BarAttributes ) + +#endif // KDCHARTBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram new file mode 100644 index 00000000..7ed676fc --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram @@ -0,0 +1 @@ +#include "KDChartBarDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram.h new file mode 100644 index 00000000..9ef8a2b2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartBarDiagram.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBARDIAGRAM_H +#define KDCHARTBARDIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartBarAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDBarAttributes; + +/** + * @brief BarDiagram defines a common bar diagram. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT BarDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( BarDiagram ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( BarDiagram, CartesianCoordinatePlane ) + +public: + class BarDiagramType; + friend class BarDiagramType; + + explicit BarDiagram( + QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~BarDiagram(); + + virtual BarDiagram * clone() const; + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const BarDiagram* other ) const; + + enum BarType { Normal, + Stacked, + Percent, + Rows ///< @deprecated Use BarDiagram::setOrientation() instead + }; + + void setType( const BarType type ); + BarType type() const; + + void setOrientation( Qt::Orientation orientation ); + Qt::Orientation orientation() const; + + void setBarAttributes( const BarAttributes & a ); + void setBarAttributes( int column, const BarAttributes & a ); + void setBarAttributes( const QModelIndex & index, const BarAttributes & a ); + + BarAttributes barAttributes() const; + BarAttributes barAttributes( int column ) const; + BarAttributes barAttributes( const QModelIndex & index ) const; + + void setThreeDBarAttributes( const ThreeDBarAttributes & a ); + void setThreeDBarAttributes( int column, const ThreeDBarAttributes & a ); + void setThreeDBarAttributes( const QModelIndex & index, + const ThreeDBarAttributes & a ); + ThreeDBarAttributes threeDBarAttributes() const; + ThreeDBarAttributes threeDBarAttributes( int column ) const; + ThreeDBarAttributes threeDBarAttributes( const QModelIndex & index ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /** \reimpl */ + const int numberOfAbscissaSegments () const; + /** \reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /** \reimpl */ + int numberOfAbscissaSegments () const; + /** \reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +private: + + void calculateValueAndGapWidths( int rowCount, int colCount, + qreal groupWidth, + qreal& barWidth, + qreal& spaceBetweenBars, + qreal& spaceBetweenGroups ); +}; // End of class BarDiagram + +} + +#endif // KDCHARTBARDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis new file mode 100644 index 00000000..cbf6bf65 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis @@ -0,0 +1 @@ +#include "KDChartCartesianAxis.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis.h b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis.h new file mode 100644 index 00000000..7d4b4bf1 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianAxis.h @@ -0,0 +1,189 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANAXIS_H +#define KDCHARTCARTESIANAXIS_H + +#include + +#include "KDChartAbstractAxis.h" + +namespace KDChart { + + class AbstractCartesianDiagram; + + /** + * The class for cartesian axes. + * + * For being useful, axes need to be assigned to a diagram, see + * AbstractCartesianDiagram::addAxis and AbstractCartesianDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT CartesianAxis : public AbstractAxis + { + Q_OBJECT + + Q_DISABLE_COPY( CartesianAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( CartesianAxis, AbstractDiagram* ) + + public: + enum Position { + Bottom, + Top, + Right, + Left + }; + + /** + * C'tor of the class for cartesian axes. + * + * \note If you pass a null parent to the constructor, you need to call + * your diagram's addAxis function to add your axis to the diagram. + * Otherwise there is no need to call addAxis, since the constructor + * does it already. + * + * \sa AbstractCartesianDiagram::addAxis + */ + explicit CartesianAxis ( AbstractCartesianDiagram* diagram = 0 ); + ~CartesianAxis(); + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const CartesianAxis* other ) const; + + /** reimpl */ + virtual void paint( QPainter* ); + /** reimpl */ + virtual void paintCtx( PaintContext* ); + + /** + * Sets the optional text displayed as chart title. + */ + void setTitleText( const QString& text ); + QString titleText() const; + + /** + * \deprecated + * Sets the spacing between the title and the diagram. + * Be aware that setting this value can lead to + * collisions between axis labels and the title + */ + void setTitleSpace( qreal value ); + /// \deprecated + qreal titleSpace() const; + + /// \deprecated \brief use setTitleTextAttributes() instead + void setTitleSize(qreal value); + /// \deprecated + qreal titleSize() const; + + void setTitleTextAttributes( const TextAttributes &a ); + /** + * Returns the text attributes that will be used for displaying the + * title text. + * This is either the text attributes as specified by setTitleTextAttributes, + * or (if setTitleTextAttributes() was not called) the default text attributes. + * \sa resetTitleTextAttributes, hasDefaultTitleTextAttributes + */ + TextAttributes titleTextAttributes() const; + /** + * Reset the title text attributes to the built-in default: + * + * Same font and pen as AbstractAxis::textAttributes() + * and 1.5 times their size. + */ + void resetTitleTextAttributes(); + bool hasDefaultTitleTextAttributes() const; + + virtual void setPosition ( Position p ); +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const Position position () const; +#else + virtual Position position () const; +#endif + + virtual void layoutPlanes(); + + virtual bool isAbscissa() const; + virtual bool isOrdinate() const; + + /** + * Sets the axis annotations to \a annotations. + * Annotations are a QMap of qreals and QStrings defining special + * markers and their position. + * If you use annotations, the normal ticks and values will be invisible. + * To unset the annotations, pass an empty QMap. + */ + void setAnnotations( const QMap< qreal, QString >& annotations ); + /** + * Returns the currently set axis annotations. + */ + QMap< qreal, QString > annotations() const; + + /** + * Sets custom ticks on the axis. + * Ticks are a QList of qreals defining their special position. + */ + void setCustomTicks( const QList< qreal >& ticksPostions ); + /** + * Returns the currently set custom ticks on the axis. + */ + QList< qreal > customTicks() const; + + /** + * Sets the length of custom ticks on the axis. + */ + void setCustomTickLength(int value); + /** + * Returns the length of custom ticks on the axis. + */ + int customTickLength() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + public Q_SLOTS: + void setCachedSizeDirty() const; + + virtual int tickLength( bool subUnitTicks = false ) const; + private Q_SLOTS: + void coordinateSystemChanged(); + }; + + typedef QList CartesianAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane new file mode 100644 index 00000000..e4b7e40c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartCartesianCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane.h new file mode 100644 index 00000000..7ca9d061 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianCoordinatePlane.h @@ -0,0 +1,505 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANCOORDINATEPLANE_H +#define KDCHARTCARTESIANCOORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class Chart; + class PaintContext; + class AbstractDiagram; + class CartesianAxis; + class CartesianGrid; + + /** + * @brief Cartesian coordinate plane + */ + class KDCHART_EXPORT CartesianCoordinatePlane : public AbstractCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( CartesianCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( CartesianCoordinatePlane, Chart* ) + + friend class CartesianAxis; + friend class CartesianGrid; + + public: + explicit CartesianCoordinatePlane ( Chart* parent = 0 ); + ~CartesianCoordinatePlane(); + + void addDiagram ( AbstractDiagram* diagram ); + + /** + * If @p onOff is true, enforce that X and Y distances are scaled by the same factor. + * This makes the plane's height a function of its width, and hasHeightForWidth() + * will return true. + */ + void setIsometricScaling ( bool onOff ); + + bool doesIsometricScaling() const; + + const QPointF translate ( const QPointF& diagramPoint ) const; + + /** + * \sa setZoomFactorX, setZoomCenter + */ + virtual qreal zoomFactorX() const; + /** + * \sa setZoomFactorY, setZoomCenter + */ + virtual qreal zoomFactorY() const; + + /** + * \sa setZoomFactorX,setZoomFactorY + */ + virtual void setZoomFactors( qreal factorX, qreal factorY ); + /** + * \sa zoomFactorX, setZoomCenter + */ + virtual void setZoomFactorX( qreal factor ); + /** + * \sa zoomFactorY, setZoomCenter + */ + virtual void setZoomFactorY( qreal factor ); + + /** + * \sa setZoomCenter, setZoomFactorX, setZoomFactorY + */ + virtual QPointF zoomCenter() const; + + /** + * \sa zoomCenter, setZoomFactorX, setZoomFactorY + */ + virtual void setZoomCenter( const QPointF& center ); + + /** + * Allows to specify a fixed data-space / coordinate-space relation. If set + * to true then fixed bar widths are used, so you see more bars as the window + * is made wider. + * + * This allows to completely restrict the size of bars in a graph such that, + * upon resizing a window, the graphs coordinate plane will grow (add more + * ticks to x- and y-coordinates) rather than have the image grow. + */ + void setFixedDataCoordinateSpaceRelation( bool fixed ); + bool hasFixedDataCoordinateSpaceRelation() const; + + /** + * Allows to fix the lower bound of X axis to zero when diagram is in first quadrant. + * + * The default behavior is to lower x or y bound to be 0. If this behaviour is not wanted, + * either \a CartesianCoordinatePlane::setHorizontalRange could be used instead of letting + * KDChart auto-adjust the ranges, or this method can be used to disable this behavior. + */ + void setXAxisStartAtZero(bool fixedStart); + bool xAxisStartAtZero() const; + + /** + * \brief Set the boundaries of the visible value space displayed in horizontal direction. + * + * This is also known as the horizontal viewport. + * + * By default the horizontal range is adjusted to the range covered by the model's data, + * see setAutoAdjustHorizontalRangeToData for details. + * Calling setHorizontalRange with a valid range disables this default automatic adjusting, + * while on the other hand automatic adjusting will set these ranges. + * + * To disable use of this range you can either pass an empty pair by using the default + * constructor QPair() or you can set both values to the same which constitutes + * a null range. + * + * \note By default the visible data range often is larger than the + * range calculated from the data model (or set by setHoriz.|Vert.Range(), resp.). + * This is due to the built-in grid calculation feature: The visible start/end + * values get adjusted so that they match a main-grid line. + * You can turn this feature off for any of the four bounds by calling + * GridAttributes::setAdjustBoundsToGrid() for either the global grid-attributes + * or for the horizontal/vertical attrs separately. + * + * \note To set only one of the ends of the range to a fixed value while keeping + * the other dynamically adjusted, use std::numeric_limits< qreal >::quiet_NaN() + * for the dynamic value. + * + * \note If you use user defined vertical ranges together with logarithmic scale, only + * positive values are supported. If you set it to negative values, the result is undefined. + * + * \param range a pair of values representing the smalles and the largest + * horizontal value space coordinate displayed. + * + * \sa setAutoAdjustHorizontalRangeToData, setVerticalRange + * \sa GridAttributes::setAdjustBoundsToGrid() + */ + void setHorizontalRange( const QPair & range ); + + /** + * \brief Set the boundaries of the visible value space displayed in vertical direction. + * + * This is also known as the vertical viewport. + * + * By default the vertical range is adjusted to the range covered by the model's data, + * see setAutoAdjustVerticalRangeToData for details. + * Calling setVerticalRange with a valid range disables this default automatic adjusting, + * while on the other hand automatic adjusting will set these ranges. + * + * To disable use of this range you can either pass an empty pair by using the default + * constructor QPair() or you can set setting both values to the same which constitutes + * a null range. + * + * \note By default the visible data range often is larger than the + * range calculated from the data model (or set by setHoriz.|Vert.Range(), resp.). + * This is due to the built-in grid calculation feature: The visible start/end + * values get adjusted so that they match a main-grid line. + * You can turn this feature off for any of the four bounds by calling + * GridAttributes::setAdjustBoundsToGrid() for either the global grid-attributes + * or for the horizontal/vertical attrs separately. + * + * \note To set only one of the ends of the range to a fixed value while keeping + * the other dynamically adjusted, use std::numeric_limits< qreal >::quiet_NaN() + * for the dynamic value. + * + * \note If you use user defined vertical ranges together with logarithmic scale, only + * positive values are supported. If you set it to negative values, the result is undefined. + * + * \param range a pair of values representing the smalles and the largest + * vertical value space coordinate displayed. + * + * \sa setAutoAdjustVerticalRangeToData, setHorizontalRange + * \sa GridAttributes::setAdjustBoundsToGrid() + */ + void setVerticalRange( const QPair & range ); + + /** + * @return The largest and smallest visible horizontal value space + * value. If this is not explicitly set,or if both values are the same, + * the plane will use the union of the dataBoundaries of all + * associated diagrams. + * \see KDChart::AbstractDiagram::dataBoundaries + */ + QPair horizontalRange() const; + + /** + * @return The largest and smallest visible horizontal value space + * value. If this is not explicitly set, or if both values are the same, + * the plane will use the union of the dataBoundaries of all + * associated diagrams. + * \see KDChart::AbstractDiagram::dataBoundaries + */ + QPair verticalRange() const; + + /** + * \brief Automatically adjust horizontal range settings to the ranges covered by + * the model's values, when ever the data have changed, and then emit horizontalRangeAutomaticallyAdjusted. + * + * By default the horizontal range is adjusted automatically, if more than 67 percent of + * the available horizontal space would be empty otherwise. + * + * Range setting is adjusted if more than \c percentEmpty percent of the horizontal + * space covered by the coordinate plane would otherwise be empty. + * Automatic range adjusting can happen, when either all of the data are positive or all are negative. + * + * Set percentEmpty to 100 to disable automatic range adjusting. + * + * \param percentEmpty The maximal percentage of horizontal space that may be empty. + * + * \sa horizontalRangeAutomaticallyAdjusted + * \sa autoAdjustHorizontalRangeToData, adjustRangesToData + * \sa setHorizontalRange, setVerticalRange + * \sa setAutoAdjustVerticalRangeToData + */ + void setAutoAdjustHorizontalRangeToData( unsigned int percentEmpty = 67 ); + + /** + * \brief Automatically adjust vertical range settings to the ranges covered by + * the model's values, when ever the data have changed, and then emit verticalRangeAutomaticallyAdjusted. + * + * By default the vertical range is adjusted automatically, if more than 67 percent of + * the available vertical space would be empty otherwise. + * + * Range setting is adjusted if more than \c percentEmpty percent of the horizontal + * space covered by the coordinate plane would otherwise be empty. + * Automatic range adjusting can happen, when either all of the data are positive or all are negative. + * + * Set percentEmpty to 100 to disable automatic range adjusting. + * + * \param percentEmpty The maximal percentage of horizontal space that may be empty. + * + * \sa verticalRangeAutomaticallyAdjusted + * \sa autoAdjustVerticalRangeToData, adjustRangesToData + * \sa setHorizontalRange, setVerticalRange + * \sa setAutoAdjustHorizontalRangeToData + */ + void setAutoAdjustVerticalRangeToData( unsigned int percentEmpty = 67 ); + + /** + * \brief Returns the maximal allowed percent of the horizontal + * space covered by the coordinate plane that may be empty. + * + * \return A percent value indicating how much of the horizontal space may be empty. + * If more than this is empty, automatic range adjusting is applied. + * A return value of 100 indicates that no such automatic adjusting is done at all. + * + * \sa setAutoAdjustHorizontalRangeToData, adjustRangesToData + */ + unsigned int autoAdjustHorizontalRangeToData() const; + + /** + * \brief Returns the maximal allowed percent of the vertical + * space covered by the coordinate plane that may be empty. + * + * \return A percent value indicating how much of the vertical space may be empty. + * If more than this is empty, automatic range adjusting is applied. + * A return value of 100 indicates that no such automatic adjusting is done at all. + * + * \sa setAutoAdjustVerticalRangeToData, adjustRangesToData + */ + unsigned int autoAdjustVerticalRangeToData() const; + + + /** + * Set the attributes to be used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * + * To disable horizontal grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->gridAttributes( Qt::Horizontal ); + * ga.setGridVisible( false ); + * plane-setGridAttributes( Qt::Horizontal, ga ); + * \endcode + * + * \note setGridAttributes overwrites the global attributes that + * were set by AbstractCoordinatePlane::setGlobalGridAttributes. + * To re-activate these global attributes you can call + * resetGridAttributes. + * + * \sa resetGridAttributes, gridAttributes + * \sa setAutoAdjustGridToZoom + * \sa AbstractCoordinatePlane::setGlobalGridAttributes + * \sa hasOwnGridAttributes + */ + void setGridAttributes( Qt::Orientation orientation, const GridAttributes & ); + + /** + * Reset the attributes to be used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * By calling this method you specify that the global attributes set by + * AbstractCoordinatePlane::setGlobalGridAttributes be used. + * + * \sa setGridAttributes, gridAttributes + * \sa setAutoAdjustGridToZoom + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + void resetGridAttributes( Qt::Orientation orientation ); + + /** + * \return The attributes used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * + * \note This function always returns a valid set of grid attributes: + * If no special grid attributes were set foe this orientation + * the global attributes are returned, as returned by + * AbstractCoordinatePlane::globalGridAttributes. + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + const GridAttributes gridAttributes( Qt::Orientation orientation ) const; + + /** + * \return Returns whether the grid attributes have been set for the + * respective direction via setGridAttributes( orientation ). + * + * If false, the grid will use the global attributes set + * by AbstractCoordinatePlane::globalGridAttributes (or the default + * attributes, resp.) + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + */ + bool hasOwnGridAttributes( Qt::Orientation orientation ) const; + + /** + * Disable / re-enable the built-in grid adjusting feature. + * + * By default additional lines will be drawn in a Linear grid when zooming in. + * + * \sa autoAdjustGridToZoom, setGridAttributes + */ + void setAutoAdjustGridToZoom( bool autoAdjust ); + + /** + * Return the status of the built-in grid adjusting feature. + * + * \sa setAutoAdjustGridToZoom + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const bool autoAdjustGridToZoom() const; +#else + bool autoAdjustGridToZoom() const; +#endif + + AxesCalcMode axesCalcModeY() const; + AxesCalcMode axesCalcModeX() const; + + /** Specifies the calculation modes for all axes */ + void setAxesCalcModes( AxesCalcMode mode ); + /** Specifies the calculation mode for all Ordinate axes */ + void setAxesCalcModeY( AxesCalcMode mode ); + /** Specifies the calculation mode for all Abscissa axes */ + void setAxesCalcModeX( AxesCalcMode mode ); + + /** reimpl */ + virtual void paint( QPainter* ); + + /** reimpl */ + AbstractCoordinatePlane* sharedAxisMasterPlane( QPainter* p = 0 ); + + /** + * Returns the currently visible data range. Might be greater than the + * range of the grid. + */ + QRectF visibleDataRange() const; + + /** + * Returns the logical area, i.e., the rectangle defined by the very top + * left and very bottom right coordinate. + */ + QRectF logicalArea() const; + + /** + * Returns the (physical) area occupied by the diagram. Unless zoom is applied + * (which is also true when a fixed data coordinate / space relation is used), + * \code diagramArea() == drawingArea() \endcode . + * \sa setFixedDataCoordinateSpaceRelation + * \sa drawingArea + */ + QRectF diagramArea() const; + + /** + * Returns the visible part of the diagram area, i.e. + * \code diagramArea().intersected( drawingArea() ) \endcode + * \sa diagramArea + */ + QRectF visibleDiagramArea() const; + + /** + * Sets whether the horizontal range should be reversed or not, i.e. + * small values to the left and large values to the right (the default) + * or vice versa. + * \param reverse Whether the horizontal range should be reversed or not + */ + void setHorizontalRangeReversed( bool reverse ); + + /** + * \return Whether the horizontal range is reversed or not + */ + bool isHorizontalRangeReversed() const; + + /** + * Sets whether the vertical range should be reversed or not, i.e. + * small values at the bottom and large values at the top (the default) + * or vice versa. + * \param reverse Whether the vertical range should be reversed or not + */ + void setVerticalRangeReversed( bool reverse ); + + /** + * \return Whether the vertical range is reversed or not + */ + bool isVerticalRangeReversed() const; + + /** + * reimplemented from AbstractCoordinatePlane + */ + void setGeometry( const QRect& r ); + + // reimplemented + Qt::Orientations expandingDirections() const; + + + public Q_SLOTS: + /** + * \brief Adjust both, horizontal and vertical range settings to the + * ranges covered by the model's data values. + * + * \sa setHorizontalRange, setVerticalRange + * \sa adjustHorizontalRangeToData, adjustVerticalRangeToData + * \sa setAutoAdjustHorizontalRangeToData, setAutoAdjustVerticalRangeToData + */ + void adjustRangesToData(); + + /** + * Adjust horizontal range settings to the ranges covered by the model's data values. + * \sa adjustRangesToData + */ + void adjustHorizontalRangeToData(); + + /** + * Adjust vertical range settings to the ranges covered by the model's data values. + * \sa adjustRangesToData + */ + void adjustVerticalRangeToData(); + + protected: + QRectF getRawDataBoundingRectFromDiagrams() const; + QRectF adjustedToMaxEmptyInnerPercentage( + const QRectF& r, unsigned int percentX, unsigned int percentY ) const; + virtual QRectF calculateRawDataBoundingRect() const; + virtual DataDimensionsList getDataDimensionsList() const; + // the whole drawing area, includes diagrams and axes, but maybe smaller + // than (width, height): + virtual QRectF drawingArea() const; + public: + const QPointF translateBack( const QPointF& screenPoint ) const; + protected: + void paintEvent ( QPaintEvent* ); + void layoutDiagrams(); + // the following three return true if the new value is different from the old + bool doneSetZoomFactorX( qreal factor ); + bool doneSetZoomFactorY( qreal factor ); + bool doneSetZoomCenter( const QPointF& center ); + + void handleFixedDataCoordinateSpaceRelation( const QRectF& geometry ); + + // reimplemented from QLayoutItem, via AbstractLayoutItem, AbstractArea, AbstractCoordinatePlane + bool hasHeightForWidth() const; + int heightForWidth( int w ) const; + QSize sizeHint() const; + + protected Q_SLOTS: + void slotLayoutChanged( AbstractDiagram* ); + + private: + void setHasOwnGridAttributes( + Qt::Orientation orientation, bool on ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid new file mode 100644 index 00000000..adff65c0 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid @@ -0,0 +1 @@ +#include "KDChartCartesianGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid.h new file mode 100644 index 00000000..a1f17081 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartCartesianGrid.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANGRID_H +#define KDCHARTCARTESIANGRID_H + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class CartesianCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a cartesian plane. + * + * The CartesianGrid interface is used + * for calculating and for drawing + * the horizonal grid lines, and the vertical grid lines + * of a cartesian coordinate plane. + */ + class CartesianGrid : public AbstractGrid + { + public: + CartesianGrid(); + virtual ~CartesianGrid(); + + int minimalSteps() const; + void setMinimalSteps(int minsteps); + + int maximalSteps() const; + void setMaximalSteps(int maxsteps); + + void drawGrid( PaintContext* context ); + + private: + int m_minsteps; + int m_maxsteps; + + DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + + /** + * Helper function called by calculateGrid() to calculate the grid of one dimension. + * + * Classes derived from CartesianGrid can overwrite calculateGridXY() if they need + * a special way of calculating the start or end or step width of their grid lines. + * + * \param adjustLower If true, the function adjusts the start value + * so it matches the position of a grid line, if false the start value is + * the raw data dimension start value. + * \param adjustUpper If true, the function adjusts the end value + * so it matches the position of a grid line, if false the end value is + * the raw data dimension end value. + */ + virtual DataDimension calculateGridXY( + const DataDimension& rawDataDimension, + Qt::Orientation orientation, + bool adjustLower, bool adjustUpper ) const; + + /** + * Helper function called by calculateGridXY(). + * + * Classes derived from CartesianGrid can overwrite calculateStepWidth() if they need + * a way of calculating the step width, based upon given start/end values + * for their horizontal or vertical grid lines which is different from the default + * implementation. + * + * \note The CartesianGrid class tries to keep the displayed range as close to + * the raw data range as possible, so in most cases there should be no reason + * to change the default implementation: Using + * KDChart::GridAttributes::setGridGranularitySequence() should be sufficient. + * + * \param start The raw start value of the data range. + * \param end The raw end value of the data range. + * \param granularities The list of allowed granularities. + * \param adjustLower If true, the function adjusts the start value + * so it matches the position of a grid line, if false the start value is + * left as it is, in any case the value is adjusted for internal calculation only. + * \param adjustUpper If true, the function adjusts the end value + * so it matches the position of a grid line, if false the end value is + * left as it is, in any case the value is adjusted for internal calculation only. + * + * \returns stepWidth: One of the values from the granularities + * list, optionally multiplied by a positive (or negative, resp.) + * power of ten. subStepWidth: The matching width for sub-grid lines. + */ + virtual void calculateStepWidth( + qreal start, qreal end, + const QList& granularities, + Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, + bool adjustLower, bool adjustUpper ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartChart b/massif-visualizer/kdchart/include/KDChart/KDChartChart new file mode 100644 index 00000000..b96c37a5 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartChart @@ -0,0 +1 @@ +#include "KDChartChart.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartChart.h b/massif-visualizer/kdchart/include/KDChart/KDChartChart.h new file mode 100644 index 00000000..99fda1a5 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartChart.h @@ -0,0 +1,576 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCHART_H +#define KDCHARTCHART_H + +#include + +#include "kdchart_export.h" +#include "KDChartGlobal.h" + +/* +Simplified(*) overview of object ownership in a chart: + + Chart is-a QWidget + | + n CoordinatePlanes is-a AbstractArea is-a AbstractLayoutItem is-a QLayoutItem + | + n Diagrams is-a QAbstractItemView is-a QWidget + / | \ + AbstractGrid | Axes (can be shared between diagrams) is-a AbstractArea is-a... QLayoutItem + (no base class) | + Legends is-a AbstractAreaWidget is-a QWidget + +(*) less important classes, including base classes, removed. + + +Layout rules: + +In principle, every size or existence change in one of the objects listed above must be propagated +to all other objects. This could change their size. +There are also settings changes that invalidate the size of other components, where the size changes +are detected and propagated. + + +Painting call tree (simplified): + +Chart::paint() (from users) / paintEvent() (from framework) +ChartPrivate::paintAll()-----------------------------------------------\ +CoordinatePlane::paintAll() (from AbstractArea)--------\ Axis::paintAll()-\ +CoordinatePlane::paint() (from AbstractLayoutItem) Grid::drawGrid() Axis::paint() +Diagram::paint( PaintContext* paintContext ) + +Note that grids are painted from the coordinate plane, not from the diagram as ownership would suggest. + +*/ + +namespace KDChart { + + class BackgroundAttributes; + class FrameAttributes; + class AbstractDiagram; + class AbstractCoordinatePlane; + class HeaderFooter; + class Legend; + + typedef QList CoordinatePlaneList; + typedef QList HeaderFooterList; + typedef QList LegendList; + + + /** + * @class Chart KDChartChart.h KDChartChart + * @brief A chart with one or more diagrams. + * + * The Chart class represents a drawing consisting of one or more diagrams + * and various optional elements such as legends, axes, text boxes, headers + * or footers. It takes ownership of all these elements when they are assigned + * to it. Each diagram is associated with a coordinate plane, of which the chart + * can have more than one. The coordinate planes (and thus the associated diagrams) + * can be laid out in various ways. + * + * The Chart class makes heavy use of the Qt Interview framework for model/view + * programming, and thus requires data to be presented to it in a QAbstractItemModel + * compatible way. For many simple charts, especially if the visualized data is + * static, KDChart::Widget provides an abstracted interface, that hides the complexity + * of Interview to a large extent. + */ + class KDCHART_EXPORT Chart : public QWidget + { + Q_OBJECT + // KD Chart 3.0: leading is inter-line distance of text. this here is MARGIN or SPACING. + Q_PROPERTY( int globalLeadingTop READ globalLeadingTop WRITE setGlobalLeadingTop ) + Q_PROPERTY( int globalLeadingBottom READ globalLeadingBottom WRITE setGlobalLeadingBottom ) + Q_PROPERTY( int globalLeadingLeft READ globalLeadingLeft WRITE setGlobalLeadingLeft ) + Q_PROPERTY( int globalLeadingRight READ globalLeadingRight WRITE setGlobalLeadingRight ) + Q_PROPERTY( bool useNewLayoutSystem READ useNewLayoutSystem WRITE setUseNewLayoutSystem ) + + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( Chart ) + + public: + explicit Chart ( QWidget* parent = 0 ); + ~Chart(); + + /** + * @brief useNewLayoutSystem + * Be very careful activating the new layout system, + * its still experimental and works only if the user knows + * what he is doing. The reason is that the system does not prevent + * the user from creating sharing graphs that are not layoutable in a + * plane and still needs assistance from the user. + */ + bool useNewLayoutSystem() const; + void setUseNewLayoutSystem( bool value ); + + /** + \brief Specify the frame attributes to be used, by default is it a thin black line. + + To hide the frame line, you could do something like this: + \verbatim + KDChart::FrameAttributes frameAttrs( my_chart->frameAttributes() ); + frameAttrs.setVisible( false ); + my_chart->setFrameAttributes( frameAttrs ); + \endverbatim + + \sa setBackgroundAttributes + */ + void setFrameAttributes( const FrameAttributes &a ); + FrameAttributes frameAttributes() const; + + /** + \brief Specify the background attributes to be used, by default there is no background. + + To set a light blue background, you could do something like this: + \verbatim + KDChart::BackgroundAttributes backgroundAttrs( my_chart->backgroundAttributes() ); + backgroundAttrs.setVisible( true ); + backgroundAttrs.setBrush( QColor(0xd0,0xd0,0xff) ); + my_chart->setBackgroundAttributes( backgroundAttrs ); + \endverbatim + + \sa setFrameAttributes + */ + void setBackgroundAttributes( const BackgroundAttributes &a ); + BackgroundAttributes backgroundAttributes() const; + + /** + * Each chart must have at least one coordinate plane. + * Initially a default CartesianCoordinatePlane is created. + * Use replaceCoordinatePlane() to replace it with a different + * one, such as a PolarCoordinatePlane. + * @return The first coordinate plane of the chart. + */ + AbstractCoordinatePlane* coordinatePlane(); + + /** + * The list of coordinate planes. + * @return The list of coordinate planes. + */ + CoordinatePlaneList coordinatePlanes(); + + /** + * Adds a coordinate plane to the chart. The chart takes ownership. + * @param plane The coordinate plane to add. + * + * \sa replaceCoordinatePlane, takeCoordinatePlane + */ + void addCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Inserts a coordinate plane to the chart at index @p index. + * The chart takes ownership. + * + * @param index The index where to add the plane + * @param plane The coordinate plane to add. + * + * \sa replaceCoordinatePlane, takeCoordinatePlane + */ + void insertCoordinatePlane( int index, AbstractCoordinatePlane* plane ); + + /** + * Replaces the old coordinate plane, or appends the + * plane, it there is none yet. + * + * @param plane The coordinate plane to be used instead of the old plane. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldPlane The coordinate plane to be removed by the new plane. This + * plane will be deleted automatically. If the parameter is omitted, + * the very first coordinate plane will be replaced. In case, there was no + * plane yet, the new plane will just be added. + * + * \note If you want to re-use the old coordinate plane, call takeCoordinatePlane and + * addCoordinatePlane, instead of using replaceCoordinatePlane. + * + * \sa addCoordinatePlane, takeCoordinatePlane + */ + void replaceCoordinatePlane( AbstractCoordinatePlane* plane, + AbstractCoordinatePlane* oldPlane = 0 ); + + /** + * Removes the coordinate plane from the chart, without deleting it. + * + * The chart no longer owns the plane, so it is + * the caller's responsibility to delete the plane. + * + * \sa addCoordinatePlane, takeCoordinatePlane + */ + void takeCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Set the coordinate plane layout that should be used as model for + * the internal used layout. The layout needs to be an instance of + * QHBoxLayout or QVBoxLayout. + */ + void setCoordinatePlaneLayout( QLayout * layout ); + QLayout* coordinatePlaneLayout(); + + /** + * The first header or footer of the chart. By default there is none. + * @return The first header or footer of the chart or 0 if there was none + * added to the chart. + */ + HeaderFooter* headerFooter(); + + /** + * The list of headers and footers associated with the chart. + * @return The list of headers and footers associated with the chart. + */ + HeaderFooterList headerFooters(); + + /** + * Adds a header or a footer to the chart. The chart takes ownership. + * @param headerFooter The header (or footer, resp.) to add. + * + * \sa replaceHeaderFooter, takeHeaderFooter + */ + void addHeaderFooter( HeaderFooter* headerFooter ); + + /** + * Replaces the old header (or footer, resp.), or appends the + * new header or footer, it there is none yet. + * + * @param headerFooter The header or footer to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldHeaderFooter The header or footer to be removed by the new one. This + * header or footer will be deleted automatically. If the parameter is omitted, + * the very first header or footer will be replaced. In case, there was no + * header and no footer yet, the new header or footer will just be added. + * + * \note If you want to re-use the old header or footer, call takeHeaderFooter and + * addHeaderFooter, instead of using replaceHeaderFooter. + * + * \sa addHeaderFooter, takeHeaderFooter + */ + void replaceHeaderFooter ( HeaderFooter* headerFooter, + HeaderFooter* oldHeaderFooter = 0 ); + + /** + * Removes the header (or footer, resp.) from the chart, without deleting it. + * + * The chart no longer owns the header or footer, so it is + * the caller's responsibility to delete the header or footer. + * + * \sa addHeaderFooter, replaceHeaderFooter + */ + void takeHeaderFooter( HeaderFooter* headerFooter ); + + /** + * The first legend of the chart or 0 if there was none added to the chart. + * @return The first legend of the chart or 0 if none exists. + */ + Legend* legend(); + + /** + * The list of all legends associated with the chart. + * @return The list of all legends associated with the chart. + */ + LegendList legends(); + + /** + * Add the given legend to the chart. The chart takes ownership. + * @param legend The legend to add. + * + * \sa replaceLegend, takeLegend + */ + void addLegend( Legend* legend ); + + /** + * Replaces the old legend, or appends the + * new legend, it there is none yet. + * + * @param legend The legend to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldLegend The legend to be removed by the new one. This + * legend will be deleted automatically. If the parameter is omitted, + * the very first legend will be replaced. In case, there was no + * legend yet, the new legend will just be added. + * + * If you want to re-use the old legend, call takeLegend and + * addLegend, instead of using replaceLegend. + * + * \note Whenever addLegend is called the font sizes used by the + * Legend are set to relative and they get coupled to the Chart's size, + * with their relative values being 20 for the item texts and 24 to the + * title text. So if you want to use custom font sizes for the Legend + * make sure to set them after calling addLegend. + * + * \sa addLegend, takeLegend + */ + void replaceLegend ( Legend* legend, Legend* oldLegend = 0 ); + + /** + * Removes the legend from the chart, without deleting it. + * + * The chart no longer owns the legend, so it is + * the caller's responsibility to delete the legend. + * + * \sa addLegend, takeLegend + */ + void takeLegend( Legend* legend ); + + /** + * Set the padding between the margin of the widget and the area that + * the contents are drawn into. + * @param left The padding on the left side. + * @param top The padding at the top. + * @param right The padding on the left hand side. + * @param bottom The padding on the bottom. + * + * \note Using previous versions of KD Chart you might have called + * setGlobalLeading() to make room for long Abscissa labels (or for an + * overlapping top label of an Ordinate axis, resp.) that would not fit + * into the normal axis area. This is \em no \em longer \em needed + * because KD Chart now is using hidden auto-spacer items reserving + * as much free space as is needed for axes with overlaping content + * at the respective sides. + * + * \sa setGlobalLeadingTop, setGlobalLeadingBottom, setGlobalLeadingLeft, setGlobalLeadingRight + * \sa globalLeadingTop, globalLeadingBottom, globalLeadingLeft, globalLeadingRight + */ + void setGlobalLeading( int left, int top, int right, int bottom ); + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingLeft( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * + * \sa setGlobalLeading + */ + int globalLeadingLeft() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingTop( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * + * \sa setGlobalLeading + */ + int globalLeadingTop() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingRight( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * + * \sa setGlobalLeading + */ + int globalLeadingRight() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the bottom. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingBottom( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing at the bottom. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing at the bottom. + * + * \sa setGlobalLeading + */ + int globalLeadingBottom() const; + + /** + * Paints all the contents of the chart. Use this method to make KDChart + * draw into your QPainter. + * + * \note Any global leading settings will be used by the paint method too, + * so make sure to set them to zero, if you want the drawing to have the exact + * size of the target rectangle. + * + * \param painter The painter to be drawn into. + * \param target The rectangle to be filled by the Chart's drawing. + * + * \sa setGlobalLeading + */ + void paint( QPainter* painter, const QRect& target ); + + void reLayoutFloatingLegends(); + + Q_SIGNALS: + /** Emitted upon change of a property of the Chart or any of its components. */ + void propertiesChanged(); + void finishedDrawing(); + + protected: + /** + * Adjusts the internal layout when the chart is resized. + */ + /* reimp */ void resizeEvent ( QResizeEvent * event ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to override this method in a derived + * class, but if you do, do not forget to call paint(). + * @sa paint + */ + /* reimp */ void paintEvent( QPaintEvent* event ); + + /** reimp */ + void mousePressEvent( QMouseEvent* event ); + /** reimp */ + void mouseDoubleClickEvent( QMouseEvent* event ); + /** reimp */ + void mouseMoveEvent( QMouseEvent* event ); + /** reimp */ + void mouseReleaseEvent( QMouseEvent* event ); + /** reimp */ + bool event( QEvent* event ); + + private: + // TODO move this to the private class + void addLegendInternal( Legend *legend, bool setMeasures ); + }; + +// Here we have a few docu block to be included into the API documentation: +/** + * \dir src + * \brief Implementation directory of KDChart. + * + * This directory contains the header files and the source files of both, + * the private and the public classes. + * + * \note Only classes that have an include wrapper in the \c $KDCHARTDIR/include + * directory are part of the supported API. + * All other classes are to be considered as implemntation details, they + * could be changed in future versions of KDChart without notice. + * + * In other words: No class that is not mentioned in the \c $KDCHARTDIR/include + * directory may be directly used by your application. + * + * The recommended way to include classes of the KDChart API is including + * them by class name, so instead of including KDChartChart.h you would say: + * + \verbatim +#include + \endverbatim + * + * When following this there is no reason to include the \c $KDCHARTDIR/src + * directory, it is sufficient to include \c $KDCHARTDIR/include + */ +} +/** + * @class QAbstractItemView "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QAbstractProxyModel "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QFrame "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QObject "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QSortFilterProxyModel "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QWidget "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QTextDocument "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QLayoutItem "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QGraphicsPolygonItem "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ + + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes new file mode 100644 index 00000000..2b0f63c4 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes @@ -0,0 +1 @@ +#include "KDChartDataValueAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes.h new file mode 100644 index 00000000..f0a83897 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDataValueAttributes.h @@ -0,0 +1,327 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTDATAVALUEATTRIBUTES_H +#define KDCHARTDATAVALUEATTRIBUTES_H + +#include +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" +#include "KDChartRelativePosition.h" + +/** \file KDChartDataValueAttributes.h + * \brief Declaring the class KDChart::DataValueAttributes. + * + * + */ + + +namespace KDChart { + + class TextAttributes; + class BackgroundAttributes; + class FrameAttributes; + class MarkerAttributes; + + /** + * \class DataValueAttributes KDChartDataValueAttributes.h KDChartDataValueAttributes + * \brief Diagram attributes dealing with data value labels. + * + * The DataValueAttributes group all properties that can be set + * wrt data value labels and if and how they are displayed. This + * includes things like the text attributes (font, color), what + * markers are used, how many decimal digits are displayed, etc. + */ +class KDCHART_EXPORT DataValueAttributes +{ +public: + DataValueAttributes(); + DataValueAttributes( const DataValueAttributes& ); + DataValueAttributes &operator= ( const DataValueAttributes& ); + bool operator==( const DataValueAttributes& ) const; + inline bool operator!=( const DataValueAttributes& other ) const { return !operator==(other); } + + ~DataValueAttributes(); + + static const DataValueAttributes& defaultAttributes(); + static const QVariant& defaultAttributesAsVariant(); + + /** Set whether data value labels should be displayed. + * \param visible Whether data value labels should be displayed. + */ + void setVisible( bool visible ); + + /** + * @return Whether data value labels should be displayed. + */ + bool isVisible() const; + + /** + * Set the text attributes to use for the data value labels. + * \param a The text attributes to set. + * \see TextAttributes + */ + void setTextAttributes( const TextAttributes &a ); + + /** + * \return The text attributes used for painting data value labels. + */ + TextAttributes textAttributes() const; + + /** + * If true, rotation of negative value labels is negated, so that negative + * values are rotated in opposite direction of textAttributes().rotation(), + * and in this sense appear "mirrored" to positive value labels, though the + * text itself is *not* mirrored, only its rotation. + */ + bool mirrorNegativeValueTextRotation() const; + + /** + * \see mirrorNegativeValueTextRotation() + */ + void setMirrorNegativeValueTextRotation( bool enable ); + + /** + * Set the frame attributes to use for the data value labels area. + * \param a The frame attributes to set. + * \see FrameAttributes + */ + void setFrameAttributes( const FrameAttributes &a ); + + /** + * \return The frame attributes used for painting the data + * value labels area. + * \see FrameAttributes + */ + FrameAttributes frameAttributes() const; + + /** + * Set the background attributes to use for the data value labels area. + * \param a The background attributes to set. + * \see BackgroundAttributes + */ + void setBackgroundAttributes( const BackgroundAttributes &a ); + + /** + * \return The background attributes used for painting the data + * value labels area. + * \see BackgroundAttributes + */ + BackgroundAttributes backgroundAttributes() const; + + /** + * Set the marker attributes to use for the data values. This includes + * the marker type. + * \param a The marker attributes to set. + * \see MarkerAttributes + */ + void setMarkerAttributes( const MarkerAttributes &a ); + + /** + * \return The marker attributes used for decorating the data + * values. + * \see MarkerAttributes + */ + MarkerAttributes markerAttributes() const; + + /** + * Specify whether to use percentages instead of actual data point values when no + * specific label is set. In a bar or cartesian diagram, this means that the value + * will be shown in % in relation to the sum of all values in the same category, in + * a polar diagram in relation to the sum of all values in a data set. + * + * When this is turned on, the value will \b not automatically have the '%' postfix. + * \param enable Whether to enable percentage values + */ + void setUsePercentage( bool enable ); + + /** + * \return Whether to use percentage values + * \see setUsePercentage + */ + bool usePercentage() const; + + /** + * Set how many decimal digits to display when rendering the data value + * labels. If there are no decimal digits it will not be displayed. + * \param digits The number of decimal digits to use. + */ + void setDecimalDigits( int digits ); + + /** + * \return The number of decimal digits displayed. + */ + int decimalDigits() const; + + /** + * \brief Prepend a prefix string to the data value label + * \sa prefix + */ + void setPrefix( const QString prefix ); + + /** + * \brief Returns the string used as a prefix to the data value text. + * \sa setPrefix + */ + QString prefix() const; + + /** + * \brief Append a suffix string to the data value label + * \sa suffix + */ + void setSuffix( const QString suffix ); + + /** + * \brief Returns the string used as a suffix to the data value text. + * \sa setSuffix + */ + QString suffix() const; + + /** + * \brief display a string label instead of the original data value label + * Supports HTML code. + * \sa dataLabel + */ + void setDataLabel( const QString label ); + + /** + * \brief Returns the string displayed instead of the data value label + * \sa setDataLabel + */ + QString dataLabel() const; + + /** + * \return Whether data values not different from their predecessors are drawn. + */ + bool showRepetitiveDataLabels() const; + + /** + * + * Set whether data value labels not different from their predecessors should be drawn. + * \param showRepetitiveDataLabels Whether data value not different from their predecessors are drawn. + */ + void setShowRepetitiveDataLabels( bool showRepetitiveDataLabels ); + + /** + * \return Whether data value texts overlapping other data value texts of the same diagram are drawn. + */ + bool showOverlappingDataLabels() const; + + /** + * + * Set whether data value texts overlapping other data value texts of the same diagram should be drawn. + * \param showOverlappingDataLabels Whether data texts overlapping other data value texts of the same diagram are drawn. + */ + void setShowOverlappingDataLabels( bool showOverlappingDataLabels ); + + /** + * \cond PLANNED_FOR_FUTURE + * + * These method are planned for future versions of KD Chart, + * so they are not part of the documented API yet. + * + */ + void setPowerOfTenDivisor( int powerOfTenDivisor ); + int powerOfTenDivisor() const; + /** + * \endcond + */ + + + /** + * \cond PLANNED_FOR_FUTURE + * + * These method are planned for future versions of KD Chart, + * so they are not part of the documented API yet. + */ + void setShowInfinite( bool infinite ); + bool showInfinite() const; + /** + * \endcond + */ + + /** + * \brief Defines the relative positioning of the data value labels for negative values. + * + * The position is specified in relation to the respective data value point, or in + * relation to the respective data representation area, that's one area segment in + * a LineDiagram showing areas, or one bar in a BarDiagram, one pie slice ... + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa negativePosition + */ + void setNegativePosition( const RelativePosition& relPosition ); + + /** + * \brief Return the relative positioning of the data value labels + * \sa setNegativePosition + */ + const RelativePosition negativePosition() const; + + /** + * \brief Defines the relative position of the data value labels for positive values. + * + * The position is specified in relation to the respective data value point, or in + * relation to the respective data representation area, that's one area segment in + * a LineDiagram showing areas, or one bar in a BarDiagram, one pie slice ... + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa positivePosition + */ + void setPositivePosition( const RelativePosition& relPosition ); + + /** + * \brief Return the relative positioning of the data value labels + * \sa setPositivePosition + */ + const RelativePosition positivePosition() const; + + const RelativePosition position( bool positive ) const + { + return positive ? positivePosition() : negativePosition(); + } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( DataValueAttributes ) + +}; // End of class DataValueAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::DataValueAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::DataValueAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::DataValueAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::DataValueAttributes ) + +#endif // KDCHARTDATAVALUEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel new file mode 100644 index 00000000..59485e6d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel @@ -0,0 +1 @@ +#include "KDChartDatasetProxyModel.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel.h b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel.h new file mode 100644 index 00000000..bbe26c38 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetProxyModel.h @@ -0,0 +1,188 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTDATASETPROXYMODEL_H +#define KDCHARTDATASETPROXYMODEL_H + +#include +#include + +#include "kdchart_export.h" + +namespace KDChart { + + class IndexOutOfBoundsException; + + typedef QVector DatasetDescriptionVector; + + /** DatasetProxyModel takes a KDChart dataset configuration and translates + it into a filtering proxy model. + + The resulting model will only contain the part of the model that is + selected by the dataset, and the according row and column header + data. + + Currently, this model is implemented for table models only. The way it + would work with models representing a tree is to be decided. + + The column selection is configured by passing a dataset description + vector to the model. This vector (of integers) is supposed to have one + value for each column of the original model. If the value at position + x is -1, column x of the original model is not included in the + dataset. If it is between 0 and (columnCount() -1), it is the column + the source column is mapped to in the resulting model. Any other value + is an error. + */ + class KDCHART_EXPORT DatasetProxyModel : public QSortFilterProxyModel + { + Q_OBJECT + public: + /** Create a DatasetProxyModel. + Without further configuration, this model is invalid. + @see setDatasetDescriptionVector + */ + explicit DatasetProxyModel ( QObject* parent = 0 ); + + QModelIndex buddy( const QModelIndex& index ) const; + + Qt::ItemFlags flags( const QModelIndex& index ) const; + + QModelIndex index( int row, int column, + const QModelIndex &parent = QModelIndex() ) const; + QModelIndex parent(const QModelIndex &child ) const; + + /** Implements the mapping from the source to the proxy indexes. */ + QModelIndex mapFromSource ( const QModelIndex & sourceIndex ) const; + + /** Implements the mapping from the proxy to the source indexes. */ + QModelIndex mapToSource ( const QModelIndex& proxyIndex ) const; + + /** Overloaded from base class. */ + QVariant data(const QModelIndex &index, int role) const; + + /** Overloaded from base class. */ + bool setData( const QModelIndex& index, const QVariant& value, int role ); + + /** Overloaded from base class. */ + QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + + /** Overloaded from base class. */ + void setSourceModel(QAbstractItemModel *sourceModel); + + /** Set the root index of the table in + the source model */ + void setSourceRootIndex(const QModelIndex& rootIdx); + + + public Q_SLOTS: + /** Reset all dataset description. + After that, the result of the proxying is an empty model (a new + dataset description needs to be set to achieve a non-empty result). + */ + void resetDatasetDescriptions(); + + /** Configure the dataset selection for the columns. + Every call to this method resets the previous dataset + description. + */ + void setDatasetColumnDescriptionVector ( const DatasetDescriptionVector& columnConfig ); + + /** Configure the dataset selection for the rows. + Every call to this method resets the previous dataset + description. + */ + void setDatasetRowDescriptionVector ( const DatasetDescriptionVector& rowConfig ); + + /** Convenience method to configure rows and columns in one step. */ + void setDatasetDescriptionVectors ( + const DatasetDescriptionVector& rowConfig, + const DatasetDescriptionVector& columnConfig ); + + // FIXME: add convenience methods to configure common dataset + // selections (like rectangular areas etc) + + protected: + /** Decide whether the column is accepted. */ + bool filterAcceptsColumn ( int sourceColumn, + const QModelIndex & ) const; + + + /** Decide whether the row is accepted. */ + bool filterAcceptsRow ( int source_row, const QModelIndex & source_parent ) const; + + private: + + /** Map a proxy column to a source column. */ + int mapProxyColumnToSource ( const int& proxyColumn ) const; + + /** Map a source column to a proxy column. */ + int mapSourceColumnToProxy ( const int& sourceColumn ) const; + + /** Map a proxy row to a source row. */ + int mapProxyRowToSource ( const int& proxyRow ) const; + + /** Map a source row to a proxy row. */ + int mapSourceRowToProxy ( const int& sourceRow ) const; + + /** Initialize the transformation vectors from the dataset + description. + + The input parameter "Configuration" is a vector that specifies + what srce column will be mapped to what proxy column. Example: + + position: [0][1][2] + value: [2][0][1] + + This will map the source column 2 to proxy column 0, source 0 to + proxy 1, and source 1 to proxy 2. Source needs to have at least 2 + column. The source-to-proxy mapping looks the same, except that it + may contain values of -1, which means this column is not part of + the resulting model. The values in the configuration vector must + be unique (otherwise, a 1-to-1 mapping in both directions is + impossible). + + sourceCount is the number of columns in the source model. The proxy-to-source map has + as many elements as the proxy has columns, the source-to-proxy map + has as many elements as the source has columns. Same goes for rows + (the mapping logic is the same). + + */ + void initializeDatasetDecriptors ( + const DatasetDescriptionVector& inConfiguration, + int sourceCount, + DatasetDescriptionVector& outSourceToProxyMap, + DatasetDescriptionVector& outProxyToSourceMap ); + + DatasetDescriptionVector mColSrcToProxyMap; + DatasetDescriptionVector mColProxyToSrcMap; + DatasetDescriptionVector mRowSrcToProxyMap; + DatasetDescriptionVector mRowProxyToSrcMap; + + int mProxyRowCount; + int mProxyColumnCount; + QModelIndex mRootIndex; + }; + +} + + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelector.h b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelector.h new file mode 100644 index 00000000..02ff90a0 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelector.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTDATASETSELECTOR_H +#define KDCHARTDATASETSELECTOR_H + +#include + +#include "KDChartDatasetProxyModel.h" + + +/** + * \cond PRIVATE_API_DOCU + * + * ( This class is used internally by DatasetSelectorWidget. ) + */ +QT_BEGIN_NAMESPACE +namespace Ui { + class DatasetSelector; +} +QT_END_NAMESPACE +/** + * \endcond + */ + +namespace KDChart { + + class KDCHART_EXPORT DatasetSelectorWidget : public QFrame + { + Q_OBJECT + + public: + explicit DatasetSelectorWidget ( QWidget* parent = 0 ); + ~DatasetSelectorWidget(); + + public Q_SLOTS: + void setSourceRowCount ( const int& rowCount ); + void setSourceColumnCount ( const int& columnCount ); + + Q_SIGNALS: + void configureDatasetProxyModel ( + const DatasetDescriptionVector& rowConfig, + const DatasetDescriptionVector& columnConfig ); + + void mappingDisabled (); + + private Q_SLOTS: + void on_sbStartColumn_valueChanged ( int ); + void on_sbStartRow_valueChanged ( int ); + void on_sbColumnCount_valueChanged( int ); + void on_sbRowCount_valueChanged( int ); + void on_cbReverseRows_stateChanged ( int ); + void on_cbReverseColumns_stateChanged ( int ); + void on_groupBox_toggled ( bool ); + + + private: + void resetDisplayValues (); + void calculateMapping(); + + Ui::DatasetSelector* mUi; + int mSourceRowCount; + int mSourceColumnCount; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelectorWidget b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelectorWidget new file mode 100644 index 00000000..44d6d67c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDatasetSelectorWidget @@ -0,0 +1 @@ +#include "KDChartDatasetSelector.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver b/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver new file mode 100644 index 00000000..68b7bcf7 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver @@ -0,0 +1 @@ +#include "KDChartDiagramObserver.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver.h b/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver.h new file mode 100644 index 00000000..9a1e0bc0 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartDiagramObserver.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTDIAGRAMOBSERVER_H_ +#define __KDCHARTDIAGRAMOBSERVER_H_ + +#include "KDChartGlobal.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QAbstractItemModel; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractDiagram; + + /** + * \brief A DiagramObserver watches the associated diagram for + * changes and deletion and emits corresponsing signals. + */ + class KDCHART_EXPORT DiagramObserver : public QObject + { + Q_OBJECT + public: + /** + * Constructs a new observer observing the given diagram. + */ + explicit DiagramObserver( AbstractDiagram * diagram, QObject* parent = 0 ); + ~DiagramObserver(); + + const AbstractDiagram* diagram() const; + AbstractDiagram* diagram(); + + Q_SIGNALS: + /** This signal is emitted immediately before the diagram is + * being destroyed. */ + void diagramDestroyed( AbstractDiagram* diagram ); + /** Emitted when a diagram is being destroyed, but before its data is invalidated **/ + void diagramAboutToBeDestroyed( AbstractDiagram* diagram ); + /** This signal is emitted whenever the data of the diagram changes. */ + void diagramDataChanged( AbstractDiagram* diagram ); + /** This signal is emitted whenever any of the data of the diagram was set (un)hidden. */ + void diagramDataHidden( AbstractDiagram* diagram ); + /** This signal is emitted whenever the attributes of the diagram change. */ + void diagramAttributesChanged( AbstractDiagram* diagram ); + + private Q_SLOTS: + void slotDestroyed(QObject*); + void slotAboutToBeDestroyed(); + void slotHeaderDataChanged(Qt::Orientation,int,int); + void slotDataChanged(QModelIndex,QModelIndex); + void slotDataChanged(); + void slotDataHidden(); + void slotAttributesChanged(); + void slotAttributesChanged(QModelIndex,QModelIndex); + void slotModelsChanged(); + + private: + void init(); + + AbstractDiagram* m_diagram; + QPointer m_model; + QPointer m_attributesmodel; + }; +} + +#endif // KDChartDiagramObserver_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartEnums b/massif-visualizer/kdchart/include/KDChart/KDChartEnums new file mode 100644 index 00000000..25a03978 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartEnums @@ -0,0 +1 @@ +#include "KDChartEnums.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartEnums.h b/massif-visualizer/kdchart/include/KDChart/KDChartEnums.h new file mode 100644 index 00000000..e90ab2aa --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartEnums.h @@ -0,0 +1,346 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTENUMS_H__ +#define __KDCHARTENUMS_H__ + +#include "KDChartGlobal.h" + +#include +#include +#include + +/** \file KDChartEnums.h + \brief Definition of global enums. + */ + +/** + Project global class providing some enums needed both by KDChartParams + and by KDChartCustomBox. + */ +class KDCHART_EXPORT KDChartEnums :public QObject +{ + Q_OBJECT + Q_ENUMS( TextLayoutPolicy ) + Q_ENUMS( AreaName ) + Q_ENUMS( PositionFlag ) + +public: + /** + GranularitySequence specifies the values, that may be applied, + to determine a step width within a given data range. + + \note Granularity with can be set for Linear axis calculation mode only, + there is no way to specify a step width for Logarithmic axes. + + Value occurring in the GranularitySequence names only are showing + their respective relation ship. For real data they will most times not + be used directly, but be multiplied by positive (or negative, resp.) + powers of ten. + + A granularity sequence is a sequence of values from the following set: + 1, 1.25, 2, 2.5, 5. + + The reason for using one of the following three pre-defined granularity + sequences (instead of just using the best matching step width) is to + follow a simple rule: If scaling becomes finer (== smaller step width) + no value, that has been on a grid line before, shall loose its line + and be NOT on a grid line anymore! + + This means: Smaller step width may not remove any grid lines, but it + may add additional lines in between. + + \li \c GranularitySequence_10_20 Step widths can be 1, or 2, but they never can be 2.5 nor 5, nor 1.25. + \li \c GranularitySequence_10_50 Step widths can be 1, or 5, but they never can be 2, nor 2.5, nor 1.25. + \li \c GranularitySequence_25_50 Step widths can be 2.5, or 5, but they never can be 1, nor 2, nor 1.25. + \li \c GranularitySequence_125_25 Step widths can be 1.25 or 2.5 but they never can be 1, nor 2, nor 5. + \li \c GranularitySequenceIrregular Step widths can be all of these values: 1, or 1.25, or 2, or 2.5, or 5. + + \note When ever possible, try to avoid using GranularitySequenceIrregular! + Allowing all possible step values, using this granularity sequence involves a + serious risk: Your users might be irritated due to 'jumping' grid lines, when step size + is changed from 2.5 to 2 (or vice versa, resp.). + In case you still want to use GranularitySequenceIrregular just make sure to NOT draw + any sub-grid lines, because in most cases you will get not-matching step widths for + the sub-grid. + In short: GranularitySequenceIrregular can safely be used if your data range is not + changing at all AND (b) you will not allow the coordinate plane to be zoomed + AND (c) you are not displaying any sub-grid lines. + + Since you probably like having the value 1 as an allowed step width, + the granularity sequence decision boils down to a boolean question: + \li To get ten divided by five you use GranularitySequence_10_20, while + \li for having it divided by two GranularitySequence_10_50 is your choice. + + */ + enum GranularitySequence { + GranularitySequence_10_20, + GranularitySequence_10_50, + GranularitySequence_25_50, + GranularitySequence_125_25, + GranularitySequenceIrregular }; + + /** + Converts the specified granularity sequence enum to a + string representation. + + \param sequence the granularity sequence enum to convert + \return the string representation of the granularity sequence + */ + static QString granularitySequenceToString( GranularitySequence sequence ) { + switch ( sequence ) { + case GranularitySequence_10_20: + return QString::fromLatin1("GranularitySequence_10_20"); + case GranularitySequence_10_50: + return QString::fromLatin1("GranularitySequence_10_50"); + case GranularitySequence_25_50: + return QString::fromLatin1("GranularitySequence_25_50"); + case GranularitySequence_125_25: + return QString::fromLatin1("GranularitySequence_125_25"); + case GranularitySequenceIrregular: + return QString::fromLatin1("GranularitySequenceIrregular"); + } + Q_ASSERT( !"Unknown GranularitySequenceValue" ); + return QString::fromLatin1("GranularitySequence_10_20"); + } + + + /** + Converts the specified string to a granularity sequence enum value. + + \param string the string to convert + \return the granularity sequence enum value + */ + static GranularitySequence stringToGranularitySequence( const QString& string ) { + if ( string == QString::fromLatin1("GranularitySequence_10_20") ) + return GranularitySequence_10_20; + if ( string == QString::fromLatin1("GranularitySequence_10_50") ) + return GranularitySequence_10_50; + if ( string == QString::fromLatin1("GranularitySequence_25_50") ) + return GranularitySequence_25_50; + if ( string == QString::fromLatin1("GranularitySequence_125") ) + return GranularitySequence_125_25; + if ( string == QString::fromLatin1("GranularitySequenceIrregular") ) + return GranularitySequenceIrregular; + // default, should not happen + return GranularitySequence_10_20; + } + + + /** + Text layout policy: what to do if text that is to be drawn would + cover neighboring text or neighboring areas. + + \li \c LayoutJustOverwrite Just ignore the layout collision and write the text nevertheless. + \li \c LayoutPolicyRotate Try counter-clockwise rotation to make the text fit into the space. + \li \c LayoutPolicyShiftVertically Shift the text baseline upwards (or downwards, resp.) and draw a connector line between the text and its anchor. + \li \c LayoutPolicyShiftHorizontally Shift the text baseline to the left (or to the right, resp.) and draw a connector line between the text and its anchor. + \li \c LayoutPolicyShrinkFontSize Reduce the text font size. + + \sa KDChartParams::setPrintDataValues + */ + enum TextLayoutPolicy { LayoutJustOverwrite, + LayoutPolicyRotate, + LayoutPolicyShiftVertically, + LayoutPolicyShiftHorizontally, + LayoutPolicyShrinkFontSize }; + + /** + Converts the specified text layout policy enum to a + string representation. + + \param type the text layout policy to convert + \return the string representation of the text layout policy enum + */ + static QString layoutPolicyToString( TextLayoutPolicy type ); + + + /** + Converts the specified string to a text layout policy enum value. + + \param string the string to convert + \return the text layout policy enum value + */ + static TextLayoutPolicy stringToLayoutPolicy( const QString& string ); + + + /** + Numerical values of the static KDChart::Position instances, + for using a Position::value() with a switch () statement. + + \sa Position + */ + enum PositionValue { + PositionUnknown = 0, + PositionCenter = 1, + PositionNorthWest = 2, + PositionNorth = 3, + PositionNorthEast = 4, + PositionEast = 5, + PositionSouthEast = 6, + PositionSouth = 7, + PositionSouthWest = 8, + PositionWest = 9, + PositionFloating =10 + }; + + + /** + Measure calculation mode: the way how the absolute value of a KDChart::Measure is determined during KD Chart's internal geometry calculation time. + + KDChart::Measure values either are relative (calculated in relation to a given AbstractArea), or they are absolute (used as fixed values). + + Values stored in relative measure always are interpreted as per-mille of a reference area's height (or width, resp.) depending on the orientation set for the KDChart::Measure. + + \li \c MeasureCalculationModeAbsolute Value set by setValue() is absolute, to be used unchanged. + \li \c MeasureCalculationModeRelative Value is relative, the reference area is specified by setReferenceArea(), and orientation specified by setOrientation(). + \li \c MeasureCalculationModeAuto Value is relative, KD Chart will automatically determine which reference area to use, and it will determine the orientation too. + \li \c MeasureCalculationModeAutoArea Value is relative, Orientation is specified by setOrientation(), and KD Chart will automatically determine which reference area to use. + \li \c MeasureCalculationModeAutoOrientation Value is relative, Area is specified by setReferenceArea(), and KD Chart will automatically determine which orientation to use. + + \sa KDChart::Measure::setCalculationMode + */ + enum MeasureCalculationMode { MeasureCalculationModeAbsolute, + MeasureCalculationModeRelative, + MeasureCalculationModeAuto, + MeasureCalculationModeAutoArea, + MeasureCalculationModeAutoOrientation }; + + /** + Converts the specified measure calculation mode enum to a + string representation. + + \param mode the measure calculation mode to convert + \return the string representation of the Measure calculation mode enum + */ + static QString measureCalculationModeToString( MeasureCalculationMode mode ) { + switch ( mode ) { + case MeasureCalculationModeAbsolute: + return QString::fromLatin1("MeasureCalculationModeAbsolute"); + case MeasureCalculationModeAuto: + return QString::fromLatin1("MeasureCalculationModeAuto"); + case MeasureCalculationModeAutoArea: + return QString::fromLatin1("MeasureCalculationModeAutoArea"); + case MeasureCalculationModeAutoOrientation: + return QString::fromLatin1("MeasureCalculationModeAutoOrientation"); + case MeasureCalculationModeRelative: + return QString::fromLatin1("MeasureCalculationModeRelative"); + } + Q_ASSERT( !"unhandled MeasureCalculationMode" ); + return QString::fromLatin1("MeasureCalculationModeAuto"); + } + + + /** + Converts the specified string to a measure calculation mode enum value. + + \param string the string to convert + \return the measure calculation mode enum value + */ + static MeasureCalculationMode stringToMeasureCalculationMode( const QString& string ) { + if ( string == QString::fromLatin1("MeasureCalculationModeAbsolute") ) + return MeasureCalculationModeAbsolute; + if ( string == QString::fromLatin1("MeasureCalculationModeAuto") ) + return MeasureCalculationModeAuto; + if ( string == QString::fromLatin1("MeasureCalculationModeAutoArea") ) + return MeasureCalculationModeAutoArea; + if ( string == QString::fromLatin1("MeasureCalculationModeAutoOrientation") ) + return MeasureCalculationModeAutoOrientation; + if ( string == QString::fromLatin1("MeasureCalculationModeRelative") ) + return MeasureCalculationModeRelative; + // default, should not happen + return MeasureCalculationModeAuto; + } + + /** + Measure orientation mode: the way how the absolute value of a KDChart::Measure is determined during KD Chart's internal geometry calculation time. + + KDChart::Measure values either are relative (calculated in relation to a given AbstractArea), or they are absolute (used as fixed values). + + Values stored in relative measure take into account the width (and/or the height, resp.) of a so-called reference area, + that is either specified by KDChart::Measure::setReferenceArea, or determined by KD Chart automatically, respectively. + + \li \c MeasureOrientationAuto Value is calculated, based upon the width (or on the height, resp.) of the reference area: KD Chart will automatically determie an appropriate way. + \li \c MeasureOrientationHorizontal Value is calculated, based upon the width of the reference area. + \li \c MeasureOrientationVertical Value is calculated, based upon the height of the reference area. + \li \c MeasureOrientationMinimum Value is calculated, based upon the width (or on the height, resp.) of the reference area - which ever is smaller. + \li \c MeasureOrientationMaximum Value is calculated, based upon the width (or on the height, resp.) of the reference area - which ever is smaller. + + \sa KDChart::Measure::setOrientationMode + */ + enum MeasureOrientation { MeasureOrientationAuto, + MeasureOrientationHorizontal, + MeasureOrientationVertical, + MeasureOrientationMinimum, + MeasureOrientationMaximum }; + + /** + Converts the specified measure orientation enum to a + string representation. + + \param mode the measure orientation to convert + \return the string representation of the measure orientation enum + */ + static QString measureOrientationToString( MeasureOrientation mode ) { + switch ( mode ) { + case MeasureOrientationAuto: + return QString::fromLatin1("MeasureOrientationAuto"); + case MeasureOrientationHorizontal: + return QString::fromLatin1("MeasureOrientationHorizontal"); + case MeasureOrientationVertical: + return QString::fromLatin1("MeasureOrientationVertical"); + case MeasureOrientationMinimum: + return QString::fromLatin1("MeasureOrientationMinimum"); + case MeasureOrientationMaximum: + return QString::fromLatin1("MeasureOrientationMaximum"); + } + Q_ASSERT( !"Unknown MeasureOrientation value" ); + return QString::fromLatin1("MeasureOrientationAuto"); + } + + + /** + Converts the specified string to a measure orientation enum value. + + \param string the string to convert + \return the measure orientation enum value + */ + static MeasureOrientation stringToMeasureOrientation( const QString& string ) { + if ( string == QString::fromLatin1("MeasureOrientationAuto") ) + return MeasureOrientationAuto; + if ( string == QString::fromLatin1("MeasureOrientationHorizontal") ) + return MeasureOrientationHorizontal; + if ( string == QString::fromLatin1("MeasureOrientationVertical") ) + return MeasureOrientationVertical; + if ( string == QString::fromLatin1("MeasureOrientationMinimum") ) + return MeasureOrientationMinimum; + if ( string == QString::fromLatin1("MeasureOrientationMaximum") ) + return MeasureOrientationMaximum; + // default, should not happen + return MeasureOrientationAuto; + } + + +}; + + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes new file mode 100644 index 00000000..18e96ca9 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes @@ -0,0 +1 @@ +#include "KDChartFrameAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes.h new file mode 100644 index 00000000..cf23824e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartFrameAttributes.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTFRAMEATTRIBUTES_H +#define KDCHARTFRAMEATTRIBUTES_H + +#include +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A set of attributes for frames around items + */ +class KDCHART_EXPORT FrameAttributes +{ +public: + FrameAttributes(); + FrameAttributes( const FrameAttributes& ); + FrameAttributes &operator= ( const FrameAttributes& ); + + ~FrameAttributes(); + + void setVisible( bool visible ); + bool isVisible() const; + + void setPen( const QPen & pen ); + QPen pen() const; + + void setCornerRadius( qreal radius ); + qreal cornerRadius() const; + + void setPadding( int padding ); + int padding() const; + + bool operator==( const FrameAttributes& ) const; + inline bool operator!=( const FrameAttributes& other ) const { return !operator==(other); } + +private: + + KDCHART_DECLARE_PRIVATE_BASE_VALUE( FrameAttributes ) +}; // End of class FrameAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::FrameAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::FrameAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::FrameAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::FrameAttributes ) + +#endif // KDCHARTFRAMEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartGlobal b/massif-visualizer/kdchart/include/KDChart/KDChartGlobal new file mode 100644 index 00000000..2de1607d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartGlobal @@ -0,0 +1 @@ +#include "KDChartGlobal.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartGlobal.h b/massif-visualizer/kdchart/include/KDChart/KDChartGlobal.h new file mode 100644 index 00000000..69ee16e0 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartGlobal.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ +/** \file KDChartGlobal +\brief Contains KDChart macros. + +Contains KDChart macros. */ + +#ifndef __KDCHARTGLOBAL_H__ +#define __KDCHARTGLOBAL_H__ + +#include + +#include "kdchart_export.h" + +#ifndef KDAB_SET_OBJECT_NAME +template +inline T & __kdab__dereference_for_methodcall( T & o ) { + return o; +} + +template +inline T & __kdab__dereference_for_methodcall( T * o ) { + return *o; +} + +#define KDAB_SET_OBJECT_NAME( x ) __kdab__dereference_for_methodcall( x ).setObjectName( QLatin1String( #x ) ) +#endif + +#define KDCHART_DECLARE_PRIVATE_DERIVED( X ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private * ); \ +private: \ + void init(); + +#define KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( X, ParentType ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private *, ParentType ); \ +private: \ + void init(); + +#define KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( X ) \ + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( X, QWidget* ) + +#define KDCHART_DECLARE_PRIVATE_BASE_VALUE( X ) \ +public: \ + inline void swap( X & other ) { qSwap( _d, other._d ); } \ +protected: \ + class Private; \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( X ) \ +public: \ + class Private; \ +protected: \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ + explicit inline X( Private * ); \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( X ) \ +public: \ + class Private; \ +protected: \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ + explicit inline X( Private *, QWidget* ); \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DERIVED_PRIVATE_FOOTER( CLASS, PARENT ) \ +inline CLASS::CLASS( Private * p ) \ + : PARENT( p ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ +{ return static_cast( PARENT::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ +{ return static_cast( PARENT::d_func() ); } + + +#define KDCHART_DECLARE_DERIVED_DIAGRAM( X, PLANE ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private * ); \ + explicit inline X( Private *, QWidget *, PLANE * ); \ +private: \ + void init(); + +#define KDCHART_IMPL_DERIVED_DIAGRAM( CLASS, PARENT, PLANE ) \ +inline CLASS::CLASS( Private * p ) \ + : PARENT( p ) { init(); } \ +inline CLASS::CLASS( \ + Private * p, QWidget* parent, PLANE * plane ) \ + : PARENT( p, parent, plane ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ + { return static_cast( PARENT::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ + { return static_cast( PARENT::d_func() ); } + + +#define KDCHART_IMPL_DERIVED_PLANE( CLASS, BASEPLANE ) \ +inline CLASS::CLASS( Private * p, Chart* parent ) \ + : BASEPLANE( p, parent ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ + { return static_cast( BASEPLANE::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ + { return static_cast( BASEPLANE::d_func() ); } + + +#include // qSwap +#ifndef QT_NO_STL +#include +#define KDCHART_DECLARE_SWAP_SPECIALISATION( X ) \ +QT_BEGIN_NAMESPACE \ + template <> inline void qSwap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ +QT_END_NAMESPACE \ + namespace std { \ + template <> inline void swap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ + } +#else +#define KDCHART_DECLARE_SWAP_SPECIALISATION( X ) \ +QT_BEGIN_NAMESPACE \ + template <> inline void qSwap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ +QT_END_NAMESPACE +#endif + +#define KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( X ) \ + KDCHART_DECLARE_SWAP_SPECIALISATION( X ) + +#define KDCHART_DECLARE_SWAP_BASE( X ) \ +protected: \ + void doSwap( X& other ) \ + { qSwap( _d, other._d); } + +#define KDCHART_DECLARE_SWAP_DERIVED( X ) \ + void swap( X& other ) { doSwap( other ); } + +#if defined(Q_OS_WIN) && defined(QT_DLL) +#if defined(_MSC_VER) && _MSC_VER >= 1300 +// workaround http://support.microsoft.com/default.aspx?scid=kb;en-us;309801 +#include +#include +template class Q_DECL_IMPORT QVector; +#endif +#endif + +#include + +namespace KDChart { + +enum DisplayRoles { + DatasetPenRole = 0x0A79EF95, + DatasetBrushRole, + DataValueLabelAttributesRole, + ThreeDAttributesRole, + LineAttributesRole, + ThreeDLineAttributesRole, + BarAttributesRole, + StockBarAttributesRole, + ThreeDBarAttributesRole, + PieAttributesRole, + ThreeDPieAttributesRole, + DataHiddenRole, + ValueTrackerAttributesRole, + CommentRole +}; +} + +#endif // __KDCHARTGLOBAL_H__ diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes new file mode 100644 index 00000000..ea521b7d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes @@ -0,0 +1 @@ +#include "KDChartGridAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes.h new file mode 100644 index 00000000..0e541524 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartGridAttributes.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTGRIDATTRIBUTES_H +#define KDCHARTGRIDATTRIBUTES_H + +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of grids + */ +class KDCHART_EXPORT GridAttributes +{ +public: + GridAttributes(); + GridAttributes( const GridAttributes& ); + GridAttributes &operator= ( const GridAttributes& ); + + ~GridAttributes(); + + void setGridVisible( bool visible ); + bool isGridVisible() const; + + /** + * When this is enabled, grid lines are drawn only where axis annotations are. + * Otherwise annotations are disregarded as far as the grid is concerned. + * + * The default is false. + */ + void setLinesOnAnnotations( bool ); + bool linesOnAnnotations() const; + + void setGridStepWidth( qreal stepWidth = 0.0 ); + qreal gridStepWidth() const; + + void setGridSubStepWidth( qreal subStepWidth = 0.0 ); + qreal gridSubStepWidth() const; + + /** + * Specify which granularity sequence is to be used to find a matching + * grid granularity. + * + * See details explained at KDChartEnums::GranularitySequence. + * + * You might also want to use setAdjustBoundsToGrid for fine-tuning the + * start/end value. + * + * \sa setAdjustBoundsToGrid, GranularitySequence + */ + void setGridGranularitySequence( KDChartEnums::GranularitySequence sequence ); + KDChartEnums::GranularitySequence gridGranularitySequence() const; + + /** + * By default visible bounds of the data area are adjusted to match + * a main grid line. + * If you set the respective adjust flag to false the bound will + * not start at a grid line's value but it will be the exact value + * of the data range set. + * + * \sa CartesianCoordinatePlane::setHorizontalRange + * \sa CartesianCoordinatePlane::setVerticalRange + */ + void setAdjustBoundsToGrid( bool adjustLower, bool adjustUpper ); + bool adjustLowerBoundToGrid() const; + bool adjustUpperBoundToGrid() const; + + void setGridPen( const QPen & pen ); + QPen gridPen() const; + + void setSubGridVisible( bool visible ); + bool isSubGridVisible() const; + + void setSubGridPen( const QPen & pen ); + QPen subGridPen() const; + + void setOuterLinesVisible( bool visible ); + bool isOuterLinesVisible() const; + + void setZeroLinePen( const QPen & pen ); + QPen zeroLinePen() const; + + bool operator==( const GridAttributes& ) const; + inline bool operator!=( const GridAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( GridAttributes ) +}; // End of class GridAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::GridAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::GridAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::GridAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::GridAttributes ) + +#endif // KDCHARTGRIDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter b/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter new file mode 100644 index 00000000..42c92bae --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter @@ -0,0 +1 @@ +#include "KDChartHeaderFooter.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter.h b/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter.h new file mode 100644 index 00000000..c2005f46 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartHeaderFooter.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTHEADERFOOTER_H +#define KDCHARTHEADERFOOTER_H + +#include "KDChartTextArea.h" +#include "KDChartPosition.h" + +namespace KDChart { + + class Chart; + class TextAttributes; + +/** + * @brief A header or footer displaying text above or below charts + */ +class KDCHART_EXPORT HeaderFooter : public TextArea +{ + Q_OBJECT + + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( HeaderFooter, Chart* ) + +public: + HeaderFooter( Chart* parent = 0 ); + virtual ~HeaderFooter(); + + virtual HeaderFooter * clone() const; + + bool compare( const HeaderFooter& other ) const; + + enum HeaderFooterType{ Header, + Footer }; + + void setType( HeaderFooterType type ); + HeaderFooterType type() const; + + void setPosition( Position position ); + Position position() const; + + void setParent( QObject* parent ); + +Q_SIGNALS: + void destroyedHeaderFooter( HeaderFooter* ); + void positionChanged( HeaderFooter* ); + +}; // End of class HeaderFooter + +} + + +#endif // KDCHARTHEADERFOOTER_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartHorizontalLineLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartHorizontalLineLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartHorizontalLineLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartKDChartEnums b/massif-visualizer/kdchart/include/KDChart/KDChartKDChartEnums new file mode 100644 index 00000000..25a03978 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartKDChartEnums @@ -0,0 +1 @@ +#include "KDChartEnums.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLayoutItems.h b/massif-visualizer/kdchart/include/KDChart/KDChartLayoutItems.h new file mode 100644 index 00000000..e5945714 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLayoutItems.h @@ -0,0 +1,479 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLAYOUTITEMS_H +#define KDCHARTLAYOUTITEMS_H + +#include +#include +#include +#include +#include +#include + +#include "KDChartTextAttributes.h" +#include "KDChartMarkerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class KDTextDocument; +QT_END_NAMESPACE + +// TODO remove +QRectF rotatedRect( const QRectF& pt, qreal rotation ); + +namespace KDChart { + class AbstractDiagram; + class PaintContext; + + /** + * Base class for all layout items of KD Chart + * \internal + */ + class KDCHART_EXPORT AbstractLayoutItem : public QLayoutItem + { + public: + AbstractLayoutItem( Qt::Alignment itemAlignment = 0 ) : + QLayoutItem( itemAlignment ), + mParent( 0 ), + mParentLayout( 0 ) {} + + /** + * Default impl: just call paint. + * + * Derived classes like KDChart::AbstractArea are providing + * additional action here. + */ + virtual void paintAll( QPainter& painter ); + + virtual void paint( QPainter* ) = 0; + + virtual void paintCtx( PaintContext* context ); + virtual void setParentWidget( QWidget* widget ); + virtual void sizeHintChanged() const; + + void setParentLayout( QLayout* lay ) + { + mParentLayout = lay; + } + QLayout* parentLayout() + { + return mParentLayout; + } + void removeFromParentLayout() + { + if ( mParentLayout ) { + if ( widget() ) + mParentLayout->removeWidget( widget() ); + else + mParentLayout->removeItem( this ); + } + } + protected: + QWidget* mParent; + QLayout* mParentLayout; + }; + + /** + * Layout item showing a text + *\internal + */ + class KDCHART_EXPORT TextLayoutItem : public AbstractLayoutItem + { + public: + TextLayoutItem(); + TextLayoutItem( const QString& text, + const TextAttributes& attributes, + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation, + Qt::Alignment alignment = 0 ); + + void setAutoReferenceArea( const QObject* area ); + const QObject* autoReferenceArea() const; + + void setText(const QString & text); + QString text() const; + + void setTextAlignment( Qt::Alignment ); + Qt::Alignment textAlignment() const; + + void setTextAttributes( const TextAttributes& a ); + TextAttributes textAttributes() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual int marginWidth() const; + + virtual QSize sizeHintUnrotated() const; + + virtual bool intersects( const TextLayoutItem& other, const QPointF& myPos, const QPointF& otherPos ) const; + virtual bool intersects( const TextLayoutItem& other, const QPoint& myPos, const QPoint& otherPos ) const; + + virtual qreal realFontSize() const; + virtual QFont realFont() const; + + virtual void paint( QPainter* ); + + QPolygon boundingPolygon() const; + private: + bool maybeUpdateRealFont() const; + QSize unrotatedSizeHint( const QFont& fnt = QFont() ) const; + QSize unrotatedTextSize( QFont fnt = QFont() ) const; + QSize calcSizeHint( const QFont& font ) const; + int marginWidth( const QSize& textSize ) const; + + qreal fitFontSizeToGeometry() const; + + QRect mRect; + QString mText; + Qt::Alignment mTextAlignment; + TextAttributes mAttributes; + const QObject* mAutoReferenceArea; + KDChartEnums::MeasureOrientation mAutoReferenceOrientation; + mutable QSize cachedSizeHint; + mutable QPolygon mCachedBoundingPolygon; + mutable qreal cachedFontSize; + mutable QFont cachedFont; + }; + + class KDCHART_EXPORT TextBubbleLayoutItem : public AbstractLayoutItem + { + public: + TextBubbleLayoutItem(); + TextBubbleLayoutItem( const QString& text, + const TextAttributes& attributes, + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation, + Qt::Alignment alignment = 0 ); + + ~TextBubbleLayoutItem(); + + void setAutoReferenceArea( const QObject* area ); + const QObject* autoReferenceArea() const; + + void setText(const QString & text); + QString text() const; + + void setTextAttributes( const TextAttributes& a ); + TextAttributes textAttributes() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual void paint( QPainter* painter ); + + protected: + int borderWidth() const; + + private: + TextLayoutItem* const m_text; + }; + + /** + * Layout item showing a data point marker + * \internal + */ + class KDCHART_EXPORT MarkerLayoutItem : public AbstractLayoutItem + { + public: + MarkerLayoutItem( AbstractDiagram* diagram, + const MarkerAttributes& marker, + const QBrush& brush, + const QPen& pen, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + static void paintIntoRect( + QPainter* painter, + const QRect& rect, + AbstractDiagram* diagram, + const MarkerAttributes& marker, + const QBrush& brush, + const QPen& pen ); + + private: + AbstractDiagram* mDiagram; + QRect mRect; + MarkerAttributes mMarker; + QBrush mBrush; + QPen mPen; + }; + + /** + * Layout item showing a coloured line + * \internal + */ + class KDCHART_EXPORT LineLayoutItem : public AbstractLayoutItem + { + public: + LineLayoutItem( AbstractDiagram* diagram, + int length, + const QPen& pen, + Qt::Alignment mLegendLineSymbolAlignment, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + void setLegendLineSymbolAlignment(Qt::Alignment legendLineSymbolAlignment); + virtual Qt::Alignment legendLineSymbolAlignment() const; + + virtual void paint( QPainter* ); + + static void paintIntoRect( + QPainter* painter, + const QRect& rect, + const QPen& pen, + Qt::Alignment lineAlignment); + + private: + AbstractDiagram* mDiagram; + int mLength; + QPen mPen; + QRect mRect; + Qt::Alignment mLegendLineSymbolAlignment; + }; + + /** + * Layout item showing a coloured line and a data point marker + * \internal + */ + class KDCHART_EXPORT LineWithMarkerLayoutItem : public AbstractLayoutItem + { + public: + LineWithMarkerLayoutItem( AbstractDiagram* diagram, + int lineLength, + const QPen& linePen, + int markerOffs, + const MarkerAttributes& marker, + const QBrush& markerBrush, + const QPen& markerPen, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + AbstractDiagram* mDiagram; + QRect mRect; + int mLineLength; + QPen mLinePen; + int mMarkerOffs; + MarkerAttributes mMarker; + QBrush mMarkerBrush; + QPen mMarkerPen; + }; + + + /** + * Layout item showing a horizontal line + * \internal + */ + class KDCHART_EXPORT HorizontalLineLayoutItem : public AbstractLayoutItem + { + public: + HorizontalLineLayoutItem(); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + }; + + /** + * Layout item showing a vertial line + * \internal + */ + class KDCHART_EXPORT VerticalLineLayoutItem : public AbstractLayoutItem + { + public: + VerticalLineLayoutItem(); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + }; + + /** + * @brief An empty layout item + * \internal + * + * The AutoSpacerLayoutItem is automatically put into each corner cell of + * the planeLayout grid: one of its reference-layouts is a QVBoxLayout (for + * the top, or bottom axes resp.), the other one is a QHBoxLayout (for the + * left/right sided axes). + * + * The spacer reserves enough space so all of the AbstractAreas contained + * in the two reference-layouts can display not only their in-bounds + * content but also their overlapping content reaching out of their area. + * + * KD Chart's layouting is applying this schema: +\verbatim + +------------------+-------------------------+-----------------+ + | +--------------+ | +---------------------+ | +-------------+ | + | | | | | QVBoxLayout for | | | | | + | | AUTO | | | the top axis/axes | | | AUTO | | + | | SPACER | | +---------------------+ | | SPACER | | + | | ITEM | | | | | | ITEM | | + | | | | | | | | | | + | +--------------+ | +---------------------+ | +-------------+ | + +------------------+-------------------------+-----------------+ + | +--------+-----+ | +---------------------+ | +-------+-----+ | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | QHBox- | | | | | | | Right | | | + | | Layout | | | | | | | | | | + | | | | | | | | | axes | | | + | | for | | | | | | | | | | + | | | | | | | | | layout| | | + | | the | | | | DIAGRAM(s) | | | | | | + | | | | | | | | | | | | + | | left | | | | | | | | | | + | | | | | | | | | | | | + | | axis | | | | | | | | | | + | | or | | | | | | | | | | + | | axes | | | | | | | | | | + | | | | | | | | | | | | + | +--------+-----+ | +---------------------+ | +-------+-----+ | + +------------------+-------------------------+-----------------+ + | +--------------+ | +---------------------+ | +-------------+ | + | | | | | QVBoxLayout for | | | | | + | | AUTO | | | the bottom axes | | | AUTO | | + | | SPACER | | +---------------------+ | | SPACER | | + | | ITEM | | | | | | ITEM | | + | | | | | | | | | | + | +--------------+ | +---------------------+ | +-------------+ | + +------------------+-------------------------+-----------------+ +\endverbatim + * + * A typical use case is an Abscissa axis with long labels: +\verbatim + 2 -| + | + 1 -| + | + 0 -+------------------------------------ + | | | | | + Monday Tuesday Wednesday Thursday Friday +\endverbatim + * The last letters of the word "Friday" would have been + * cut off in previous versions of KD Chart - that is + * if you did not call KDChart::Chart::setGlobalLeading(). + * + * Now the word will be shown completely because there + * is an auto-spacer-item taking care for the additional + * space needed in the lower/right corner. + */ + class KDCHART_EXPORT AutoSpacerLayoutItem : public AbstractLayoutItem + { + public: + AutoSpacerLayoutItem( + bool layoutIsAtTopPosition, QHBoxLayout *rightLeftLayout, + bool layoutIsAtLeftPosition, QVBoxLayout *topBottomLayout ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + bool mLayoutIsAtTopPosition; + QHBoxLayout *mRightLeftLayout; + bool mLayoutIsAtLeftPosition; + QVBoxLayout *mTopBottomLayout; + + mutable QBrush mCommonBrush; + mutable QSize mCachedSize; + }; + +} + +#endif /* KDCHARTLAYOUTITEMS_H */ diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLegend b/massif-visualizer/kdchart/include/KDChart/KDChartLegend new file mode 100644 index 00000000..b088e1f9 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLegend @@ -0,0 +1 @@ +#include "KDChartLegend.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLegend.h b/massif-visualizer/kdchart/include/KDChart/KDChartLegend.h new file mode 100644 index 00000000..b39d1679 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLegend.h @@ -0,0 +1,409 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEGEND_H +#define KDCHARTLEGEND_H + +#include "KDChartAbstractAreaWidget.h" +#include "KDChartPosition.h" +#include "KDChartMarkerAttributes.h" + +class QTextTable; + +namespace KDChart { + + class AbstractDiagram; + typedef QList DiagramList; + typedef QList ConstDiagramList; + +/** + * @brief Legend defines the interface for the legend drawing class. + * + * Legend is the class for drawing legends for all kinds of diagrams ("chart types"). + * + * Legend is drawn on chart level, not per diagram, but you can have more than one + * legend per chart, using KDChart::Chart::addLegend(). + * + * \note Legend is different from all other classes ofd KD Chart, since it can be + * displayed outside of the Chart's area. If you want to, you can embedd the legend + * into your own widget, or into another part of a bigger layout, into which you might + * have inserted the Chart. + * + * On the other hand, please note that you MUST call Chart::addLegend to get your + * legend positioned into the correct place of your chart - if you want to have + * the legend shown inside of the chart (that's probably true for most cases). + */ +class KDCHART_EXPORT Legend : public AbstractAreaWidget +{ + Q_OBJECT + + Q_DISABLE_COPY( Legend ) + KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( Legend ) + +public: + explicit Legend( QWidget* parent = 0 ); + explicit Legend( KDChart::AbstractDiagram* diagram, QWidget* parent = 0 ); + virtual ~Legend(); + + + enum LegendStyle { MarkersOnly = 0, + LinesOnly = 1, + MarkersAndLines = 2 }; + + + void setLegendStyle( LegendStyle style ); + LegendStyle legendStyle() const; + + + virtual Legend * clone() const; + + /** + * Returns true if both legends have the same settings. + */ + bool compare( const Legend* other ) const; + + virtual void resizeEvent( QResizeEvent * event ); // TODO: should be protected + + virtual void paint( QPainter* painter ); + virtual void setVisible( bool visible ); + + /** + Specifies the reference area for font size of title text, + and for font size of the item texts, IF automatic area + detection is set. + + \note This parameter is ignored, if the Measure given for + setTitleTextAttributes (or setTextAttributes, resp.) is + not specifying automatic area detection. + + If no reference area is specified, but automatic area + detection is set, then the size of the legend's parent + widget will be used. + + \sa KDChart::Measure, KDChartEnums::MeasureCalculationMode + */ + void setReferenceArea( const QWidget* area ); + /** + Returns the reference area, that is used for font size of title text, + and for font size of the item texts, IF automatic area + detection is set. + + \sa setReferenceArea + */ + const QWidget* referenceArea() const; + + /** + * The first diagram of the legend or 0 if there was none added to the legend. + * @return The first diagram of the legend or 0. + * + * \sa diagrams, addDiagram, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + KDChart::AbstractDiagram* diagram() const; + + /** + * The list of all diagrams associated with the legend. + * @return The list of all diagrams associated with the legend. + * + * \sa diagram, addDiagram, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + DiagramList diagrams() const; + + /** + * @return The list of diagrams associated with this legend. + */ + ConstDiagramList constDiagrams() const; + + /** + * Add the given diagram to the legend. + * @param newDiagram The diagram to add. + * + * \sa diagram, diagrams, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + void addDiagram( KDChart::AbstractDiagram* newDiagram ); + + /** + * Removes the diagram from the legend's list of diagrams. + * + * \sa diagram, diagrams, addDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + void removeDiagram( KDChart::AbstractDiagram* oldDiagram ); + + /** + * Removes all diagrams from the legend's list of diagrams. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, replaceDiagram, setDiagram + */ + void removeDiagrams(); + + /** + * Replaces the old diagram, or appends the + * new diagram, it there is none yet. + * + * @param newDiagram The diagram to be used instead of the old one. + * If this parameter is zero, the first diagram will just be removed. + * + * @param oldDiagram The diagram to be removed by the new one. This + * diagram will be deleted automatically. If the parameter is omitted, + * the very first diagram will be replaced. In case, there was no + * diagram yet, the new diagram will just be added. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, removeDiagrams, setDiagram + */ + void replaceDiagram( KDChart::AbstractDiagram* newDiagram, + KDChart::AbstractDiagram* oldDiagram = 0 ); + + /** + * Returns the offset of the first dataset of \c diagram. + * + */ + uint dataSetOffset( KDChart::AbstractDiagram* diagram ); + + /** + * @brief A convenience method doing the same as replaceDiagram( newDiagram, 0 ); + * + * Replaces the first diagram by the given diagram. + * If the legend's list of diagram is empty the given diagram is added to the list. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, removeDiagrams, replaceDiagram + */ + void setDiagram( KDChart::AbstractDiagram* newDiagram ); + + /** + * \brief Specify the position of a non-floating legend. + * + * Use setFloatingPosition to set position and alignment + * if your legend is floating. + * + * \sa setAlignment, setFloatingPosition + */ + void setPosition( Position position ); + + /** + * Returns the position of a non-floating legend. + * \sa setPosition + */ + Position position() const; + + /** + * \brief Specify the alignment of a non-floating legend. + * + * Use setFloatingPosition to set position and alignment + * if your legend is floating. + * + * \sa alignment, setPosition, setFloatingPosition + */ + void setAlignment( Qt::Alignment ); + + /** + * Returns the alignment of a non-floating legend. + * \sa setAlignment + */ + Qt::Alignment alignment() const; + + /** + * \brief Specify the alignment of the text elements within the legend + * + * \sa textAlignment() + */ + void setTextAlignment( Qt::Alignment ); + + /** + * \brief Returns the alignment used while rendering text elements within the legend. + * + * \sa setTextAlignment() + */ + Qt::Alignment textAlignment() const; + + /** + * \brief Specify the alignment of the legend symbol( alignment of Legend::LinesOnly) + * within the legend + * + * \sa legendSymbolAlignment() + */ + void setLegendSymbolAlignment(Qt::Alignment); + + /** + * \brief Returns the alignment used while drawing legend symbol(alignment of Legend::LinesOnly) + * within the legend. + * + * \sa setLegendSymbolAlignment() + */ + Qt::Alignment legendSymbolAlignment() const; + + /** + * \brief Specify the position and alignment of a floating legend. + * + * Use setPosition and setAlignment to set position and alignment + * if your legend is non-floating. + * + * \note When setFloatingPosition is called, the Legend's position value is set to + * KDChart::Position::Floating automatically. + * + * If your Chart is pointed to by m_chart, your could have the floating legend + * aligned exactly to the chart's coordinate plane's top-right corner + * with the following commands: +\verbatim +KDChart::RelativePosition relativePosition; +relativePosition.setReferenceArea( m_chart->coordinatePlane() ); +relativePosition.setReferencePosition( Position::NorthEast ); +relativePosition.setAlignment( Qt::AlignTop | Qt::AlignRight ); +relativePosition.setHorizontalPadding( + KDChart::Measure( -1.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +relativePosition.setVerticalPadding( + KDChart::Measure( 0.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +m_legend->setFloatingPosition( relativePosition ); +\endverbatim + * + * To have the legend positioned at a fixed point, measured from the QPainter's top left corner, + * you could use the following code code: + * +\verbatim +KDChart::RelativePosition relativePosition; +relativePosition.setReferencePoints( PositionPoints( QPointF( 0.0, 0.0 ) ) ); +relativePosition.setReferencePosition( Position::NorthWest ); +relativePosition.setAlignment( Qt::AlignTop | Qt::AlignLeft ); +relativePosition.setHorizontalPadding( + KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +relativePosition.setVerticalPadding( + KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +m_legend->setFloatingPosition( relativePosition ); +\endverbatim + * Actually that's exactly the code KD Chart is using as default position for any floating legends, + * so if you just say setPosition( KDChart::Position::Floating ) without calling setFloatingPosition + * your legend will be positioned at point 4/4. + * + * \sa setPosition, setAlignment + */ + void setFloatingPosition( const RelativePosition& relativePosition ); + + /** + * Returns the position of a floating legend. + * \sa setFloatingPosition + */ + const RelativePosition floatingPosition() const; + + void setOrientation( Qt::Orientation orientation ); + Qt::Orientation orientation() const; + + + void setSortOrder( Qt::SortOrder order ); + Qt::SortOrder sortOrder() const; + + void setShowLines( bool legendShowLines ); + bool showLines() const; + + void resetTexts(); + void setText( uint dataset, const QString& text ); + QString text( uint dataset ) const; + const QMap texts() const; + + /** + * Sets a list of datasets that are to be hidden in the legend. + * + * By passing an empty list, you show all datasets. + * All datasets are shown by default, which means + * that hiddenDatasets() returns an empty list. + */ + void setHiddenDatasets( const QList hiddenDatasets ); + const QList hiddenDatasets() const; + void setDatasetHidden( uint dataset, bool hidden ); + bool datasetIsHidden( uint dataset ) const; + + uint datasetCount() const; + + void setDefaultColors(); + void setRainbowColors(); + void setSubduedColors( bool ordered = false ); + + void setBrushesFromDiagram( KDChart::AbstractDiagram* diagram ); + + /** + * Note: there is no color() getter method, since setColor + * just sets a QBrush with the respective color, so the + * brush() getter method is sufficient. + */ + void setColor( uint dataset, const QColor& color ); + + void setBrush( uint dataset, const QBrush& brush ); + QBrush brush( uint dataset ) const; + const QMap brushes() const; + + void setPen( uint dataset, const QPen& pen ); + QPen pen( uint dataset ) const; + const QMap pens() const; + + /** + * Note that any sizes specified via setMarkerAttributes are ignored, + * unless you disable the automatic size calculation, by saying + * setUseAutomaticMarkerSize( false ) + */ + void setMarkerAttributes( uint dataset, const MarkerAttributes& ); + MarkerAttributes markerAttributes( uint dataset ) const; + const QMap markerAttributes() const; + + /** + * This option is on by default, it means that Marker sizes in the Legend + * will be the same as the font height used for their respective label texts. + * + * Set this to false, if you want to specify the marker sizes via setMarkerAttributes + * or if you want the Legend to use the same marker sizes as they are used in the Diagrams. + */ + void setUseAutomaticMarkerSize( bool useAutomaticMarkerSize ); + bool useAutomaticMarkerSize() const; + + void setTextAttributes( const TextAttributes &a ); + TextAttributes textAttributes() const; + + void setTitleText( const QString& text ); + QString titleText() const; + + void setTitleTextAttributes( const TextAttributes &a ); + TextAttributes titleTextAttributes() const; + + void setSpacing( uint space ); + uint spacing() const; + + // called internally by KDChart::Chart, when painting into a custom QPainter + virtual void forceRebuild(); + + virtual QSize minimumSizeHint() const; + virtual QSize sizeHint() const; + virtual void needSizeHint(); + virtual void resizeLayout( const QSize& size ); + +Q_SIGNALS: + void destroyedLegend( Legend* ); + /** Emitted upon change of a property of the Legend or any of its components. */ + void propertiesChanged(); + +private Q_SLOTS: + void emitPositionChanged(); + void resetDiagram( AbstractDiagram* ); + void activateTheLayout(); + void setNeedRebuild(); + void buildLegend(); +}; // End of class Legend + +} + + +#endif // KDCHARTLEGEND_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis new file mode 100644 index 00000000..ac72b717 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis @@ -0,0 +1 @@ +#include "KDChartLeveyJenningsAxis.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis.h b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis.h new file mode 100644 index 00000000..2213e887 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsAxis.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSAXIS_H +#define KDCHARTLEVEYJENNINGSAXIS_H + +#include + +#include "KDChartCartesianAxis.h" + +#include "KDChartLeveyJenningsGridAttributes.h" + +namespace KDChart { + + class LeveyJenningsDiagram; + + /** + * The class for levey jennings axes. + * + * For being useful, axes need to be assigned to a diagram, see + * LeveyJenningsDiagram::addAxis and LeveyJenningsDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT LeveyJenningsAxis : public CartesianAxis + { + Q_OBJECT + + Q_DISABLE_COPY( LeveyJenningsAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LeveyJenningsAxis, AbstractDiagram* ) + + public: + /** + * C'tor of the class for levey jennings axes. + * + * \note If using a zero parent for the constructor, you need to call + * your diagram's addAxis function to add your axis to the diagram. + * Otherwise, there is no need to call addAxis, since the constructor + * does that automatically for you, if you pass a diagram as parameter. + * + * \sa AbstractCartesianDiagram::addAxis + */ + explicit LeveyJenningsAxis ( LeveyJenningsDiagram* diagram = 0 ); + ~LeveyJenningsAxis(); + + LeveyJenningsGridAttributes::GridType type() const; + void setType( LeveyJenningsGridAttributes::GridType type ); + + Qt::DateFormat dateFormat() const; + void setDateFormat( Qt::DateFormat format ); + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const LeveyJenningsAxis* other ) const; + + /** reimpl */ + void paintCtx( PaintContext* ); + + protected: + virtual void paintAsOrdinate( PaintContext* ); + + virtual void paintAsAbscissa( PaintContext* ); + }; + + typedef QList LeveyJenningsAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane new file mode 100644 index 00000000..93eff0e6 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartLeveyJenningsCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane.h new file mode 100644 index 00000000..f473ecd2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsCoordinatePlane.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSCOORDINATEPLANE_H +#define KDCHARTLEVEYJENNINGSCOORDINATEPLANE_H + +#include "KDChartCartesianCoordinatePlane.h" + +#include "KDChartLeveyJenningsGridAttributes.h" + +namespace KDChart { + + class LeveyJenningsGrid; + + /** + * @brief Levey Jennings coordinate plane + * This is actually nothing real more than a plain cartesian + * coordinate plane. The difference is, that only Levey Jennings + * Diagrams can be added to it. + */ + class KDCHART_EXPORT LeveyJenningsCoordinatePlane + : public CartesianCoordinatePlane + { + Q_OBJECT + Q_DISABLE_COPY( LeveyJenningsCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LeveyJenningsCoordinatePlane, Chart* ) + + friend class LeveyJenningsGrid; + + public: + explicit LeveyJenningsCoordinatePlane( Chart* parent = 0 ); + ~LeveyJenningsCoordinatePlane(); + + void addDiagram( AbstractDiagram* diagram ); + + LeveyJenningsGridAttributes gridAttributes() const; + void setGridAttributes( const LeveyJenningsGridAttributes& attr ); + + protected: + const QPointF translateBack( const QPointF& screenPoint ) const; + + private: + LeveyJenningsGrid* grid() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram new file mode 100644 index 00000000..97750d23 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram @@ -0,0 +1 @@ +#include "KDChartLeveyJenningsDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram.h new file mode 100644 index 00000000..d85ceed6 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsDiagram.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSDIAGRAM_H +#define KDCHARTLEVEYJENNINGSDIAGRAM_H + +#include "KDChartLineDiagram.h" +#include "KDChartLeveyJenningsCoordinatePlane.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QPolygonF; +class QSvgRenderer; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief LeveyDiagram defines a Levey Jennings chart. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT LeveyJenningsDiagram : public LineDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( LeveyJenningsDiagram ) +// KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LineDiagram, CartesianCoordinatePlane * ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( LeveyJenningsDiagram, LeveyJenningsCoordinatePlane ) + + +public: + explicit LeveyJenningsDiagram( QWidget* parent = 0, LeveyJenningsCoordinatePlane* plane = 0 ); + virtual ~LeveyJenningsDiagram(); + + virtual LineDiagram * clone() const; + + enum Symbol + { + OkDataPoint, + NotOkDataPoint, + LotChanged, + SensorChanged, + FluidicsPackChanged + }; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const LeveyJenningsDiagram* other ) const; + + void setLotChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment lotChangedSymbolPosition() const; + + void setFluidicsPackChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment fluidicsPackChangedSymbolPosition() const; + + void setSensorChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment sensorChangedSymbolPosition() const; + + void setExpectedMeanValue( float meanValue ); + float expectedMeanValue() const; + + void setExpectedStandardDeviation( float sd ); + float expectedStandardDeviation() const; + + float calculatedMeanValue() const; + float calculatedStandardDeviation() const; + + void setFluidicsPackChanges( const QVector< QDateTime >& changes ); + QVector< QDateTime > fluidicsPackChanges() const; + + void setSensorChanges( const QVector< QDateTime >& changes ); + QVector< QDateTime > sensorChanges() const; + + void setScanLinePen( const QPen& pen ); + QPen scanLinePen() const; + + void setSymbol( Symbol symbol, const QString& filename ); + QString symbol( Symbol symbol ) const; + + /* \reimpl */ + void setModel( QAbstractItemModel* model ); + + QPair< QDateTime, QDateTime > timeRange() const; + void setTimeRange( const QPair< QDateTime, QDateTime >& timeRange ); + +protected: + void paint( PaintContext* paintContext ); + void drawChanges( PaintContext* paintContext ); + + virtual void drawDataPointSymbol( PaintContext* paintContext, const QPointF& pos, bool ok ); + virtual void drawLotChangeSymbol( PaintContext* paintContext, const QPointF& pos ); + virtual void drawSensorChangedSymbol( PaintContext* paintContext, const QPointF& pos ); + virtual void drawFluidicsPackChangedSymbol( PaintContext* paintContext, const QPointF& pos ); + + virtual QRectF iconRect() const; + + QSvgRenderer* iconRenderer( Symbol symbol ); + + /** \reimpl */ + const QPair calculateDataBoundaries() const; + +protected Q_SLOTS: + void calculateMeanAndStandardDeviation() const; +}; // End of class KDChartLineDiagram + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid new file mode 100644 index 00000000..8f396dca --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid @@ -0,0 +1 @@ +#include "KDChartLeveyJenningsGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid.h new file mode 100644 index 00000000..daad7de4 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGrid.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSGRID_H +#define KDCHARTLEVEYJENNINGSGRID_H + +#include "KDChartCartesianGrid.h" + +namespace KDChart { + + class PaintContext; + + /** + * \internal + * + * \brief Class for the grid in a Levey Jennings plane. + * + * The LeveyJenningsGrid interface is used + * for calculating and for drawing + * the horizonal grid lines, and the vertical grid lines + * of a Levey Jennings coordinate plane. + */ + class LeveyJenningsGrid : public CartesianGrid + { + public: + LeveyJenningsGrid() : CartesianGrid() {} + virtual ~LeveyJenningsGrid() {} + + void drawGrid( PaintContext* context ); + + private: + DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const; + DataDimension calculateGridXY( const DataDimension& rawDataDimension, + Qt::Orientation orientation, bool adjustLower, bool adjustUpper ) const; + void calculateStepWidth( qreal start_, qreal end_, const QList& granularities, Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, bool adjustLower, bool adjustUpper ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes new file mode 100644 index 00000000..85a17ebb --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes @@ -0,0 +1 @@ +#include "KDChartLeveyJenningsGridAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes.h new file mode 100644 index 00000000..951b5498 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLeveyJenningsGridAttributes.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H +#define KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H + +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of grids + */ +class KDCHART_EXPORT LeveyJenningsGridAttributes +{ +public: + LeveyJenningsGridAttributes(); + LeveyJenningsGridAttributes( const LeveyJenningsGridAttributes& ); + LeveyJenningsGridAttributes &operator= ( const LeveyJenningsGridAttributes& ); + + ~LeveyJenningsGridAttributes(); + + enum GridType + { + Expected, + Calculated + }; + + enum Range + { + NormalRange, + CriticalRange, + OutOfRange + }; + + void setGridVisible( GridType type, bool visible ); + bool isGridVisible( GridType type ) const; + + void setGridPen( GridType type, const QPen& pen ); + QPen gridPen( GridType type ) const; + + void setRangeBrush( Range range, const QBrush& brush ); + QBrush rangeBrush( Range range ) const; + + bool operator==( const LeveyJenningsGridAttributes& ) const; + inline bool operator!=( const LeveyJenningsGridAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( LeveyJenningsGridAttributes ) +}; // End of class GridAttributes + +} + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::LeveyJenningsGridAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::LeveyJenningsGridAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::LeveyJenningsGridAttributes ) + +#endif // KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes new file mode 100644 index 00000000..0789611e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes @@ -0,0 +1 @@ +#include "KDChartLineAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes.h new file mode 100644 index 00000000..a0a201a5 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineAttributes.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLINEATTRIBUTES_H +#define KDCHARTLINEATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Set of attributes for changing the appearance of line charts + */ +class KDCHART_EXPORT LineAttributes +{ +public: + /** + \brief MissingValuesPolicy specifies how a missing value will be shown in a line diagram. + + Missing value is assumed if the data cell contains a QVariant that can not be + interpreted as a qreal, or if the data cell is hidden while its dataset is not hidden. + + \li \c MissingValuesAreBridged the default: No markers will be shown for missing values + but the line will be bridged if there is at least one valid cell before and after + the missing value(s), otherwise the segment will be hidden. + \li \c MissingValuesHideSegments Line segments starting with a missing value will + not be shown, and no markers will be shown for missing values, so this will look like + a piece of the line is missing. + \li \c MissingValuesShownAsZero Missing value(s) will be treated like normal zero values, + and markers will shown for them too, so there will be no visible difference between a + zero value and a missing value. + \li \c MissingValuesPolicyIgnored (internal value, do not use) + + */ + enum MissingValuesPolicy { + MissingValuesAreBridged, + MissingValuesHideSegments, + MissingValuesShownAsZero, + MissingValuesPolicyIgnored }; + + LineAttributes(); + LineAttributes( const LineAttributes& ); + LineAttributes &operator= ( const LineAttributes& ); + + ~LineAttributes(); + + /* line chart and area chart - all types */ + void setMissingValuesPolicy( MissingValuesPolicy policy ); + MissingValuesPolicy missingValuesPolicy() const; + + /* area chart - all types */ + /** + * Sets the lower or upper (depending on the displayed value being positive or + * negative, resp.) bounding line (i.e., the dataset with the line data). The area + * is then drawn between this line and the line of the specified dataset. + * Pass -1 to draw the area between this line and the zero line. + */ + void setAreaBoundingDataset( int dataset ); + int areaBoundingDataset() const; + + void setDisplayArea( bool display ); + bool displayArea() const; + /*allows viewing the covered areas*/ + void setTransparency( uint alpha ); + uint transparency() const; + + bool operator==( const LineAttributes& ) const; + inline bool operator!=( const LineAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( LineAttributes ) +}; // End of class LineAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::LineAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::LineAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::LineAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::LineAttributes ) + +#endif // KDCHARTLINEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram new file mode 100644 index 00000000..43e32204 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram @@ -0,0 +1 @@ +#include "KDChartLineDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram.h new file mode 100644 index 00000000..395436c9 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineDiagram.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLINEDIAGRAM_H +#define KDCHARTLINEDIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartLineAttributes.h" +#include "KDChartValueTrackerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief LineDiagram defines a common line diagram. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT LineDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( LineDiagram ) +// KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LineDiagram, CartesianCoordinatePlane * ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( LineDiagram, CartesianCoordinatePlane ) + + +public: + class LineDiagramType; + friend class LineDiagramType; + + explicit LineDiagram( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~LineDiagram(); + + virtual LineDiagram * clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const LineDiagram* other ) const; + + enum LineType { + Normal = 0, + Stacked = 1, + Percent = 2 + }; + + + void setType( const LineType type ); + LineType type() const; + + /** If centerDataPoints() is true, all data points are moved by an + * offset of 0.5 to the right. This is useful in conjunction with + * bar diagrams, since data points are then centered just like bars. + * + * \sa centerDataPoints() + */ + void setCenterDataPoints( bool center ); + /** @return option set by setCenterDataPoints() */ + bool centerDataPoints() const; + + /** With this property set to true, data sets in a normal line diagram + * are drawn in reversed order. More clearly, the first (top-most) data set + * in the source model will then appear in front. This is mostly due to + * historical reasons. + */ + void setReverseDatasetOrder( bool reverse ); + /** \see setReverseDatasetOrder */ + bool reverseDatasetOrder() const; + + void setLineAttributes( const LineAttributes & a ); + void setLineAttributes( int column, const LineAttributes & a ); + void setLineAttributes( const QModelIndex & index, const LineAttributes & a ); + void resetLineAttributes( int column ); + void resetLineAttributes( const QModelIndex & index ); + LineAttributes lineAttributes() const; + LineAttributes lineAttributes( int column ) const; + LineAttributes lineAttributes( const QModelIndex & index ) const; + + void setThreeDLineAttributes( const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( const QModelIndex & index, + const ThreeDLineAttributes & a ); + + ThreeDLineAttributes threeDLineAttributes() const; + ThreeDLineAttributes threeDLineAttributes( int column ) const; + ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const; + + void setValueTrackerAttributes( const QModelIndex & index, + const ValueTrackerAttributes & a ); + ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /* reimpl */ + const int numberOfAbscissaSegments () const; + /* reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /* reimpl */ + int numberOfAbscissaSegments () const; + /* reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +}; // End of class KDChartLineDiagram + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartLineLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartLineWithMarkerLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartLineWithMarkerLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartLineWithMarkerLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes new file mode 100644 index 00000000..10aa0c63 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes @@ -0,0 +1 @@ +#include "KDChartMarkerAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes.h new file mode 100644 index 00000000..d0fbcd2e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerAttributes.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTMARKERATTRIBUTES_H +#define KDCHARTMARKERATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +QT_BEGIN_NAMESPACE +class QColor; +class QSizeF; +class QPen; +class QPainterPath; +class QDebug; +template class QMap; +QT_END_NAMESPACE + +namespace KDChart { + + /** + * @brief A set of attributes controlling the appearance of data set markers + */ + class KDCHART_EXPORT MarkerAttributes + { + public: + MarkerAttributes(); + MarkerAttributes( const MarkerAttributes& ); + MarkerAttributes &operator= ( const MarkerAttributes& ); + + ~MarkerAttributes(); + + enum MarkerStyle { MarkerCircle = 0, + MarkerSquare = 1, + MarkerDiamond = 2, + Marker1Pixel = 3, + Marker4Pixels = 4, + MarkerRing = 5, + MarkerCross = 6, + MarkerFastCross = 7, + NoMarker = 8, + PainterPathMarker = 9, + StartCustomMarkers = 10 }; + + void setVisible( bool visible ); + bool isVisible() const; + + typedef QMap MarkerStylesMap; + void setMarkerStylesMap( const MarkerStylesMap & map ); + MarkerStylesMap markerStylesMap() const; + + void setThreeD( bool value ); + bool threeD() const; + + /** + * Set the marker-style to use. This could be either one of the + * predefined \a MarkerStyle or a custom one that has a value + * bigger or equal to StartCustomMarkers. + * + * Such a custom marker does then allow to fetch a custom pixmap + * for each point (value pair) from the model using the + * Qt::DecorationRole . + */ + void setMarkerStyle( uint style ); + uint markerStyle() const; + + /** + * Normally you need to specify a valid QSizeF here, but for Legends you can + * use the invalid size QSizeF(), to enable automatic marker size calculation: + * + * For Markers shown in a Legend this means the marker size will be equal to + * the font height used for the labels that are shown next to the markers. + */ + void setMarkerSize( const QSizeF& size ); + QSizeF markerSize() const; + + void setMarkerColor( const QColor& color ); + QColor markerColor() const; + + void setCustomMarkerPath( const QPainterPath& path ); + QPainterPath customMarkerPath() const; + + void setPen( const QPen& pen ); + QPen pen() const; + + bool operator==( const MarkerAttributes& ) const; + bool operator!=( const MarkerAttributes& ) const; + + private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( MarkerAttributes ) + }; // End of class MarkerAttributes + + inline bool MarkerAttributes::operator!=( const MarkerAttributes & other ) const { return !operator==( other ); } +} + +#ifndef QT_NO_DEBUG_STREAM +KDCHART_EXPORT QDebug operator<<( QDebug, const KDChart::MarkerAttributes & ); +#endif + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::MarkerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::MarkerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::MarkerAttributes ) + +#endif // KDCHARTMARKERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartMarkerLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartMarkerLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartMeasure b/massif-visualizer/kdchart/include/KDChart/KDChartMeasure new file mode 100644 index 00000000..4731652e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartMeasure @@ -0,0 +1 @@ +#include "KDChartMeasure.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartMeasure.h b/massif-visualizer/kdchart/include/KDChart/KDChartMeasure.h new file mode 100644 index 00000000..d996456b --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartMeasure.h @@ -0,0 +1,187 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTMEASURE_H +#define KDCHARTMEASURE_H + +#include +#include +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +/** \file KDChartMeasure.h + * \brief Declaring the class KDChart::Measure. + * + * + */ + +QT_BEGIN_NAMESPACE +class QObject; +class QPaintDevice; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * \class Measure KDChartMeasure.h KDChartMeasure + * \brief Measure is used to specify relative and absolute sizes in KDChart, e.g. font sizes. + * + */ + +class KDCHART_EXPORT Measure +{ +public: + Measure(); + /*implicit*/ Measure( qreal value, + KDChartEnums::MeasureCalculationMode mode = KDChartEnums::MeasureCalculationModeAuto, + KDChartEnums::MeasureOrientation orientation = KDChartEnums::MeasureOrientationAuto ); + Measure( const Measure& ); + Measure &operator= ( const Measure& ); + + void setValue( qreal val ) { mValue = val; } + qreal value() const { return mValue; } + + void setCalculationMode( KDChartEnums::MeasureCalculationMode mode ) { mMode = mode; } + KDChartEnums::MeasureCalculationMode calculationMode() const { return mMode; } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + void setRelativeMode( const QObject * area, + KDChartEnums::MeasureOrientation orientation ) + { + mMode = KDChartEnums::MeasureCalculationModeRelative; + mArea = area; + mOrientation = orientation; + } + + /** + * \brief This is a convenience method for specifying a value, + * implicitly setting the calculation mode to MeasureCalculationModeAbsolute. + * + * Calling setAbsoluteValue( value ) is the same as calling +\verbatim + setValue( value ); + setCalculationMode( KDChartEnums::MeasureCalculationModeAbsolute ); +\endverbatim + */ + void setAbsoluteValue( qreal val ) + { + mMode = KDChartEnums::MeasureCalculationModeAbsolute; + mValue = val; + } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + void setReferenceArea( const QObject * area ) { mArea = area; } + /** + * The returned reference area will be derived from AbstractArea + * or QWidget or both. + */ + const QObject * referenceArea() const { return mArea; } + + void setReferenceOrientation( KDChartEnums::MeasureOrientation orientation ) { mOrientation = orientation; } + KDChartEnums::MeasureOrientation referenceOrientation() const { return mOrientation; } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + qreal calculatedValue( const QObject * autoArea, KDChartEnums::MeasureOrientation autoOrientation ) const; + qreal calculatedValue( const QSizeF& autoSize, KDChartEnums::MeasureOrientation autoOrientation ) const; + const QSizeF sizeOfArea( const QObject* area ) const; + + bool operator==( const Measure& ) const; + bool operator!=( const Measure& other ) const { return !operator==(other); } + +private: + qreal mValue; + KDChartEnums::MeasureCalculationMode mMode; + const QObject* mArea; + KDChartEnums::MeasureOrientation mOrientation; +}; // End of class Measure + + + +/** + * Auxiliary class used by the KDChart::Measure and KDChart::Chart class. + * + * Normally there should be no need to call any of these methods yourself. + * + * They are used by KDChart::Chart::paint( QPainter*, const QRect& ) + * to adjust all of the relative Measures according to the target + * rectangle's size. + * + * Default factors are (1.0, 1.0) + */ +class GlobalMeasureScaling +{ +public: + static GlobalMeasureScaling* instance(); + + GlobalMeasureScaling(); + virtual ~GlobalMeasureScaling(); + +public: + /** + * Set new factors to be used by all Measure objects from now on. + * Previous values will be saved on a stack internally. + */ + static void setFactors(qreal factorX, qreal factorY); + + /** + * Restore factors to the values before the previous call to + * setFactors. The current values are popped off a stack internally. + */ + static void resetFactors(); + + /** + * Return the currently active factors. + */ + static const QPair< qreal, qreal > currentFactors(); + + /** + * Set the paint device to use for calculating font metrics. + */ + static void setPaintDevice( QPaintDevice* paintDevice ); + + /** + * Return the paint device to use for calculating font metrics. + */ + static QPaintDevice* paintDevice(); + +private: + QStack< QPair< qreal, qreal > > mFactors; + QPaintDevice* m_paintDevice; +}; + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Measure& ); +#endif /* QT_NO_DEBUG_STREAM */ + +#endif // KDCHARTMEASURE_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice b/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice new file mode 100644 index 00000000..b42c80ac --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice @@ -0,0 +1 @@ +#include "KDChartNullPaintDevice.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice.h b/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice.h new file mode 100644 index 00000000..e24f8d2c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartNullPaintDevice.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef NULL_PAINT_DEVICE_H +#define NULL_PAINT_DEVICE_H + +#include +#include + +namespace KDChart +{ + class NullPaintEngine : public QPaintEngine + { + public: + virtual bool begin(QPaintDevice * /*pdev*/) { return true; } + virtual void drawEllipse(const QRectF & /*rect*/) { } + virtual void drawEllipse(const QRect & /*rect*/) { } + virtual void drawImage(const QRectF & /*rectangle*/, const QImage & /*image*/, const QRectF & /*sr*/, Qt::ImageConversionFlags /*flags*/) { } + virtual void drawLines(const QLineF * /*lines*/, int /*lineCount*/) { } + virtual void drawLines(const QLine * /*lines*/, int /*lineCount*/) { } + virtual void drawPath(const QPainterPath & /*path*/) { } + virtual void drawPixmap(const QRectF & /*r*/, const QPixmap & /*pm*/, const QRectF & /*sr*/) { } + virtual void drawPoints(const QPointF * /*points*/, int /*pointCount*/) { } + virtual void drawPoints(const QPoint * /*points*/, int /*pointCount*/) { } + virtual void drawPolygon(const QPointF * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { } + virtual void drawPolygon(const QPoint * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { } + virtual void drawRects(const QRectF * /*rects*/, int /*rectCount*/) { } + virtual void drawRects(const QRect * /*rects*/, int /*rectCount*/) { } + virtual void drawTextItem(const QPointF & /*p*/, const QTextItem & /*textItem*/) { } + virtual void drawTiledPixmap(const QRectF & /*rect*/, const QPixmap & /*pixmap*/, const QPointF & /*p*/) { } + virtual bool end() { return true; } + + virtual Type type() const { return QPaintEngine::User; } + virtual void updateState(const QPaintEngineState & /*state*/) { } + }; + + class NullPaintDevice : public QPaintDevice + { + public: + NullPaintDevice(const QSize& size) : m_size(size) { } + ~NullPaintDevice() { } + + int metric(PaintDeviceMetric metric) const + { + switch (metric) + { + case QPaintDevice::PdmWidth: + return m_size.width(); + case QPaintDevice::PdmHeight: + return m_size.height(); + case QPaintDevice::PdmWidthMM: + return 1; + case QPaintDevice::PdmHeightMM: + return 1; + case QPaintDevice::PdmNumColors: + return int((uint)(-1)); + case QPaintDevice::PdmDepth: + return 1; + case QPaintDevice::PdmDpiX: + return 1; + case QPaintDevice::PdmDpiY: + return 1; + case QPaintDevice::PdmPhysicalDpiX: + return 1; + case QPaintDevice::PdmPhysicalDpiY: + return 1; + } + return 1; + } + + QPaintEngine* paintEngine() const + { + static NullPaintEngine nullPaintEngine; + return &nullPaintEngine; + } + + private: + QSize m_size; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext b/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext new file mode 100644 index 00000000..4d7621c0 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext @@ -0,0 +1 @@ +#include "KDChartPaintContext.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext.h b/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext.h new file mode 100644 index 00000000..486268ab --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPaintContext.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PAINTCONTEXT_H +#define PAINTCONTEXT_H + +#include +#include "KDChartGlobal.h" + +QT_BEGIN_NAMESPACE +class QPainter; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractCoordinatePlane; + + /** + * @brief Stores information about painting diagrams + * \internal + */ + class KDCHART_EXPORT PaintContext + { + public: + PaintContext(); + ~PaintContext(); + + const QRectF rectangle () const; + void setRectangle( const QRectF& rect ); + + QPainter* painter() const; + void setPainter( QPainter* painter ); + + AbstractCoordinatePlane* coordinatePlane() const; + void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } + }; + +} + +#endif /* PAINTCONTEXT_H */ + diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPalette b/massif-visualizer/kdchart/include/KDChart/KDChartPalette new file mode 100644 index 00000000..74b1a118 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPalette @@ -0,0 +1 @@ +#include "KDChartPalette.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPalette.h b/massif-visualizer/kdchart/include/KDChart/KDChartPalette.h new file mode 100644 index 00000000..4477067d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPalette.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHART_PALETTE_H__ +#define __KDCHART_PALETTE_H__ + +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * \brief A Palette is a set of brushes (or colors) to be used + * for painting data sets. + * + * The palette class encapsulates a colletion of brushes, which in + * the simplest case are colors, to be used for painting a series of + * data sets. When asked for the m-th color, a palette of size n will + * wrap around and thus cycle through the available colors. + * + * Three builtin palettes are provided for convenience, one with a default + * set of colors, one with a subdued color selection, one with rainbow + * colors. + * + * When a palette changes, it emits a changed() signal. Hook up to it, if + * you want to repaint when the color selection changes. + */ + +class KDCHART_EXPORT Palette: public QObject +{ + Q_OBJECT +public: + explicit Palette( QObject *parent = 0 ); + Palette( const Palette& ); + Palette &operator= ( const Palette & ); + + ~Palette(); + + /** Provide access to the three builtin palettes, one with standard bright + * colors, one with more subdued colors, and one with rainbow colors. */ + static const Palette& defaultPalette(); + static const Palette& subduedPalette(); + static const Palette& rainbowPalette(); + + /** @return whether this represents a valid palette. For a palette to be + * valid it needs to have at least one brush associated. */ + bool isValid() const; + + /** @return the number of brushed in the palette. */ + int size() const; + + /** Adds \a brush to the palette. If no \a position is specified, the + * brush is appended. + */ + void addBrush( const QBrush & brush, int position = -1 ); + + /** + * Query the palette for a brush at the specified position. If the + * position exceeds the size of the palette, it wraps around. + */ + QBrush getBrush( int position ) const; + + /** Remove the brush at position \a position, if there is one. */ + void removeBrush( int position ); + +Q_SIGNALS: + /** Emitted whenever the palette changes. Views listen to this and + * repaing. */ + void changed(); + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( Palette ) +}; + +} + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::Palette ) + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes new file mode 100644 index 00000000..6b2aa817 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes @@ -0,0 +1 @@ +#include "KDChartPieAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes.h new file mode 100644 index 00000000..06d6c77f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPieAttributes.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_PIE_ATTRIBUTES_H +#define KDCHART_PIE_ATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of pie charts + */ +class KDCHART_EXPORT PieAttributes +{ +public: + PieAttributes(); + PieAttributes( const PieAttributes& ); + PieAttributes &operator= ( const PieAttributes& ); + + ~PieAttributes(); + + /** \brief Enable or disable exploding the respective pie piece(s). + * + * The default explode factor is 10 percent; use setExplodeFactor + * to specify a different factor. + * + * \note This is a convenience function: Calling setExplode( true ) + * does the same as calling setExplodeFactor( 0.1 ), and calling + * setExplode( false ) does the same as calling setExplodeFactor( 0.0 ). + * + * \sa setExplodeFactor + */ + void setExplode( bool explode ); + + /** @return whether the respective pie piece(s) will be exploded. */ + bool explode() const; + + /** Set the explode factor. + * The explode factor is a qreal between 0 and 1, and is interpreted + * as a percentage of the total available radius of the pie. + * + * \sa setExplode + */ + void setExplodeFactor( qreal factor ); + + /** @return the explode factor set by setExplode or by setExplodeFactor. */ + qreal explodeFactor() const; + + void setGapFactor( bool circular, qreal factor ); + qreal gapFactor( bool circular ) const; + + bool operator==( const PieAttributes& ) const; + inline bool operator!=( const PieAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( PieAttributes ) +}; // End of class PieAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::PieAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::PieAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::PieAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::PieAttributes ) + +#endif // KDCHART_PIE_ATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram new file mode 100644 index 00000000..4f2de694 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram @@ -0,0 +1 @@ +#include "KDChartPieDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram.h new file mode 100644 index 00000000..805e5280 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPieDiagram.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPIEDIAGRAM_H +#define KDCHARTPIEDIAGRAM_H + +#include "KDChartAbstractPieDiagram.h" + +namespace KDChart { + + class LabelPaintCache; + +/** + * @brief PieDiagram defines a common pie diagram + */ +class KDCHART_EXPORT PieDiagram : public AbstractPieDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( PieDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( PieDiagram, PolarCoordinatePlane ) + +public: + explicit PieDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~PieDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint( PaintContext* paintContext ); + +public: + /** + * Describes which decorations are painted around data labels. + */ + enum LabelDecoration { + NoDecoration = 0, ///< No decoration + FrameDecoration = 1, ///< A rectangular frame is painted around the label text + LineFromSliceDecoration = 2 ///< A line is drawn from the pie slice to its label + }; + Q_DECLARE_FLAGS( LabelDecorations, LabelDecoration ) + /// Set the decorations to be painted around data labels according to @p decorations. + void setLabelDecorations( LabelDecorations decorations ); + /// Return the decorations to be painted around data labels. + LabelDecorations labelDecorations() const; + + /// If @p enabled is set to true, labels that would overlap will be shuffled to avoid overlap. + /// \note Collision avoidance may allow labels to be closer than AbstractDiagram with + /// allowOverlappingDataValueTexts() == false, so you should usually also call + /// setAllowOverlappingDataValueTexts( true ) if you enable this feature. + void setLabelCollisionAvoidanceEnabled( bool enabled ); + /// Return whether overlapping labels will be moved to until they don't overlap anymore. + bool isLabelCollisionAvoidanceEnabled() const; + + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + virtual PieDiagram * clone() const; + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent( QPaintEvent* ); + void resizeEvent( QResizeEvent* ); + +private: + // ### move to private class? + void placeLabels( PaintContext* paintContext ); + // Solve problems with label overlap by changing label positions inside d->labelPaintCache. + void shuffleLabels( QRectF* textBoundingRect ); + void paintInternal( PaintContext* paintContext ); + void drawSlice( QPainter* painter, const QRectF& drawPosition, uint slice ); + void drawSliceSurface( QPainter* painter, const QRectF& drawPosition, uint slice ); + void addSliceLabel( LabelPaintCache* lpc, const QRectF& drawPosition, uint slice ); + void draw3DEffect( QPainter* painter, const QRectF& drawPosition, uint slice ); + void draw3dCutSurface( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal angle ); + void draw3dOuterRim( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal startAngle, + qreal endAngle ); + void calcSliceAngles(); + void calcPieSize( const QRectF &contentsRect ); + QRectF twoDPieRect( const QRectF &contentsRect, const ThreeDPieAttributes& threeDAttrs ) const; + QRectF explodedDrawPosition( const QRectF& drawPosition, uint slice ) const; + uint findSliceAt( qreal angle, int columnCount ); + uint findLeftSlice( uint slice, int columnCount ); + uint findRightSlice( uint slice, int columnCount ); + QPointF pointOnEllipse( const QRectF& boundingBox, qreal angle ); +}; // End of class KDChartPieDiagram + +Q_DECLARE_OPERATORS_FOR_FLAGS( PieDiagram::LabelDecorations ) + +} +#endif // KDCHARTPIEDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPlotter b/massif-visualizer/kdchart/include/KDChart/KDChartPlotter new file mode 100644 index 00000000..37064b22 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPlotter @@ -0,0 +1 @@ +#include "KDChartPlotter.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPlotter.h b/massif-visualizer/kdchart/include/KDChart/KDChartPlotter.h new file mode 100644 index 00000000..15d7606a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPlotter.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPLOTTER_H +#define KDCHARTPLOTTER_H + +#include "KDChartAbstractCartesianDiagram.h" + +#include "KDChartLineAttributes.h" +#include "KDChartValueTrackerAttributes.h" + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief Plotter defines a diagram type plotting two-dimensional data. + */ +class KDCHART_EXPORT Plotter : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( Plotter ) + Q_ENUMS( CompressionMode ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( Plotter, CartesianCoordinatePlane ) + Q_PROPERTY( CompressionMode useDataCompression READ useDataCompression WRITE setUseDataCompression ) + Q_PROPERTY( qreal mergeRadiusPercentage READ mergeRadiusPercentage WRITE setMergeRadiusPercentage ) + +public: + // SLOPE enables a compression based on minmal slope changes + // DISTANCE is still buggy and can fail, same for BOTH, NONE is the default mode + enum CompressionMode{ SLOPE, DISTANCE, BOTH, NONE }; + class PlotterType; + friend class PlotterType; + + explicit Plotter( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~Plotter(); + + virtual Plotter* clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const Plotter* other ) const; + + enum PlotType { + Normal = 0, + Percent, + Stacked + }; + + + void setType( const PlotType type ); + PlotType type() const; + + void setLineAttributes( const LineAttributes & a ); + void setLineAttributes( int column, const LineAttributes & a ); + void setLineAttributes( const QModelIndex & index, const LineAttributes & a ); + void resetLineAttributes( int column ); + void resetLineAttributes( const QModelIndex & index ); + LineAttributes lineAttributes() const; + LineAttributes lineAttributes( int column ) const; + LineAttributes lineAttributes( const QModelIndex & index ) const; + + void setThreeDLineAttributes( const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( const QModelIndex & index, + const ThreeDLineAttributes & a ); + + ThreeDLineAttributes threeDLineAttributes() const; + ThreeDLineAttributes threeDLineAttributes( int column ) const; + ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const; + + void setValueTrackerAttributes( const QModelIndex & index, + const ValueTrackerAttributes & a ); + ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const; + + CompressionMode useDataCompression() const; + void setUseDataCompression( CompressionMode value ); + + qreal maxSlopeChange() const; + void setMaxSlopeChange( qreal value ); + + qreal mergeRadiusPercentage() const; + void setMergeRadiusPercentage( qreal value ); + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /* reimpl */ + const int numberOfAbscissaSegments () const; + /* reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /* reimpl */ + int numberOfAbscissaSegments () const; + /* reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected Q_SLOTS: + void connectAttributesModel( AttributesModel* ); + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +protected Q_SLOTS: + void setDataBoundariesDirty(); + void calcMergeRadius(); +}; // End of class KDChart::Plotter + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor b/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor new file mode 100644 index 00000000..e0c3eb76 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor @@ -0,0 +1 @@ +#include "KDChartPlotterDiagramCompressor.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor.h b/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor.h new file mode 100644 index 00000000..9b75213d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPlotterDiagramCompressor.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PLOTTERDIAGRAMCOMPRESSOR_H +#define PLOTTERDIAGRAMCOMPRESSOR_H + +#include +#include +#if QT_VERSION < 0x050000 +#include +#else +#include +#endif +#include +#include + +#include +#include + +namespace KDChart +{ + + +class PlotterDiagramCompressor : public QObject +{ + Q_OBJECT + Q_ENUMS( CompressionMode ) +public: + + enum CompressionMode{ SLOPE = 0, DISTANCE, BOTH }; + class DataPoint { + public: + DataPoint() + : key( std::numeric_limits< qreal >::quiet_NaN() ), + value( std::numeric_limits< qreal >::quiet_NaN() ), + hidden( false ) + {} + inline qreal distance( const DataPoint &other ) + { + const qreal dx = key - other.key; + const qreal dy = value - other.value; + return std::sqrt( dx * dx + dy * dy ); + } + + inline bool operator==( const DataPoint &other ) + { + return key == other.key && value == other.value; + } + + inline bool operator!=( const DataPoint &other ) + { + return !( *this == other ); + } + + qreal key; + qreal value; + bool hidden; + QModelIndex index; + }; + + class Iterator + { + friend class PlotterDiagramCompressor; + public: + Iterator( int dataSet, PlotterDiagramCompressor *parent ); + ~Iterator(); + bool isValid() const; + Iterator& operator++(); + Iterator operator++( int ); + Iterator& operator += ( int value ); + Iterator& operator--(); + Iterator operator--( int ); + Iterator& operator-=( int value ); + DataPoint operator*(); + bool operator==( const Iterator &other ) const; + bool operator!=( const Iterator &other ) const; + void invalidate(); + protected: + Iterator( int dataSet, PlotterDiagramCompressor *parent, QVector< DataPoint > buffer ); + private: + void handleSlopeForward( const DataPoint &dp ); +#if QT_VERSION < 0x050000 + QWeakPointer< PlotterDiagramCompressor > m_parent; +#else + QPointer< PlotterDiagramCompressor > m_parent; +#endif + QVector< DataPoint > m_buffer; + int m_index; + int m_dataset; + int m_bufferIndex; + int m_rebuffer; + QDateTime m_timeOfCreation; + }; + + typedef QVector DataPointVector; + class CachePosition { + public: + CachePosition() + : first( -1 ), + second( -1 ) + {} + CachePosition( int first, int second ) + : first( first ), + second( second ) + {} + int first; + int second; + + bool operator==( const CachePosition& rhs ) const + { + return first == rhs.first && + second == rhs.second; + } + }; + explicit PlotterDiagramCompressor(QObject *parent = 0); + ~PlotterDiagramCompressor(); + Iterator begin( int dataSet ); + Iterator end( int dataSet ); + void setMergeRadius( qreal radius ); + void setMergeRadiusPercentage( qreal radius ); + void setModel( QAbstractItemModel *model ); + QAbstractItemModel* model() const; + DataPoint data( const CachePosition& pos ) const; + int rowCount() const; + int datasetCount() const; + void setCompressionModel( CompressionMode value ); + void setMaxSlopeChange( qreal value ); + qreal maxSlopeChange() const; + void cleanCache(); + QPair< QPointF, QPointF > dataBoundaries() const; + void setForcedDataBoundaries( const QPair< qreal, qreal > &bounds, Qt::Orientation direction ); +Q_SIGNALS: + void boundariesChanged(); + void rowCountChanged(); + +private: + class Private; + Private *d; +}; + +} + +#endif // PLOTTERDIAGRAMCOMPRESSOR_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane new file mode 100644 index 00000000..bfef4a51 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartPolarCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane.h new file mode 100644 index 00000000..05004f29 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarCoordinatePlane.h @@ -0,0 +1,167 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_POLAR_COORDINATEPLANE_H +#define KDCHART_POLAR_COORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class Chart; + class PaintContext; + + /** + * @brief Polar coordinate plane + */ + class KDCHART_EXPORT PolarCoordinatePlane : public AbstractCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( PolarCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( PolarCoordinatePlane, Chart* ) + + public: + struct CoordinateTransformation; + typedef QList CoordinateTransformationList; + + explicit PolarCoordinatePlane ( Chart* parent = 0 ); + ~PolarCoordinatePlane(); + + void addDiagram ( AbstractDiagram* diagram ); + + const QPointF translate ( const QPointF& diagramPoint ) const; + const QPointF translatePolar ( const QPointF& diagramPoint ) const; + + /** \brief Specify the rotation of the coordinate plane. + * + * In a pie diagram this indicates the position where the first pie starts, + * in a polar diagram it specifies the Zero position of the circular axis: + * + * \image html polar-plane-start-position.png "Illustration of \"start position\" property" + * + * \sa startPosition + */ + void setStartPosition( qreal degrees ); + /** Retrieve the rotation of the coordinate plane. + * \sa setStartPosition + */ + qreal startPosition() const; + + virtual qreal zoomFactorX() const; + virtual qreal zoomFactorY() const; + + virtual void setZoomFactors( qreal factorX, qreal factorY ); + virtual void setZoomFactorX( qreal factor ); + virtual void setZoomFactorY( qreal factor ); + + virtual QPointF zoomCenter() const; + + virtual void setZoomCenter( const QPointF& center ); + + /** + * Set the attributes to be used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * + * To disable circular grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->gridAttributes( bool ); + * ga.setGridVisible( false ); + * plane-setGridAttributes( bool, ga ); + * \endcode + * + * \note setGridAttributes overwrites the global attributes that + * were set by AbstractCoordinatePlane::setGlobalGridAttributes. + * To re-activate these global attributes you can call + * resetGridAttributes. + * + * \sa resetGridAttributes, gridAttributes + * \sa AbstractCoordinatePlane::setGlobalGridAttributes + * \sa hasOwnGridAttributes + */ + void setGridAttributes( bool circular, const GridAttributes & ); + + /** + * Reset the attributes to be used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * By calling this method you specify that the global attributes set by + * AbstractCoordinatePlane::setGlobalGridAttributes be used. + * + * \sa setGridAttributes, gridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + void resetGridAttributes( bool circular ); + + /** + * \return The attributes used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * + * \note This function always returns a valid set of grid attributes: + * If no special grid attributes were set for this direction + * the global attributes are returned, as returned by + * AbstractCoordinatePlane::globalGridAttributes. + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + const GridAttributes gridAttributes( bool circular ) const; + + /** + * \return Returns whether the grid attributes have been set for the + * respective direction via setGridAttributes( bool circular ). + * + * If false, the grid will use the global attributes set + * by AbstractCoordinatePlane::globalGridAttributes (or the default + * attributes, resp.) + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + */ + bool hasOwnGridAttributes( bool circular ) const; + + qreal angleUnit() const; + qreal radiusUnit() const; + + /** reimpl */ + virtual void paint( QPainter* ); + + protected: + virtual DataDimensionsList getDataDimensionsList() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + + void layoutDiagrams(); + protected Q_SLOTS: + void slotLayoutChanged( AbstractDiagram* diagram ); + void adjustZoomAndRepaint(); + + private: + void setHasOwnGridAttributes( bool circular, bool on ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram new file mode 100644 index 00000000..e256a87d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram @@ -0,0 +1 @@ +#include "KDChartPolarDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram.h new file mode 100644 index 00000000..ef137ca1 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarDiagram.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARDIAGRAM_H +#define KDCHARTPOLARDIAGRAM_H + + +#include "KDChartPosition.h" +#include "KDChartAbstractPolarDiagram.h" + +QT_BEGIN_NAMESPACE +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief PolarDiagram defines a common polar diagram + */ +class KDCHART_EXPORT PolarDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( PolarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( PolarDiagram, PolarCoordinatePlane ) + +public: + explicit PolarDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~PolarDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint ( PaintContext* paintContext ); + +public: + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + virtual PolarDiagram * clone() const; + + /** \deprecated Use PolarCoordinatePlane::setStartPosition( qreal degrees ) instead. */ + void setZeroDegreePosition( int degrees ); + /** \deprecated Use qreal PolarCoordinatePlane::startPosition instead. */ + int zeroDegreePosition() const; + + void setRotateCircularLabels( bool rotateCircularLabels ); + bool rotateCircularLabels() const; + + /** Close each of the data series by connecting the last point to its + * respective start point + */ + void setCloseDatasets( bool closeDatasets ); + bool closeDatasets() const; + + void setShowDelimitersAtPosition( Position position, + bool showDelimiters ); + void setShowLabelsAtPosition( Position position, + bool showLabels ); + + bool showDelimitersAtPosition( Position position ) const; + + bool showLabelsAtPosition( Position position ) const; + + virtual void paint ( PaintContext* paintContext, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ); // KDChart 3: references -> pointers + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + virtual void paintPolarMarkers( PaintContext* ctx, const QPolygonF& polygon ); + +}; // End of class PolarDiagram + +} + + +#endif // KDCHARTPOLARDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid b/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid new file mode 100644 index 00000000..290d93bc --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid @@ -0,0 +1 @@ +#include "KDChartPolarGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid.h new file mode 100644 index 00000000..15b7cd62 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPolarGrid.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARGrid_H +#define KDCHARTPOLARGrid_H + +#include "KDChartPolarCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class PolarCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a polar plane. + * + * The PolarGrid interface is used + * for calculating and for drawing + * the sagittal grid lines, and the circular grid lines + * of a polar coordinate plane. + */ + class PolarGrid : public AbstractGrid + { + public: + PolarGrid() : AbstractGrid() {} + virtual ~PolarGrid() {} + + virtual void drawGrid( PaintContext* context ); + + private: + virtual DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPosition b/massif-visualizer/kdchart/include/KDChart/KDChartPosition new file mode 100644 index 00000000..1d60c794 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPosition @@ -0,0 +1 @@ +#include "KDChartPosition.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPosition.h b/massif-visualizer/kdchart/include/KDChart/KDChartPosition.h new file mode 100644 index 00000000..f12ff462 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPosition.h @@ -0,0 +1,300 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOSITION_H +#define KDCHARTPOSITION_H + +#include +#include +#include +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QStringList; +class QByteArray; +template class QList; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * \class Position KDChartPosition.h + * \brief Defines a position, using compass terminology. + * + * Using KDChartPosition you can specify one of nine + * pre-defined, logical points (see the \c static \c const getter + * methods below), in a similar way, as you would use a + * compass to navigate on a map. + * + * For each piece (slice/bar, etc.) of a chart for example, you can specify the position of the value + * labels. Figure 1 illustrates which cardinal points refer to which points + * on a pie or bar chart, resp. In the graphic, "N" stands for North, "S" for South, etc. + * + * \image html position-alignments.png "Figure 1: Different interpretations of KDChart::Position within KDChart" + * + * \note Often you will declare a \c Position together with the + * RelativePosition class, to specify a logical point, + * which then will be used to layout your chart at runtime, + * e.g. for specifying the location of a floating Legend box. + * + * For comparing a Position's value with a switch () statement, + * you can use numeric values defined in KDChartEnums, like this: +\verbatim +switch ( yourPosition().value() ) { + case KDChartEnums::PositionNorthWest: + // your code ... + break; + case KDChartEnums::PositionNorth: + // your code ... + break; +} +\endverbatim + * \sa RelativePosition, KDChartEnums::PositionValue + */ +class KDCHART_EXPORT Position +{ + Q_DECLARE_TR_FUNCTIONS( Position ) + Position( int value ); +public: + Position(); + Position( KDChartEnums::PositionValue value ); // intentionally non-explicit + + KDChartEnums::PositionValue value() const; + + const char *name() const; + QString printableName() const; + + bool isUnknown() const; + + bool isWestSide() const; + bool isNorthSide() const; + bool isEastSide() const; + bool isSouthSide() const; + + bool isCorner() const; + bool isPole() const; + + bool isFloating() const; + + static const Position& Unknown; + static const Position& Center; + static const Position& NorthWest; + static const Position& North; + static const Position& NorthEast; + static const Position& East; + static const Position& SouthEast; + static const Position& South; + static const Position& SouthWest; + static const Position& West; + + static const Position& Floating; + + // boolean flags: 1, 2, 4, 8, ... + enum Option { + IncludeCenter = 0x1, + IncludeFloating = 0x2 }; + Q_DECLARE_FLAGS( Options, Option ) + + // Unfortunately the following typecast from int to Options is needed + // as the | operator is not defined yet, this will be done by + // the makro Q_DECLARE_OPERATORS_FOR_FLAGS( KDChart::Position::Options ) + // at the bottom of this file. + static QList names( Options options = Options(IncludeCenter | IncludeFloating) ); + static QStringList printableNames( Options options = Options(IncludeCenter | IncludeFloating) ); + + static Position fromName(const char * name); + static Position fromName(const QByteArray & name); + + bool operator==( const Position& ) const; + bool operator==( int ) const; + bool operator!=( const Position& ) const; + bool operator!=( int ) const; + +private: + int m_value; +}; // End of class Position + +inline bool Position::operator!=( const Position & other ) const { return !operator==( other ); } +inline bool Position::operator!=( int other ) const { return !operator==( other ); } + +/** + * @brief Stores the absolute target points of a Position + * \internal + */ +class KDCHART_EXPORT PositionPoints +{ + public: + PositionPoints() {} // all points get initialized with the default automatically + + PositionPoints( + QPointF center, + QPointF northWest, + QPointF north, + QPointF northEast, + QPointF east, + QPointF southEast, + QPointF south, + QPointF southWest, + QPointF west ) + : mPositionCenter( center ) + , mPositionNorthWest( northWest ) + , mPositionNorth( north ) + , mPositionNorthEast( northEast ) + , mPositionEast( east ) + , mPositionSouthEast( southEast ) + , mPositionSouth( south ) + , mPositionSouthWest( southWest ) + , mPositionWest( west ) + {} + PositionPoints( + const QPointF& onePointForAllPositions ) + : mPositionCenter( onePointForAllPositions ) + , mPositionNorthWest( onePointForAllPositions ) + , mPositionNorth( onePointForAllPositions ) + , mPositionNorthEast( onePointForAllPositions ) + , mPositionEast( onePointForAllPositions ) + , mPositionSouthEast( onePointForAllPositions ) + , mPositionSouth( onePointForAllPositions ) + , mPositionSouthWest( onePointForAllPositions ) + , mPositionWest( onePointForAllPositions ) + {} + PositionPoints( + const QRectF& rect ) + { + const QRectF r( rect.normalized() ); + mPositionCenter = r.center(); + mPositionNorthWest = r.topLeft(); + mPositionNorth = QPointF(r.center().x(), r.top()); + mPositionNorthEast = r.topRight(); + mPositionEast = QPointF(r.right(), r.center().y()); + mPositionSouthEast = r.bottomRight(); + mPositionSouth = QPointF(r.center().x(), r.bottom()); + mPositionSouthWest = r.bottomLeft(); + mPositionWest = QPointF(r.left(), r.center().y()); + } + PositionPoints( + QPointF northWest, + QPointF northEast, + QPointF southEast, + QPointF southWest ) + : mPositionCenter( (northWest + southEast) / 2.0 ) + , mPositionNorthWest( northWest ) + , mPositionNorth( (northWest + northEast) / 2.0 ) + , mPositionNorthEast( northEast ) + , mPositionEast( (northEast + southEast) / 2.0 ) + , mPositionSouthEast( southEast ) + , mPositionSouth( (southWest + southEast) / 2.0 ) + , mPositionSouthWest( southWest ) + , mPositionWest( (northWest + southWest) / 2.0 ) + {} + + void setDegrees( KDChartEnums::PositionValue pos, qreal degrees ) + { + mapOfDegrees[pos] = degrees; + } + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const qreal degrees( KDChartEnums::PositionValue pos ) const +#else + qreal degrees( KDChartEnums::PositionValue pos ) const +#endif + { + if ( mapOfDegrees.contains(pos) ) + return mapOfDegrees[pos]; + return 0.0; + } + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const QPointF point( Position position ) const +#else + QPointF point( Position position ) const +#endif + { + //qDebug() << "point( " << position.name() << " )"; + if ( position == Position::Center) + return mPositionCenter; + if ( position == Position::NorthWest) + return mPositionNorthWest; + if ( position == Position::North) + return mPositionNorth; + if ( position == Position::NorthEast) + return mPositionNorthEast; + if ( position == Position::East) + return mPositionEast; + if ( position == Position::SouthEast) + return mPositionSouthEast; + if ( position == Position::South) + return mPositionSouth; + if ( position == Position::SouthWest) + return mPositionSouthWest; + if ( position == Position::West) + return mPositionWest; + return mPositionUnknown; + } + + bool isNull() const + { + return + mPositionUnknown.isNull() && + mPositionCenter.isNull() && + mPositionNorthWest.isNull() && + mPositionNorth.isNull() && + mPositionNorthEast.isNull() && + mPositionEast.isNull() && + mPositionSouthEast.isNull() && + mPositionSouth.isNull() && + mPositionSouthWest.isNull() && + mPositionWest.isNull(); + } + + QPointF mPositionUnknown; + QPointF mPositionCenter; + QPointF mPositionNorthWest; + QPointF mPositionNorth; + QPointF mPositionNorthEast; + QPointF mPositionEast; + QPointF mPositionSouthEast; + QPointF mPositionSouth; + QPointF mPositionSouthWest; + QPointF mPositionWest; + QMap mapOfDegrees; + +}; // End of class PositionPoints + + +} + + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Position& ); +#endif /* QT_NO_DEBUG_STREAM */ + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::Position, Q_MOVABLE_TYPE ); +Q_DECLARE_OPERATORS_FOR_FLAGS( KDChart::Position::Options ) +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::Position ) + +#endif // KDCHARTPOSITION_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPositionPoints b/massif-visualizer/kdchart/include/KDChart/KDChartPositionPoints new file mode 100644 index 00000000..1d60c794 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPositionPoints @@ -0,0 +1 @@ +#include "KDChartPosition.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters b/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters new file mode 100644 index 00000000..eef702ec --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters @@ -0,0 +1 @@ +#include "KDChartPrintingParameters.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters.h b/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters.h new file mode 100644 index 00000000..f3b31bef --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartPrintingParameters.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PRINTINGPARAMETERS_H +#define PRINTINGPARAMETERS_H + +#include +#include + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +namespace KDChart { + /** + * PrintingParameters stores the scale factor which lines has to been scaled with when printing. + * It's essentially printer's logical DPI / widget's logical DPI + * \internal + */ + class PrintingParameters { + public: + static void setScaleFactor( const qreal scaleFactor ); + static void resetScaleFactor(); + static QPen scalePen( const QPen& pen ); + + private: + PrintingParameters(); + static PrintingParameters* instance(); + + qreal scaleFactor; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane new file mode 100644 index 00000000..0aed826e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartRadarCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane.h new file mode 100644 index 00000000..17124c1b --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarCoordinatePlane.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_RADAR_COORDINATEPLANE_H +#define KDCHART_RADAR_COORDINATEPLANE_H + +#include "KDChartPolarCoordinatePlane.h" + +namespace KDChart { + + class Chart; + + /** + * @brief Radar coordinate plane + */ + class KDCHART_EXPORT RadarCoordinatePlane : public PolarCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( RadarCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( RadarCoordinatePlane, Chart* ) + + public: + + explicit RadarCoordinatePlane ( Chart* parent = 0 ); + ~RadarCoordinatePlane(); + + + /** + * Set the attributes to be used for axis captions. + * + * To disable axis captions, for example, your code should like this: + * \code + * TextAttributes ta = plane->textAttributes(); + * ta.setVisible( false ); + * plane-setTextAttributes( ta ); + * \endcode + */ + void setTextAttributes( const TextAttributes & attr ); + + /** + * \return The attributes used for axis. + * + * \note This function always returns a valid set of text attributes: + * If no special text attributes was set a default one is + * returned. + * + * \sa setTextAttributes + */ + const TextAttributes textAttributes() const; + + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram new file mode 100644 index 00000000..e5079ae8 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram @@ -0,0 +1 @@ +#include "KDChartRadarDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram.h new file mode 100644 index 00000000..e4f70e94 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarDiagram.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARDIAGRAM_H +#define KDCHARTRADARDIAGRAM_H + + +#include "KDChartPosition.h" +#include "KDChartPolarDiagram.h" +#include "KDChartRadarCoordinatePlane.h" + +QT_BEGIN_NAMESPACE +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief RadarDiagram defines a common radar diagram + */ +class KDCHART_EXPORT RadarDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( RadarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( RadarDiagram, RadarCoordinatePlane ) + +public: + explicit RadarDiagram( + QWidget* parent = 0, RadarCoordinatePlane* plane = 0 ); + virtual ~RadarDiagram(); + + virtual void paint ( PaintContext* paintContext, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ); + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + /** + * if val is true the diagram will mirror the diagram datapoints + */ + void setReverseData( bool val ); + bool reverseData(); + + virtual RadarDiagram * clone() const; + + /** + * Close each of the data series by connecting the last point to its + * respective start point + */ + void setCloseDatasets( bool closeDatasets ); + bool closeDatasets() const; + + /** + * Fill the areas of the radar chart with there respective color defined + * via KDChart::DatasetBrushRole. The value defines the alpha of the + * color to use. If set to 0.0 (the default) then the radar areas will + * not be filled with any color. If set to 1.0 then the areas will be + * solid filled and are not transparent. + */ + qreal fillAlpha() const; + void setFillAlpha(qreal alphaF); + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + virtual void paint ( PaintContext* paintContext ); + +}; // End of class RadarDiagram + +} + +#endif // KDCHARTRADARDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid b/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid new file mode 100644 index 00000000..54a49292 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid @@ -0,0 +1 @@ +#include "KDChartRadarGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid.h new file mode 100644 index 00000000..ac52353b --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRadarGrid.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARGrid_H +#define KDCHARTRADARGrid_H + +//#include "KDChartRadarCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class RadarCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a radar plane. + * + * The RadarGrid interface is used + * for calculating and for drawing + * the grid lines of a radar charts including "axis" + * labels. + */ + class RadarGrid : public AbstractGrid + { + public: + RadarGrid() : AbstractGrid() {} + virtual ~RadarGrid() {} + + virtual void drawGrid( PaintContext* context ); + + private: + virtual DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition b/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition new file mode 100644 index 00000000..dc17bac9 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition @@ -0,0 +1 @@ +#include "KDChartRelativePosition.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition.h b/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition.h new file mode 100644 index 00000000..ef940389 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRelativePosition.h @@ -0,0 +1,222 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRELATIVEPOSITION_H +#define KDCHARTRELATIVEPOSITION_H + +#include +#include +#include +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + class Position; + class PositionPoints; + class Measure; + +/** + \class RelativePosition KDChartRelativePosition.h + \brief Defines relative position information: reference area, position + in this area (reference position), horizontal / vertical padding, and rotation. + + See detailed description of \a KDChart::Position for an illustration of the + different possible reference positions. + + Using RelativePosition you can specify the relative parts + of some position information, and you can specify the absolute parts: + the reference area, and the position in this area. + + \note To get an absolute position, you have three options: + \li either you declare both, the relative and the absolute parts, + using setReferenceArea for the latter, + \li or you specify a set of points, using setReferencePoints, + \li or you don't use either, leaving it to KD Chart to find a suitable reference area. + */ +class KDCHART_EXPORT RelativePosition +{ +public: + RelativePosition(); + RelativePosition( const RelativePosition& ); + + RelativePosition & operator=( const RelativePosition & other ); + + ~RelativePosition(); + + /** + * \brief Set the reference area to be used to find the anchor point. + * + * The reference area's type can be either a QWidget subclass or a KDChart::AbstractArea subclass. + * + * \note Usage of reference area and reference points is mutually exclusive: + * Only one can be used, so any previously set reference points are cleared + * when you call setReferenceArea. + * + * Also note: In a few cases KD Chart will ignore your area (or points, resp.) settings! + * Relative positioning of data value texts is an example: For these + * the reference area is always taken to be the data area. + * + * \sa setReferencePosition, setAlignment, setHorizontalPadding, setVerticalPadding + */ + void setReferenceArea( QObject* area ); + QObject* referenceArea() const; + + /** + * \brief Set a set of points from which the anchor point will be selected. + * + * \note Usage of reference area and reference points is mutually exclusive: + * Only one can be used, so any previously set reference area is cleared + * when you call setReferencePoints. + * + * Also note: In a few cases KD Chart will ignore your points (or area, resp.) settings! + * Relative positioning of data value texts is an example: For these + * the reference area is always taken to be the data area. + * + * \sa setReferenceArea, setReferencePosition, setAlignment, setHorizontalPadding, setVerticalPadding + */ + void setReferencePoints( const PositionPoints& points ); + const PositionPoints referencePoints() const; + + /** + * \brief Set the position of the anchor point. + * + * The anchor point of a RelativePosition may be one of the pre-defined + * points of it's reference area - for details see KDChart::Position. + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa resetReferencePosition, setReferenceArea, setAlignment, setHorizontalPadding, setVerticalPadding, KDChart::Position + */ + void setReferencePosition( Position position ); + + /** + * \brief Resets the position of the anchor point to the built-in default. + * + * If the anchor point of a RelativePosition is reset (or never changed from the + * default setting) KD Chart will choose an appropriate Position at run-time. + * + * e.g. BarDiagrams will use Position::North / Position::South for positive / negative values. + * + * \sa setReferencePosition, setReferenceArea, setAlignment, setHorizontalPadding, setVerticalPadding, KDChart::Position + */ + void resetReferencePosition(); + Position referencePosition() const; + + /** + * Set the alignment of the content placed by this RelativePosition. + * + * Padding is applied first to obtain the final reference point + * for the content's alignment + * + * \note To print centered content, besides calling setAlignment( Qt::AlignCenter ) + * you might also want to set zero padding to have your text centered more precisely. + * + * \sa setReferencePosition, setReferenceArea, setHorizontalPadding, setVerticalPadding + */ + void setAlignment( Qt::Alignment flags ); + Qt::Alignment alignment() const; + + /** + * Set the width of the horizontal padding between the anchor point and the content + * placed by this RelativePosition. + * + * \note When printing data value texts this Measure is used to find the alignment + * point for this text, then alignment() is use to determine how to align the text + * relative to that point. + * The font height is used as reference size for both horizontal and vertical padding + * if the respective padding's Measure is using automatic reference area detection. + * + * \sa setVerticalPadding, setReferencePosition, setReferenceArea + */ + void setHorizontalPadding( const Measure& padding ); + Measure horizontalPadding() const; + + /** + * Set the height of the vertical padding between the anchor point and the content + * placed by this RelativePosition. + * + * \note When printing data value texts this Measure is used to find the alignment + * point for this text, then alignment() is use to determine how to align the text + * relative to that point. + * The font height is used as reference size for both horizontal and vertical padding + * if the respective padding's Measure is using automatic reference area detection. + * + * \sa setHorizontalPadding, setReferencePosition, setReferenceArea + */ + void setVerticalPadding( const Measure& padding ); + Measure verticalPadding() const; + + void setRotation( qreal rot ); + qreal rotation() const; + + /** + * \brief Return the reference point, according to the reference area/position, and ignoring padding. + * + * This method is called at drawing time. + * The returned point is used to test if the label of a data value is to be printed: a label + * is printed only if its reference point is inside or touching the coordinate plane. + * + * If polarDegrees is set, the degree information will be returned that was stored for the + * respective point. This is used by the PieDiagram class to determine how vertical/horizontal + * padding settings should affect the position of the data value texts' reference points. + * \sa calculatedPoint, setReferenceArea, setReferencePosition, setHorizontalPadding, setVerticalPadding + */ + const QPointF referencePoint(qreal* polarDegrees=0) const; + + /** + * \brief Calculate a point, accordin to the reference area/position and the padding. + * + * This method is called at drawing time: The returned point is used as anchor point. + * Note that it is the task of the calling code to place the content, taking the alignment + * property into account. This class does not know the size of the content so it + * cannot place it. + * + * \sa referencePoint, setReferenceArea, setReferencePosition, setHorizontalPadding, setVerticalPadding + */ + const QPointF calculatedPoint( const QSizeF& autoSize ) const; + + bool operator==( const RelativePosition& ) const; + bool operator!=( const RelativePosition & other ) const; + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( RelativePosition ) +}; + +inline bool RelativePosition::operator!=( const RelativePosition & other ) const { return !operator==( other ); } +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::RelativePosition& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::RelativePosition ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::RelativePosition, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::RelativePosition ) + +#endif // KDCHARTRELATIVEPOSITION_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram new file mode 100644 index 00000000..01a0fd90 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram @@ -0,0 +1 @@ +#include "KDChartRingDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram.h new file mode 100644 index 00000000..6ab9d708 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRingDiagram.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRINGDIAGRAM_H +#define KDCHARTRINGDIAGRAM_H + +#include "KDChartAbstractPieDiagram.h" + +namespace KDChart { + +/** + * @brief RingDiagram defines a common ring diagram + */ +class KDCHART_EXPORT RingDiagram : public AbstractPieDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( RingDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( RingDiagram, PolarCoordinatePlane ) + +public: + explicit RingDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~RingDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint( PaintContext* paintContext ); +public: + /** \reimpl */ + virtual void resize( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals() const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + virtual qreal numberOfDatasets() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + qreal valueTotals( int dataset ) const; + + virtual RingDiagram * clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const RingDiagram* other ) const; + + void setRelativeThickness( bool relativeThickness ); + bool relativeThickness() const; + + virtual void setExpandWhenExploded( bool expand ); + virtual bool expandWhenExploded() const; + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent( QPaintEvent* ); + void resizeEvent( QResizeEvent* ); + +private: + void drawOneSlice( QPainter* painter, uint dataset, uint slice, qreal granularity ); + void drawPieSurface( QPainter* painter, uint dataset, uint slice, qreal granularity ); + QPointF pointOnEllipse( const QRectF& rect, int dataset, int slice, bool outer, qreal angle, + qreal totalGapFactor, qreal totalExplodeFactor ); +}; // End of class RingDiagram + +} + +#endif // KDCHARTRINGDIAGRAM_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes new file mode 100644 index 00000000..78eccb55 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes @@ -0,0 +1 @@ +#include "KDChartRulerAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes.h new file mode 100644 index 00000000..d72dc654 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartRulerAttributes.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRULERATTRIBUTES_H +#define KDCHARTRULERATTRIBUTES_H + +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of axis rulers + */ +class KDCHART_EXPORT RulerAttributes +{ +public: + RulerAttributes(); + RulerAttributes( const RulerAttributes& ); + RulerAttributes &operator= ( const RulerAttributes& ); + + ~RulerAttributes(); + + /** + * Sets the pen used to draw the tick marks + */ + void setTickMarkPen( const QPen& pen ); + QPen tickMarkPen() const; + + /** + * Sets the pen used to draw major tick marks + */ + void setMajorTickMarkPen( const QPen& pen ); + bool majorTickMarkPenIsSet() const; + QPen majorTickMarkPen() const; + + /** + * Sets the pen used to draw minor tick marks + */ + void setMinorTickMarkPen( const QPen& pen ); + bool minorTickMarkPenIsSet() const; + QPen minorTickMarkPen() const; + + /** + * Sets the pen used to draw the tick mark at a specific value + * + * Note: This will not paint a tick mark at the specified value + * if it wasn't already drawn before. + */ + void setTickMarkPen( qreal value, const QPen& pen ); + QPen tickMarkPen( qreal value ) const; + typedef QMap TickMarkerPensMap; + TickMarkerPensMap tickMarkPens() const; + + bool hasTickMarkPenAt( qreal value) const; + + /** + * Color setter method provided for convenience + */ + void setTickMarkColor( const QColor& color ); + QColor tickMarkColor() const; + + /** + * Shows or hides minor tick marks + */ + void setShowMinorTickMarks( bool show ); + bool showMinorTickMarks() const; + + void setShowRulerLine( bool show ); + bool showRulerLine() const; + + /** + * Shows or hides major tick marks + */ + void setShowMajorTickMarks( bool show ); + bool showMajorTickMarks() const; + + /** + * Sets the length of major tick marks + */ + void setMajorTickMarkLength( int length ); + int majorTickMarkLength() const; + bool majorTickMarkLengthIsSet() const; + + /** + * Sets the length of minor tick marks + */ + void setMinorTickMarkLength( int length ); + int minorTickMarkLength() const; + bool minorTickMarkLengthIsSet() const; + + /** + * Set margin that should be used between the labels and the ticks. By + * default the value is -1, which means that half of the label's font + * height/width should be used as margin. + */ + void setLabelMargin(int margin); + int labelMargin() const; + + /** + * Shows or hides the first tick. This is usually where the axes cross. + * The tick itself may be obscured by the other axis, but the label will be visible. + */ + void setShowFirstTick( bool show ); + bool showFirstTick() const; + + bool operator==( const RulerAttributes& ) const; + inline bool operator!=( const RulerAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( RulerAttributes ) +}; // End of class RulerAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::RulerAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::RulerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::RulerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::RulerAttributes ) + +#endif // KDCHARTRULERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor b/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor new file mode 100644 index 00000000..1f46e444 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor @@ -0,0 +1 @@ +#include "KDChartSignalCompressor.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor.h b/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor.h new file mode 100644 index 00000000..f3bd6352 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartSignalCompressor.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSIGNALCOMPRESSOR_H +#define KDCHARTSIGNALCOMPRESSOR_H + +#include +#include + +namespace KDChart { + + /** SignalCompressor compresses signals where the same signal + needs to be emitted by several pieces of the code, but only + one of the signals should be received at the end. + Usage: + * create a object of SignalCompressor, and give it the name + and object of the signal it is supposed to manage + * instead of emitting the signal, call emitSignal() on the compressor + * the signal will only be emitted once, and that is after the + current call stack ends and returns to the event loop + + With the current implementation, the class changes the + sematics of signals to be a queued connection. If that is not + wanted, another compression algorithm needs to be + implemented. + Also, at the moment, only nullary signals are supported, as + parameters could not be compressed. + A typical use of the class is to compress update + notifications. + This class is not part of the published KDChart API. + */ + class SignalCompressor : public QObject + { + Q_OBJECT + + public: + SignalCompressor( QObject* receiver, const char* signal, + QObject* parent = 0 ); + + Q_SIGNALS: + void finallyEmit(); + + public Q_SLOTS: + void emitSignal(); // emit() won't work, because of stupid defines + + private Q_SLOTS: + void nowGoAlready(); + + private: + QTimer m_timer; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes new file mode 100644 index 00000000..8bf5978f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes @@ -0,0 +1 @@ +#include "KDChartStockBarAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes.h new file mode 100644 index 00000000..3ea4f41a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartStockBarAttributes.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSTOCKBARATTRIBUTES_H +#define KDCHARTSTOCKBARATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Attributes to customize the appearance of a column in a stock chart + */ +class KDCHART_EXPORT StockBarAttributes +{ +public: + StockBarAttributes(); + StockBarAttributes( const StockBarAttributes& ); + StockBarAttributes &operator= ( const StockBarAttributes& ); + + ~StockBarAttributes(); + + void setCandlestickWidth( qreal width ); + qreal candlestickWidth() const; + + void setTickLength( qreal length ); + qreal tickLength() const; + + bool operator==( const StockBarAttributes& ) const; + inline bool operator!=( const StockBarAttributes& other ) const { return !operator==(other); } + +private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } +}; + +} + +Q_DECLARE_METATYPE( KDChart::StockBarAttributes ) + +#endif // KDCHARTSTOCKBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram new file mode 100644 index 00000000..a886150b --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram @@ -0,0 +1 @@ +#include "KDChartStockDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram.h new file mode 100644 index 00000000..ffeb07d2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartStockDiagram.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_STOCK_DIAGRAM_H +#define KDCHART_STOCK_DIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartStockBarAttributes.h" +#include "KDChartThreeDBarAttributes.h" + +namespace KDChart { + class PaintContext; + +class KDCHART_EXPORT StockDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( StockDiagram ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( StockDiagram, CartesianCoordinatePlane ) + +public: + enum Type { + HighLowClose, + OpenHighLowClose, + Candlestick + }; + + explicit StockDiagram( QWidget *parent = 0, CartesianCoordinatePlane *plane = 0 ); + ~StockDiagram(); + + void setType( Type type ); + Type type() const; + + void setStockBarAttributes( const StockBarAttributes &attr ); + StockBarAttributes stockBarAttributes() const; + + void setStockBarAttributes( int column, const StockBarAttributes &attr ); + StockBarAttributes stockBarAttributes( int column ) const; + + void setThreeDBarAttributes( const ThreeDBarAttributes &attr ); + ThreeDBarAttributes threeDBarAttributes() const; + + void setThreeDBarAttributes( int column, const ThreeDBarAttributes &attr ); + ThreeDBarAttributes threeDBarAttributes( int column ) const; + + void setLowHighLinePen( const QPen &pen ); + QPen lowHighLinePen() const; + + void setLowHighLinePen( int column, const QPen &pen ); + QPen lowHighLinePen( int column ) const; + + void setUpTrendCandlestickBrush( const QBrush &brush ); + QBrush upTrendCandlestickBrush() const; + + void setDownTrendCandlestickBrush( const QBrush &brush ); + QBrush downTrendCandlestickBrush() const; + + void setUpTrendCandlestickBrush( int column, const QBrush &brush ); + QBrush upTrendCandlestickBrush( int column ) const; + + void setDownTrendCandlestickBrush( int column, const QBrush &brush ); + QBrush downTrendCandlestickBrush( int column ) const; + + void setUpTrendCandlestickPen( const QPen &pen ); + QPen upTrendCandlestickPen() const; + + void setDownTrendCandlestickPen( const QPen &pen ); + QPen downTrendCandlestickPen() const; + + void setUpTrendCandlestickPen( int column, const QPen &pen ); + QPen upTrendCandlestickPen( int column ) const; + + void setDownTrendCandlestickPen( int column, const QPen &pen ); + QPen downTrendCandlestickPen( int column ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const int numberOfAbscissaSegments() const; + virtual const int numberOfOrdinateSegments() const; +#else + virtual int numberOfAbscissaSegments() const; + virtual int numberOfOrdinateSegments() const; +#endif + + virtual void paint( PaintContext *paintContext ); + + virtual void resize( const QSizeF &size ); + + virtual qreal threeDItemDepth( int column ) const; + virtual qreal threeDItemDepth( const QModelIndex &index ) const; + +protected: + virtual const QPair calculateDataBoundaries() const; +}; + +} // Namespace KDChart + +#endif // KDCHART_STOCK_DIAGRAM_H + diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis new file mode 100644 index 00000000..cef22bcc --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis @@ -0,0 +1 @@ +#include "KDChartTernaryAxis.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis.h b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis.h new file mode 100644 index 00000000..d34dadd2 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryAxis.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYAXIS_H +#define KDCHARTTERNARYAXIS_H + + +#include +#include +#include + +class PrerenderedLabel; + +namespace KDChart { + + class AbstractTernaryDiagram; + + /** + * The class for ternary axes + */ + class KDCHART_EXPORT TernaryAxis : public AbstractAxis + { + Q_OBJECT + + Q_DISABLE_COPY( TernaryAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( TernaryAxis, AbstractDiagram* ) + + public: + explicit TernaryAxis ( AbstractTernaryDiagram* diagram = 0 ); + ~TernaryAxis(); + + virtual void paintAll( QPainter &); + virtual void paint (QPainter *); + virtual void paintCtx (PaintContext *); + + virtual QRect geometry () const; + virtual void setGeometry (const QRect &rect); + + virtual bool isEmpty () const; + virtual QSize minimumSize () const; + virtual QSize maximumSize () const; + virtual QSize sizeHint () const; + virtual Qt::Orientations expandingDirections () const ; + + virtual const Position position () const; + virtual void setPosition (Position p); + + void setTitleText( const QString& text ); + QString titleText() const; + void setTitleTextAttributes( const TextAttributes &a ); + TextAttributes titleTextAttributes() const; + void resetTitleTextAttributes(); + bool hasDefaultTitleTextAttributes() const; + + QPair requiredMargins() const; + + private: + void updatePrerenderedLabels(); + // TODO, move class variables to private class + QRect m_geometry; + Position m_position; + + QString m_title; + TextAttributes m_titleAttributes; + + // FIXME (Mirko): Move axis labels from grid to here, do not + // expose them, just paint them. Use title text for text. Make + // a function to allow the coordinate plane to calculate the + // necessary margins, like this: + PrerenderedLabel* m_label; + PrerenderedLabel* m_fifty; + }; + + typedef QList TernaryAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane new file mode 100644 index 00000000..5913c4b7 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane @@ -0,0 +1 @@ +#include "KDChartTernaryCoordinatePlane.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane.h b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane.h new file mode 100644 index 00000000..6b7b4073 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryCoordinatePlane.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYCOORDINATEPLANE_H +#define KDCHARTTERNARYCOORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class TernaryGrid; + + /** + * @brief Ternary coordinate plane + */ + class KDCHART_EXPORT TernaryCoordinatePlane + : public AbstractCoordinatePlane + { + Q_OBJECT + Q_DISABLE_COPY( TernaryCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( TernaryCoordinatePlane, Chart* ) + + public: + explicit TernaryCoordinatePlane( Chart* parent = 0 ); + ~TernaryCoordinatePlane(); + + void addDiagram( AbstractDiagram* diagram ); + + void layoutDiagrams(); + + const QPointF translate ( const QPointF& diagramPoint ) const; + + void paint( QPainter* ); + DataDimensionsList getDataDimensionsList() const; + + /** \reimpl */ + QSize minimumSizeHint() const; + /** \reimpl */ + QSizePolicy sizePolicy() const; + + private: + TernaryGrid* grid() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid new file mode 100644 index 00000000..79b35c75 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid @@ -0,0 +1 @@ +#include "KDChartTernaryGrid.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid.h b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid.h new file mode 100644 index 00000000..7172172f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryGrid.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYGRID_H +#define KDCHARTTERNARYGRID_H + +#include + +#include "KDChartAbstractGrid.h" +#include "KDChartTextLabelCache.h" + +namespace KDChart { + + struct TickInfo { + TickInfo( qreal percentage = 0, int depth = 0 ); + qreal percentage; + int depth; + }; + + bool operator==(const TickInfo&, const TickInfo& ); + + class PaintContext; + + // VERIFY: Grids are not public API, are they? + class TernaryGrid : public AbstractGrid + { + public: + TernaryGrid(); + + virtual ~TernaryGrid(); + + void drawGrid( PaintContext* context ); + DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const; + + /** Returns two QSizeF objects specifying the dimension of the + margins needed between each corner of the diagram and the + border of the drawing area. Margins are required because + the tick marks are placed outside of the trianges + containing rectangle. + The margins are returned in diagram coordinates, + since the grid does not know about widget coordinates. + */ + QPair requiredMargins() const; + /** Return the locations of the grid lines, so that axes can + draw axis rulers at the correct positions. + This information is valid after the grid has been + painted (that is, the axes need to be painted after the + grid. */ + const QVector& tickInfo() const; + private: + QVector m_tickInfo; + // QList m_labels; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram new file mode 100644 index 00000000..a71d29eb --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram @@ -0,0 +1 @@ +#include "KDChartTernaryLineDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram.h new file mode 100644 index 00000000..d5d0f38c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryLineDiagram.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYLINEDIAGRAM_H +#define KDCHARTTERNARYLINEDIAGRAM_H + +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartAbstractTernaryDiagram.h" + + +namespace KDChart { + + /** + * @brief A TernaryLineDiagram is a line diagram with a ternary coordinate plane + */ + class KDCHART_EXPORT TernaryLineDiagram : public AbstractTernaryDiagram + { + Q_OBJECT + Q_DISABLE_COPY( TernaryLineDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( TernaryLineDiagram, TernaryCoordinatePlane ) + + public: + explicit TernaryLineDiagram ( QWidget* parent = 0, TernaryCoordinatePlane* plane = 0 ); + virtual ~TernaryLineDiagram(); + + void resize (const QSizeF &area); + void paint (PaintContext *paintContext); + + protected: + const QPair< QPointF, QPointF > calculateDataBoundaries () const; + + }; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram new file mode 100644 index 00000000..dde23b5e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram @@ -0,0 +1 @@ +#include "KDChartTernaryPointDiagram.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram.h b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram.h new file mode 100644 index 00000000..75221dc1 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTernaryPointDiagram.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYPOINTDIAGRAM_H +#define KDCHARTTERNARYPOINTDIAGRAM_H + +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartAbstractTernaryDiagram.h" + +namespace KDChart { + + /** + * @brief A TernaryPointDiagram is a point diagram within a ternary coordinate plane + */ + class KDCHART_EXPORT TernaryPointDiagram : public AbstractTernaryDiagram + { + Q_OBJECT + Q_DISABLE_COPY( TernaryPointDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( TernaryPointDiagram, TernaryCoordinatePlane ) + + public: + explicit TernaryPointDiagram ( QWidget* parent = 0, TernaryCoordinatePlane* plane = 0 ); + virtual ~TernaryPointDiagram(); + + virtual void resize (const QSizeF &area); + virtual void paint (PaintContext *paintContext); + + protected: + virtual const QPair< QPointF, QPointF > calculateDataBoundaries () const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextArea b/massif-visualizer/kdchart/include/KDChart/KDChartTextArea new file mode 100644 index 00000000..ed903f1c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextArea @@ -0,0 +1 @@ +#include "KDChartTextArea.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextArea.h b/massif-visualizer/kdchart/include/KDChart/KDChartTextArea.h new file mode 100644 index 00000000..f7d96997 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextArea.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_TEXT_AREA_H +#define KDCHART_TEXT_AREA_H + +#include + +#include "KDChartGlobal.h" +#include "KDChartAbstractAreaBase.h" +#include "KDChartLayoutItems.h" + +namespace KDChart { + + +/** + * @class TextArea KDChartTextArea.h + * @brief A text area in the chart with a background, a frame, etc. + * + * TextArea is the base class for all text containing non-widget chart elements + * that have a set of background attributes and frame attributes, such as + * headers or footers. + * + * @note This class inherits AbstractAreaBase, TextLayoutItem, and QObject. + * The reason for this triple inheritance is that neither AbstractAreaBase nor + * TextLayoutItem inherit QObject. + */ +class KDCHART_EXPORT TextArea : public QObject, public AbstractAreaBase, public TextLayoutItem +{ + Q_OBJECT + + Q_DISABLE_COPY( TextArea ) + KDCHART_DECLARE_PRIVATE_DERIVED( TextArea ) + + +public: + virtual ~TextArea() ; + +// virtual TextArea * clone() const = 0; + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite TextLayoutItem::paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + void paintAll( QPainter& painter ); + +protected: + TextArea(); + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); + +Q_SIGNALS: + void positionChanged( TextArea * ); + + //KDCHART_DECLARE_PRIVATE_DERIVED(TextArea) +}; // End of class TextArea + +} +#endif // KDCHART_TEXT_AREA_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes new file mode 100644 index 00000000..727829d8 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes @@ -0,0 +1 @@ +#include "KDChartTextAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes.h new file mode 100644 index 00000000..cd65314a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextAttributes.h @@ -0,0 +1,239 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTEXTATTRIBUTES_H +#define KDCHARTTEXTATTRIBUTES_H + +#include +#include +#include "KDChartGlobal.h" +#include "KDChartMeasure.h" + +QT_BEGIN_NAMESPACE +class QPen; +class QFont; +class QTextDocument; +QT_END_NAMESPACE + +namespace KDChart { + + /** + * \brief A set of text attributes. + * + * TextAttributes encapsulates settings that have to do with + * text. This includes font, fontsize, color, whether the text + * is rotated, etc + */ +class KDCHART_EXPORT TextAttributes +{ +public: + TextAttributes(); + TextAttributes( const TextAttributes& ); + TextAttributes &operator= ( const TextAttributes& ); + bool operator==( const TextAttributes& ) const; + inline bool operator!=( const TextAttributes& other ) const + { return !operator==(other); } + + ~TextAttributes(); + + /** + * Set whether the text is to be rendered at all. + * \param visible Whether the text is visible. + */ + void setVisible( bool visible ); + + /** + * \return Whether the text is visible. + */ + bool isVisible() const; + + /** + * Set the font to be used for rendering the text. + * + * \note All of the font's attributes will be used - except of its size! + * To specify the size please use setFontSize (or setMinimalFontSize, resp.) + * + * \param font The font to use. + * + * \sa setFontSize, setMinimalFontSize + */ + void setFont( const QFont& font ); + + /** + * \return The font that is used for rendering text. + */ + QFont font() const; + + /** + * Set the size of the font used for rendering text. + * \param measure The measure to use. + * \see Measure + */ + void setFontSize( const Measure & measure ); + + /** + * \return The measure used for the font size. + */ + Measure fontSize() const; + + /** + * Set the minimal size of the font used for rendering text. + * \param measure The measure to use. + * \see Measure + */ + void setMinimalFontSize( const Measure & measure ); + + /** + * \return The measure used for the minimal font size. + */ + Measure minimalFontSize() const; + + /** + * \brief Returns the font size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font size as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ + qreal calculatedFontSize( const QSizeF &referenceSize, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \brief Returns the font size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font size as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const qreal calculatedFontSize( +#else + qreal calculatedFontSize( +#endif + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \brief Returns the font in the size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ + const QFont calculatedFont( + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \return Whether the text has an absolute font size set. + */ + bool hasAbsoluteFontSize() const; + + /** + * Set whether the text should be automatically rotated as + * needed when space is tight. + * \param autoRotate Whether text should be automatically rotated. + */ + void setAutoRotate( bool autoRotate ); + + /** + * \return Whether text is automatically rotated when space is + * tight. + */ + bool autoRotate() const; + + /** + * Set whether the text should automatically be shrunk if + * space is tight. + * \param autoShrink Whether text should be auto-shrunk. + */ + void setAutoShrink( bool autoShrink ); + + /** + * \return Whether text is automatically shrunk if space is + * tight. + */ + bool autoShrink() const; + + /** + * Set the rotation angle to use for the text. + * + * \note For axis titles the rotation angle can be set to one of the + * following angles: 0, 90, 180, 270 + * Any other values specified will be replaced by the next smaller + * one of the allowed values, so no matter what you set the rotation + * will always be one of these four values. + * + * \param rotation The rotation angle. + */ + void setRotation( int rotation ); + void resetRotation(); + bool hasRotation() const; + + /** + * \return The rotation angle used for rendering the text. + */ + int rotation() const; + + /** + * Set the pen to use for rendering the text. + * \param pen The pen to use. + */ + void setPen( const QPen& pen ); + + /** + * \return The pen used for rendering the text. + */ + QPen pen() const; + + /** + * \return The document used for the drawing the text or NULL if the + * default document is used. + */ + QTextDocument* textDocument() const; + + /** + * Sets the document to use for the text. The previous document is deleted. + */ + void setTextDocument(QTextDocument* layout); + + // FIXME KDChartEnums::TextLayoutPolicy? + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( TextAttributes ) + +}; // End of class TextAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::TextAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::TextAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::TextAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE +Q_DECLARE_METATYPE( KDChart::TextAttributes ) + +#endif // KDCHARTTEXTATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextBubbleLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartTextBubbleLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextBubbleLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache b/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache new file mode 100644 index 00000000..5026b54c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache @@ -0,0 +1 @@ +#include "KDChartTextLabelCache.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache.h b/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache.h new file mode 100644 index 00000000..a71fd0ef --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextLabelCache.h @@ -0,0 +1,148 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTEXTLABELCACHE_H +#define KDCHARTTEXTLABELCACHE_H + +#include +#include +#include +#include + +#include "KDChartEnums.h" + +/** + * @brief base class for prerendered elements like labels, pixmaps, markers, etc. + */ +class PrerenderedElement { +public: + PrerenderedElement(); + virtual ~PrerenderedElement() {} + + /** Returns the rendered element. + If any of the properties have change, the element will be + regenerated. */ + virtual const QPixmap& pixmap() const = 0; + + /** Return the location of the reference point relatively to the + pixmap's origin. */ + virtual QPointF referencePointLocation( KDChartEnums::PositionValue ) const = 0; + + /** Set the position of the element. */ + void setPosition( const QPointF& position ); + /** Get the position of the element. */ + const QPointF& position() const; + + /** Set the reference point of the element. + Every element has nine possible reference points (all compass + directions, plus the center. + */ + void setReferencePoint( KDChartEnums::PositionValue ); + /** Get the reference point of the element. */ + KDChartEnums::PositionValue referencePoint() const; + +protected: + /** invalidate() needs to be called if any of the properties that + determine the visual appearance of the prerendered element + change. + It can be called for a const object, as objects may need to + force recalculation of the pixmap. + */ + virtual void invalidate() const = 0; + +private: + QPointF m_position; + KDChartEnums::PositionValue m_referencePoint; +}; + +/** + @brief PrerenderedLabel is an internal KDChart class that simplifies creation + and caching of cached text labels. + + It provides referenze points to anchor the text to other + elements. Reference points use the positions defined in + KDChartEnums. + + Usage: +
+    qreal angle = 90.0;
+    CachedLabel label;
+    label.paint( font, tr("Label"), angle );
+    
+*/ + +// FIXME this is merely a prototype +// FIXME caching could be done by a second layer that can be used to, +// e.g., query for a prerendered element by id or name, or by changing +// the pixmap() method to do lazy evaluation. +class PrerenderedLabel : public PrerenderedElement +{ +public: + PrerenderedLabel(); + ~PrerenderedLabel(); + + void setFont( const QFont& font ); + const QFont& font() const; + + void setText( const QString& text ); + const QString& text() const; + + void setBrush( const QBrush& brush ); + const QBrush& brush() const; + + void setPen( const QPen& ); + const QPen& pen() const; + + void setAngle( qreal angle ); + qreal angle() const; + + // reimpl PrerenderedElement: + const QPixmap& pixmap() const; + QPointF referencePointLocation( KDChartEnums::PositionValue position ) const; + // overload: return location of referencePoint(): + QPointF referencePointLocation() const; + +protected: + void invalidate() const; + +private: + /** Create a label with the given text and the given rotation + angle. Needs to be const, otherwise the pixmap() method cannot + update when needed. */ + void paint() const; + + // store the settings (these are used for the painting): + mutable bool m_dirty; + QFont m_font; + QString m_text; + QBrush m_brush; + QPen m_pen; + qreal m_angle; + + // these are valid once the label has been rendered: + mutable QPixmap m_pixmap; + mutable QPointF m_referenceBottomLeft; + mutable QPointF m_textBaseLineVector; + mutable QPointF m_textAscendVector; +}; + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartTextLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartTextLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartTextLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes new file mode 100644 index 00000000..1e932615 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes @@ -0,0 +1 @@ +#include "KDChartThreeDBarAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes.h new file mode 100644 index 00000000..99241242 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDBarAttributes.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDBARATTRIBUTES_H +#define KDCHARTTHREEDBARATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D bar attributes + */ + class KDCHART_EXPORT ThreeDBarAttributes : public AbstractThreeDAttributes + { + public: + ThreeDBarAttributes(); + ThreeDBarAttributes( const ThreeDBarAttributes& ); + ThreeDBarAttributes &operator= ( const ThreeDBarAttributes& ); + + ~ThreeDBarAttributes(); + + /* threeD Bars specific */ + void setUseShadowColors( bool useShadowColors ); + bool useShadowColors() const; + + //Pending Michel I am not sure this will be used + void setAngle( uint threeDAngle ); + uint angle() const; + + bool operator==( const ThreeDBarAttributes& ) const; + inline bool operator!=( const ThreeDBarAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDBarAttributes) + + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDBarAttributes) + + }; // End of class ThreeDBarAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDBarAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDBarAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDBarAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDBarAttributes ) + +#endif // KDCHARTTHREEDBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes new file mode 100644 index 00000000..03a05fe3 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes @@ -0,0 +1 @@ +#include "KDChartThreeDLineAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes.h new file mode 100644 index 00000000..2705bddd --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDLineAttributes.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDLINEATTRIBUTES_H +#define KDCHARTTHREEDLINEATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D line attributes + */ + class KDCHART_EXPORT ThreeDLineAttributes : public AbstractThreeDAttributes + { + public: + ThreeDLineAttributes(); + ThreeDLineAttributes( const ThreeDLineAttributes& ); + ThreeDLineAttributes &operator= ( const ThreeDLineAttributes& ); + + ~ThreeDLineAttributes(); + + /* threeD lines specific */ + void setLineXRotation( const uint degrees ); + uint lineXRotation() const; + void setLineYRotation( const uint degrees ); + uint lineYRotation() const; + + bool operator==( const ThreeDLineAttributes& ) const; + inline bool operator!=( const ThreeDLineAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDLineAttributes) + + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDLineAttributes) + + }; // End of class ThreeDLineAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDLineAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDLineAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDLineAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDLineAttributes ) + +#endif // KDCHARTTHREEDLINEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes new file mode 100644 index 00000000..db00dd43 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes @@ -0,0 +1 @@ +#include "KDChartThreeDPieAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes.h new file mode 100644 index 00000000..8742424d --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartThreeDPieAttributes.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDPIEATTRIBUTES_H +#define KDCHARTTHREEDPIEATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D pie attributes + */ + class KDCHART_EXPORT ThreeDPieAttributes : public AbstractThreeDAttributes + { + public: + ThreeDPieAttributes(); + ThreeDPieAttributes( const ThreeDPieAttributes& ); + ThreeDPieAttributes &operator= ( const ThreeDPieAttributes& ); + + ~ThreeDPieAttributes(); + + /* threeD Pies specific */ + void setUseShadowColors( bool useShadowColors ); + bool useShadowColors() const; + + bool operator==( const ThreeDPieAttributes& ) const; + inline bool operator!=( const ThreeDPieAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDPieAttributes) + +private: + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDPieAttributes) + + }; // End of class ThreeDPieAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDPieAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDPieAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDPieAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDPieAttributes ) + +#endif // KDCHARTTHREEDPIEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes b/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes new file mode 100644 index 00000000..f3ad001e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes @@ -0,0 +1 @@ +#include "KDChartValueTrackerAttributes.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes.h b/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes.h new file mode 100644 index 00000000..d61a2a55 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartValueTrackerAttributes.h @@ -0,0 +1,139 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTVALUETRACKERATTRIBUTES_H +#define KDCHARTVALUETRACKERATTRIBUTES_H + +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * \class ValueTrackerAttributes KDChartValueTrackerAttributes.h KDChartValueTrackerAttributes + * \brief Cell-specific attributes regarding value tracking + * + * ValueTrackerAttributes groups the properties regarding + * value tracking, and how it is displayed. + * Value tracking can be used to emphasize on one or several + * specific points in a line diagram. + */ + + class KDCHART_EXPORT ValueTrackerAttributes + { + public: + ValueTrackerAttributes(); + ValueTrackerAttributes( const ValueTrackerAttributes& ); + ValueTrackerAttributes &operator= ( const ValueTrackerAttributes& ); + + ~ValueTrackerAttributes(); + + /** Set the pen the value tracking lines and markers will be drawn with + * \param pen The pen the lines and markers will be drawn with + */ + void setPen( const QPen& pen ); + + /** + * @return The pen the lines and markers are drawn with + */ + QPen pen() const; + + void setLinePen( const QPen &pen ); + QPen linePen() const; + + void setMarkerPen( const QPen &pen ); + QPen markerPen() const; + + void setMarkerBrush( const QBrush &brush ); + QBrush markerBrush() const; + + void setArrowBrush( const QBrush &brush ); + QBrush arrowBrush() const; + + /** Set the brush the area below the value tracking + * lines should be filled with. Default is a black brush + * with the style Qt::NoBrush. + * \param brush The brush the area should be filled with + */ + void setAreaBrush( const QBrush& brush ); + + /** + * @return The brush the area below the value tracking lines is filled with + */ + QBrush areaBrush() const; + + /** Set the size of the markers. This includes both the arrows at + * the axises and the circle at the data point. + * \param size The size of the markers + */ + void setMarkerSize( const QSizeF& size ); + + /** + * @return The size of the markers + */ + QSizeF markerSize() const; + + /** + * @return The orientations used to show the value tracking. Using only a + * vertical line, horizontal line or both (the default). + */ + Qt::Orientations orientations() const; + + /** Set the orientations used to show the value tracking. + * \param orientations The orientations of the value tracking lines. + */ + void setOrientations( Qt::Orientations orientations ); + + /** Set whether value tracking should be enabled for a specific + * index or not + * \param enabled Whether value tracking should be enabled or not + */ + void setEnabled( bool enabled ); + + /** + * @return Whether value tracking is enabled or not + */ + bool isEnabled() const; + + bool operator==( const ValueTrackerAttributes& ) const; + inline bool operator!=( const ValueTrackerAttributes& other ) const { return !operator==(other); } + + private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( ValueTrackerAttributes ) + }; // End of class ValueTrackerAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ValueTrackerAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::ValueTrackerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ValueTrackerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ValueTrackerAttributes ) + +#endif // KDCHARTVALUETRACKERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartVerticalLineLayoutItem b/massif-visualizer/kdchart/include/KDChart/KDChartVerticalLineLayoutItem new file mode 100644 index 00000000..7749ab4e --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartVerticalLineLayoutItem @@ -0,0 +1 @@ +#include "KDChartLayoutItems.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartWidget b/massif-visualizer/kdchart/include/KDChart/KDChartWidget new file mode 100644 index 00000000..04d66f67 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartWidget @@ -0,0 +1 @@ +#include "KDChartWidget.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartWidget.h b/massif-visualizer/kdchart/include/KDChart/KDChartWidget.h new file mode 100644 index 00000000..e82ea80f --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartWidget.h @@ -0,0 +1,242 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTWIDGET_H__ +#define __KDCHARTWIDGET_H__ + +#include "KDChartGlobal.h" + +#include + +#include "KDChartEnums.h" +#include "KDChartHeaderFooter.h" + +QT_BEGIN_NAMESPACE +template class QVector; +template struct QPair; +QT_END_NAMESPACE + +namespace KDChart { + + // some forward declarations + class AbstractDiagram; + class Chart; + class AbstractCoordinatePlane; + class TableModel; + class BarDiagram; + class LineDiagram; + class Plotter; + class PieDiagram; + class RingDiagram; + class PolarDiagram; + class Legend; + class Position; + + /** + * \class Widget KDChartWidget.h + * \brief The KD Chart widget for usage without Model/View. + * + * If you want to use KD Chart with Model/View, use KDChart::Chart instead. + */ + class KDCHART_EXPORT Widget : public QWidget + { + Q_OBJECT + + Q_DISABLE_COPY( Widget ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( Widget ) + + public: + /** + * Standard Qt-style Constructor + * + * Creates a new widget with all data initialized empty. + * + * \param parent the widget parent; passed on to QWidget + */ + explicit Widget( QWidget* parent = 0 ); + + /** Destructor. */ + ~Widget(); + /** Sets the data in the given column using a QVector of qreal for the Y values. */ + void setDataset( int column, const QVector< qreal > & data, const QString& title = QString() ); + /** Sets the data in the given column using a QVector of QPairs + * of qreal for the (X, Y) values. */ + void setDataset( int column, const QVector< QPair< qreal, qreal > > & data, const QString& title = QString() ); + /** Sets the Y value data for a given cell. */ + void setDataCell( int row, int column, qreal data ); + /** Sets the data for a given column using an (X, Y) QPair of qreals. */ + void setDataCell( int row, int column, QPair< qreal, qreal > data ); + /** Resets all data. */ + void resetData(); + + public Q_SLOTS: + /** Sets all global leadings (borders). */ + void setGlobalLeading( int left, int top, int right, int bottom ); + /** Sets the left leading (border). */ + void setGlobalLeadingLeft( int leading ); + /** Sets the top leading (border). */ + void setGlobalLeadingTop( int leading ); + /** Sets the right leading (border). */ + void setGlobalLeadingRight( int leading ); + /** Sets the bottom leading (border). */ + void setGlobalLeadingBottom( int leading ); + + public: + /** Returns the left leading (border). */ + int globalLeadingLeft() const; + /** Returns the top leading (border). */ + int globalLeadingTop() const; + /** Returns the right leading (border). */ + int globalLeadingRight() const; + /** Returns the bottom leading (border). */ + int globalLeadingBottom() const; + + /** Returns the first of all headers. */ + HeaderFooter* firstHeaderFooter(); + /** Returns a list with all headers. */ + QList allHeadersFooters(); + + /** Adds a new header/footer with the given text to the position. */ + void addHeaderFooter( const QString& text, + HeaderFooter::HeaderFooterType type, + Position position ); + + /** + * Adds the existing header / footer object \a header. + * \sa replaceHeaderFooter, takeHeaderFooter + */ + void addHeaderFooter( HeaderFooter* header ); + + /** + * Replaces the old header (or footer, resp.), or appends the + * new header or footer, it there is none yet. + * + * @param header The header or footer to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldHeader The header or footer to be removed by the new one. This + * header or footer will be deleted automatically. If the parameter is omitted, + * the very first header or footer will be replaced. In case, there was no + * header and no footer yet, the new header or footer will just be added. + * + * \note If you want to re-use the old header or footer, call takeHeaderFooter and + * addHeaderFooter, instead of using replaceHeaderFooter. + * + * \sa addHeaderFooter, takeHeaderFooter + */ + void replaceHeaderFooter( HeaderFooter* header, + HeaderFooter* oldHeader = 0 ); + + /** Remove the header (or footer, resp.) from the widget, + * without deleting it. + * The chart no longer owns the header or footer, so it is + * the caller's responsibility to delete the header or footer. + * + * \sa addHeaderFooter, replaceHeaderFooter + */ + void takeHeaderFooter( HeaderFooter* header ); + + /** Returns the first of all legends. */ + Legend* legend(); + /** Returns a list with all legends. */ + QList allLegends(); + + /** Adds an empty legend on the given position. */ + void addLegend( Position position ); + /** Adds a new, already existing, legend. */ + void addLegend (Legend* legend ); + + void replaceLegend( Legend* legend, Legend* oldLegend = 0 ); + void takeLegend( Legend* legend ); + + + /** Returns a pointer to the current diagram. */ + AbstractDiagram* diagram(); + + /** If the current diagram is a BarDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + BarDiagram* barDiagram(); + /** If the current diagram is a LineDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + LineDiagram* lineDiagram(); + /** If the current diagram is a LineDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + * + * \note Do not use lineDiagram for multi-dimensional diagrams, but use plotter instead + * + * \sa plotter + */ + Plotter* plotter(); + /** If the current diagram is a Plotter, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + PieDiagram* pieDiagram(); + /** If the current diagram is a RingDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + RingDiagram* ringDiagram(); + /** If the current diagram is a PolarDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + PolarDiagram* polarDiagram(); + + /** Returns a pointer to the current coordinate plane. */ + AbstractCoordinatePlane* coordinatePlane(); + + + enum ChartType { NoType, Bar, Line, Plot, Pie, Ring, Polar }; + + /** Returns the type of the chart. */ + ChartType type() const; + + /** Sub type values, matching the values defines for the respective Diagram classes. */ + enum SubType { Normal, Stacked, Percent, Rows }; + + /** Returns the sub-type of the chart. */ + SubType subType() const; + + public Q_SLOTS: + /** Sets the type of the chart. */ + void setType( ChartType chartType, SubType subType=Normal ); + /** \brief Sets the type of the chart without changing the main type. + * + * Make sure to use a sub-type that matches the main type, + * so e.g. setting sub-type Rows makes sense for Bar charts only, + * and it will be ignored for all other chart types. + * + * \sa KDChartBarDiagram::BarType, KDChartLineDiagram::LineType + * \sa KDChartPieDiagram::PieType, KDChartRingDiagram::RingType + * \sa KDChartPolarDiagram::PolarType + */ + void setSubType( SubType subType ); + + private: + /** Justifies the model, so that the given rows and columns fit into it. */ + void justifyModelSize( int rows, int columns ); + /** Checks wether the given width matches with the one used until now. */ + bool checkDatasetWidth( int width ); + }; +} + +#endif // KDChartWidget_H diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters b/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters new file mode 100644 index 00000000..63f1efdb --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters @@ -0,0 +1 @@ +#include "KDChartZoomParameters.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters.h b/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters.h new file mode 100644 index 00000000..e19f309a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDChartZoomParameters.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef ZOOMPARAMETERS_H +#define ZOOMPARAMETERS_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +namespace KDChart { + /** + * ZoomParameters stores the center and the factor of zooming internally + * \internal + */ + class ZoomParameters { + public: + ZoomParameters() + : xFactor( 1.0 ), + yFactor( 1.0 ), + xCenter( 0.5 ), + yCenter( 0.5) + { + } + + ZoomParameters( qreal xFactor, qreal yFactor, const QPointF& center ) + : xFactor( xFactor ), + yFactor( yFactor ), + xCenter( center.x() ), + yCenter( center.y() ) + { + } + + void setCenter( const QPointF& center ) + { + xCenter = center.x(); + yCenter = center.y(); + } + const QPointF center() const + { + return QPointF( xCenter, yCenter ); + } + + qreal xFactor; + qreal yFactor; + + qreal xCenter; + qreal yCenter; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/KDTextDocument b/massif-visualizer/kdchart/include/KDChart/KDTextDocument new file mode 100644 index 00000000..7ac95b62 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDTextDocument @@ -0,0 +1 @@ +#include "KDTextDocument.h" diff --git a/massif-visualizer/kdchart/include/KDChart/KDTextDocument.h b/massif-visualizer/kdchart/include/KDChart/KDTextDocument.h new file mode 100644 index 00000000..6c014083 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/KDTextDocument.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDTEXTDOCUMENT_H +#define KDTEXTDOCUMENT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +/** + * KDTextDocument is an internally used enhanced QTextDocument + * \internal + */ +class KDTextDocument : public QTextDocument +{ + Q_OBJECT + +public: + explicit KDTextDocument( QObject* parent = 0 ); + explicit KDTextDocument( const QString& text, QObject* parent = 0 ); + ~KDTextDocument(); + + QSize sizeHint(); + QSize minimumSizeHint(); + +private: + QSize sizeForWidth( int width ); + +private: + bool mHintValid; + QSize mSizeHint; + QSize mMinimumSizeHint; +}; + + +#endif /* KDTEXTDOCUMENT_H */ + diff --git a/massif-visualizer/kdchart/include/KDChart/ReverseMapper b/massif-visualizer/kdchart/include/KDChart/ReverseMapper new file mode 100644 index 00000000..b8a0ae2a --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/ReverseMapper @@ -0,0 +1 @@ +#include "ReverseMapper.h" diff --git a/massif-visualizer/kdchart/include/KDChart/ReverseMapper.h b/massif-visualizer/kdchart/include/KDChart/ReverseMapper.h new file mode 100644 index 00000000..51b73665 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/ReverseMapper.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef REVERSEMAPPER_H +#define REVERSEMAPPER_H + +#include +#include + +QT_BEGIN_NAMESPACE +class QRectF; +class QGraphicsScene; +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractDiagram; + class ChartGraphicsItem; + + /** + * @brief The ReverseMapper stores information about objects on a chart and their respective model indexes + * \internal + */ + class ReverseMapper + { + + public: + ReverseMapper(); + explicit ReverseMapper( AbstractDiagram* diagram ); + + ~ReverseMapper(); + + void setDiagram( AbstractDiagram* diagram ); + + void clear(); + + QModelIndexList indexesAt( const QPointF& point ) const; + QModelIndexList indexesIn( const QRect& rect ) const; + + QPolygonF polygon( int row, int column ) const; + QRectF boundingRect( int row, int column ) const; + + void addItem( ChartGraphicsItem* item ); + + // convenience methods: + void addPolygon( int row, int column, const QPolygonF& polygon ); + void addRect( int row, int column, const QRectF& rect ); + void addCircle( int row, int column, const QPointF& location, const QSizeF& diameter ); + void addLine( int row, int column, const QPointF& from, const QPointF& to ); + + private: + QGraphicsScene* m_scene; + AbstractDiagram* m_diagram; + QHash m_itemMap; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/TernaryConstants b/massif-visualizer/kdchart/include/KDChart/TernaryConstants new file mode 100644 index 00000000..0c2d81c8 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/TernaryConstants @@ -0,0 +1 @@ +#include "TernaryConstants.h" diff --git a/massif-visualizer/kdchart/include/KDChart/TernaryConstants.h b/massif-visualizer/kdchart/include/KDChart/TernaryConstants.h new file mode 100644 index 00000000..6a492d17 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/TernaryConstants.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef TERNARYCONSTANTS_H +#define TERNARYCONSTANTS_H + +#include + +extern const qreal Sqrt3; +extern const qreal TriangleWidth; +extern const qreal TriangleHeight; +extern const QPointF TriangleTop; +extern const QPointF TriangleBottomLeft; +extern const QPointF TriangleBottomRight; +extern const QPointF AxisVector_C_A; +extern const QPointF Norm_C_A; +extern const QPointF AxisVector_B_A; +extern const QPointF Norm_B_A; +extern const QPointF AxisVector_B_C; +extern const QPointF Norm_B_C; +extern const qreal RelMarkerLength; +extern const QPointF FullMarkerDistanceBC; +extern const QPointF FullMarkerDistanceAC; +extern const QPointF FullMarkerDistanceBA; + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/TernaryPoint b/massif-visualizer/kdchart/include/KDChart/TernaryPoint new file mode 100644 index 00000000..c59b1ff4 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/TernaryPoint @@ -0,0 +1 @@ +#include "TernaryPoint.h" diff --git a/massif-visualizer/kdchart/include/KDChart/TernaryPoint.h b/massif-visualizer/kdchart/include/KDChart/TernaryPoint.h new file mode 100644 index 00000000..ce070882 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/TernaryPoint.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef TERNARYPOINT_H +#define TERNARYPOINT_H + +#include +#include + +/** + * @brief TernaryPoint defines a point within a ternary coordinate plane + * \internal + */ +class TernaryPoint +{ +public: + TernaryPoint(); + TernaryPoint( qreal a, qreal b ); + + qreal a() const { return m_a; } + qreal b() const { return m_b; } + qreal c() const { return 1.0 - m_a - m_b; } + + void set( qreal a, qreal b ); + + bool isValid() const; + +private: + qreal m_a; + qreal m_b; +}; + +QDebug operator<<( QDebug stream, const TernaryPoint& point ); + +QPointF translate( const TernaryPoint& ); + +#endif diff --git a/massif-visualizer/kdchart/include/KDChart/kdchart_export b/massif-visualizer/kdchart/include/KDChart/kdchart_export new file mode 100644 index 00000000..557ff389 --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/kdchart_export @@ -0,0 +1 @@ +#include "kdchart_export.h" diff --git a/massif-visualizer/kdchart/include/KDChart/kdchart_export.h b/massif-visualizer/kdchart/include/KDChart/kdchart_export.h new file mode 100644 index 00000000..93b64d6c --- /dev/null +++ b/massif-visualizer/kdchart/include/KDChart/kdchart_export.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_EXPORT_H +#define KDCHART_EXPORT_H + +#include + +# ifdef KDCHART_STATICLIB +# undef KDCHART_SHAREDLIB +# define KDCHART_EXPORT +# define KDGANTT_EXPORT +# define KDCHART_COMPAT_EXPORT +# else +# ifdef KDCHART_BUILD_KDCHART_LIB +# define KDCHART_EXPORT Q_DECL_EXPORT +# define KDGANTT_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_EXPORT Q_DECL_IMPORT +# define KDGANTT_EXPORT Q_DECL_IMPORT +# endif +# ifdef KDCHART_BUILD_KDCHART_COMPAT_LIB +# define KDCHART_COMPAT_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_COMPAT_EXPORT Q_DECL_IMPORT +# endif +# ifdef KDCHART_BUILD_PLUGIN_LIB +# define KDCHART_PLUGIN_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_PLUGIN_EXPORT Q_DECL_IMPORT +# endif +# endif + +#endif // KDCHART_EXPORT_H diff --git a/massif-visualizer/kdchart/kdablibfakes/include/KDABLibFakes b/massif-visualizer/kdchart/kdablibfakes/include/KDABLibFakes new file mode 100644 index 00000000..b96bd3ef --- /dev/null +++ b/massif-visualizer/kdchart/kdablibfakes/include/KDABLibFakes @@ -0,0 +1 @@ +#include "../src/KDABLibFakes.h" diff --git a/massif-visualizer/kdchart/kdablibfakes/src/KDABLibFakes.h b/massif-visualizer/kdchart/kdablibfakes/src/KDABLibFakes.h new file mode 100644 index 00000000..ba4c7cd3 --- /dev/null +++ b/massif-visualizer/kdchart/kdablibfakes/src/KDABLibFakes.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDAB_LIB_FAKES_H +#define KDAB_LIB_FAKES_H + +#if defined Q_OS_DARWIN +#include +#endif + +#include + +#ifdef Q_OS_SOLARIS +#include +#include +#endif + +#include + +#include + +#define NaN std::numeric_limits< qreal >::quiet_NaN() +#define signalingNaN std::numeric_limits< qreal >::signaling_NaN() + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define DEGTORAD(d) (d)*M_PI/180 + +// Smybian's math.h doesn't define a trunc function +#if defined(Q_OS_SYMBIAN) || defined(QT_SIMULATOR) +#define trunc(x) (qreal) ((int) (x + (x >= 0.0 ? -0.5 : 0.5))) +#endif + +// We use our own ISNAN / ISINF in the code to detect +// that we defined them. +// reason: Windows does not have isnan() / isinf() +#if defined (Q_OS_WIN) +#include +#define ISNAN(x ) _isnan(x ) +#define ISINF(x ) (!(_finite(x ) + _isnan(x ) ) ) +#elif defined (Q_OS_DARWIN) +// OS X does have isnan() & isinf() in math.h, but it appears to be +// required to cast the argument to a double explicitly. +#define ISNAN(x) isnan(double(x)) +#define ISINF(x) isinf(double(x)) +#elif defined (Q_OS_CYGWIN) || __cplusplus >= 201103L +#define ISNAN(x) std::isnan(x) +#define ISINF(x) std::isinf(x) +#else +#define ISNAN(x) isnan(x) +#define ISINF(x) isinf(x) +#endif + + +// We wrap every for () by extra { } to work around +// the scope bug for loop counters in MS Visual C++ v6 +#if defined(Q_CC_MSVC) && !defined(Q_CC_MSVC_NET) +/* This is done in Qt41 qglobal.h but not Qt42*/ +#if QT_VERSION < 0x040200 +#define for if (0) {} else for +#endif +#define KDAB_FOREACH( v, c ) if (0) {} else Q_FOREACH( v, c ) +#else +#define KDAB_FOREACH( v, c ) Q_FOREACH( v, c ) +#endif + +#endif diff --git a/massif-visualizer/kdchart/src/CMakeLists.txt b/massif-visualizer/kdchart/src/CMakeLists.txt new file mode 100644 index 00000000..26102a71 --- /dev/null +++ b/massif-visualizer/kdchart/src/CMakeLists.txt @@ -0,0 +1,120 @@ +include_directories( + ${KDE4_INCLUDES} + ${CMAKE_CURRENT_SOURCE_DIR}/../include + ${CMAKE_CURRENT_SOURCE_DIR}/../kdablibfakes/include + ${CMAKE_CURRENT_SOURCE_DIR}/KDChart + ${CMAKE_CURRENT_SOURCE_DIR}/KDChart/Cartesian + ${CMAKE_CURRENT_SOURCE_DIR}/KDChart/Cartesian/DiagramFlavors + ${CMAKE_CURRENT_SOURCE_DIR}/KDChart/Polar + ${CMAKE_CURRENT_SOURCE_DIR}/KDChart/Ternary +) + +ADD_DEFINITIONS(-DKDCHART_BUILD_KDCHART_LIB) + +########### next target ############### + +set(kdchart_LIB_SRCS + KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.cpp + KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.cpp + KDChart/Cartesian/KDChartAbstractCartesianDiagram.cpp + KDChart/Cartesian/KDChartBarAttributes.cpp + KDChart/Cartesian/KDChartBarDiagram.cpp + KDChart/Cartesian/KDChartBarDiagram_p.cpp + KDChart/Cartesian/KDChartCartesianAxis.cpp + KDChart/Cartesian/KDChartCartesianCoordinatePlane.cpp + KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.cpp + KDChart/Cartesian/KDChartCartesianGrid.cpp + KDChart/Cartesian/KDChartLeveyJenningsAxis.cpp + KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.cpp + KDChart/Cartesian/KDChartLeveyJenningsDiagram.cpp + KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.cpp + KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.cpp + KDChart/Cartesian/KDChartLeveyJenningsGrid.cpp + KDChart/Cartesian/KDChartLineDiagram.cpp + KDChart/Cartesian/KDChartLineDiagram_p.cpp + KDChart/Cartesian/KDChartPlotter.cpp + KDChart/Cartesian/KDChartPlotterDiagramCompressor.cpp + KDChart/Cartesian/KDChartPlotter_p.cpp + KDChart/Cartesian/KDChartStockBarAttributes.cpp + KDChart/Cartesian/KDChartStockDiagram.cpp + KDChart/Cartesian/KDChartStockDiagram_p.cpp + KDChart/Cartesian/KDChartThreeDBarAttributes.cpp + KDChart/Cartesian/PaintingHelpers_p.cpp + KDChart/ChartGraphicsItem.cpp + KDChart/KDChartAbstractAreaBase.cpp + KDChart/KDChartAbstractArea.cpp + KDChart/KDChartAbstractAreaWidget.cpp + KDChart/KDChartAbstractAxis.cpp + KDChart/KDChartAbstractCoordinatePlane.cpp + KDChart/KDChartAbstractDiagram.cpp + KDChart/KDChartAbstractDiagram_p.cpp + KDChart/KDChartAbstractGrid.cpp + KDChart/KDChartAbstractProxyModel.cpp + KDChart/KDChartAbstractThreeDAttributes.cpp + KDChart/KDChartAttributesModel.cpp + KDChart/KDChartBackgroundAttributes.cpp + KDChart/KDChartChart.cpp + KDChart/KDChartDatasetProxyModel.cpp + KDChart/KDChartDatasetSelector.cpp + KDChart/KDChartDataValueAttributes.cpp + KDChart/KDChartDiagramObserver.cpp + KDChart/KDChartFrameAttributes.cpp + KDChart/KDChartGridAttributes.cpp + KDChart/KDChartHeaderFooter.cpp + KDChart/KDChartLayoutItems.cpp + KDChart/KDChartLegend.cpp + KDChart/KDChartLineAttributes.cpp + KDChart/KDChartMarkerAttributes.cpp + KDChart/KDChartMeasure.cpp + KDChart/KDChartModelDataCache_p.cpp + KDChart/KDChartPaintContext.cpp + KDChart/KDChartPalette.cpp + KDChart/KDChartPosition.cpp + KDChart/KDChartPrintingParameters.cpp + KDChart/KDChartRelativePosition.cpp + KDChart/KDChartRulerAttributes.cpp + KDChart/KDChartSignalCompressor.cpp + KDChart/KDChartTextArea.cpp + KDChart/KDChartTextAttributes.cpp + KDChart/KDChartTextLabelCache.cpp + KDChart/KDChartThreeDLineAttributes.cpp + KDChart/KDChartValueTrackerAttributes.cpp + KDChart/KDChartWidget.cpp + KDChart/KDTextDocument.cpp + KDChart/Polar/KDChartAbstractPieDiagram.cpp + KDChart/Polar/KDChartAbstractPolarDiagram.cpp + KDChart/Polar/KDChartPieAttributes.cpp + KDChart/Polar/KDChartPieDiagram.cpp + KDChart/Polar/KDChartPolarCoordinatePlane.cpp + KDChart/Polar/KDChartPolarDiagram.cpp + KDChart/Polar/KDChartPolarGrid.cpp + KDChart/Polar/KDChartRadarCoordinatePlane.cpp + KDChart/Polar/KDChartRadarDiagram.cpp + KDChart/Polar/KDChartRadarGrid.cpp + KDChart/Polar/KDChartRingDiagram.cpp + KDChart/Polar/KDChartThreeDPieAttributes.cpp + KDChart/ReverseMapper.cpp + KDChart/Ternary/KDChartAbstractTernaryDiagram.cpp + KDChart/Ternary/KDChartTernaryAxis.cpp + KDChart/Ternary/KDChartTernaryCoordinatePlane.cpp + KDChart/Ternary/KDChartTernaryGrid.cpp + KDChart/Ternary/KDChartTernaryLineDiagram.cpp + KDChart/Ternary/KDChartTernaryPointDiagram.cpp + KDChart/Ternary/TernaryConstants.cpp + KDChart/Ternary/TernaryPoint.cpp +) + +add_library(mv-kdchart STATIC ${kdchart_LIB_SRCS}) + +target_link_libraries(mv-kdchart LINK_PRIVATE +${QT_QTSVG_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY} ${ZLIB_LIBRARY} ) diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/CartesianCoordinateTransformation.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/CartesianCoordinateTransformation.h new file mode 100644 index 00000000..08925ac2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/CartesianCoordinateTransformation.h @@ -0,0 +1,147 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef CARTESIANCOORDINATETRANSFORMATION_H +#define CARTESIANCOORDINATETRANSFORMATION_H + +#include +#include +#include + +#include "KDChartZoomParameters.h" + +#include +#include + +namespace KDChart { + + // FIXME: if this struct is used more often, we need to make it a class + // with proper accessor methods: + + /** + * \internal + */ + struct CoordinateTransformation { + + CoordinateTransformation() + : axesCalcModeY( CartesianCoordinatePlane::Linear ), + axesCalcModeX( CartesianCoordinatePlane::Linear ), + isPositiveX( true ), + isPositiveY( true ) + {} + + CartesianCoordinatePlane::AxesCalcMode axesCalcModeY; + CartesianCoordinatePlane::AxesCalcMode axesCalcModeX; + + ZoomParameters zoom; + + QTransform transform; + QTransform backTransform; + // a logarithmic scale cannot cross zero, so we have to know which side we are on. + bool isPositiveX; + bool isPositiveY; + + qreal logTransform( qreal value, bool isPositiveRange ) const + { + if ( isPositiveRange ) { + return log10( value ); + } else { + return -log10( -value ); + } + } + + qreal logTransformBack( qreal value, bool wasPositive ) const + { + if ( wasPositive ) { + return pow( 10.0, value ); + } else { + return -pow( 10.0, -value ); + } + } + + void updateTransform( const QRectF& constDataRect, const QRectF& screenRect ) + { + QRectF dataRect = constDataRect; + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + // the data will be scaled by logTransform() later, so scale its bounds as well + isPositiveX = dataRect.left() >= 0.0; + dataRect.setLeft( logTransform( dataRect.left(), isPositiveX ) ); + dataRect.setRight( logTransform( dataRect.right(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + isPositiveY = dataRect.top() >= 0.0; + dataRect.setTop( logTransform( dataRect.top(), isPositiveY ) ); + dataRect.setBottom( logTransform( dataRect.bottom(), isPositiveY ) ); + } + + transform.reset(); + // read the following transformation sequence from bottom to top(!) + transform.translate( screenRect.left(), screenRect.bottom() ); + transform.scale( screenRect.width(), screenRect.height() ); + + // TODO: mirror in case of "reverse" axes? + + // transform into screen space + transform.translate( 0.5, -0.5 ); + transform.scale( zoom.xFactor, zoom.yFactor ); + transform.translate( -zoom.xCenter, 1.0 - zoom.yCenter ); + // zoom + transform.scale( 1.0 / dataRect.width(), 1.0 / dataRect.height() ); + transform.translate( -dataRect.left(), -dataRect.bottom() ); + // transform into the unit square + + backTransform = transform.inverted(); + } + + // convert data space point to screen point + inline QPointF translate( const QPointF& dataPoint ) const + { + QPointF data = dataPoint; + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + data.setX( logTransform( data.x(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + data.setY( logTransform( data.y(), isPositiveY ) ); + } + + return transform.map( data ); + } + + // convert screen point to data space point + inline const QPointF translateBack( const QPointF& screenPoint ) const + { + QPointF ret = backTransform.map( screenPoint ); + if ( axesCalcModeX == CartesianCoordinatePlane::Logarithmic ) { + ret.setX( logTransformBack( ret.x(), isPositiveX ) ); + } + if ( axesCalcModeY == CartesianCoordinatePlane::Logarithmic ) { + ret.setY( logTransformBack( ret.y(), isPositiveY ) ); + } + return ret; + } + }; + + typedef QList CoordinateTransformationList; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.cpp new file mode 100644 index 00000000..efbebfee --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.cpp @@ -0,0 +1,200 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartNormalBarDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" + +using namespace KDChart; +using namespace std; + +NormalBarDiagram::NormalBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType NormalBarDiagram::type() const +{ + return BarDiagram::Normal; +} + +const QPair NormalBarDiagram::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + const qreal xMin = 0.0; + const qreal xMax = rowCount; + qreal yMin = 0.0; + qreal yMax = 0.0; + + qreal usedDepth = 0; + + bool isFirst = true; + for ( int column = 0; column < colCount; ++column ) { + for ( int row = 0; row < rowCount; ++row ) { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const qreal value = ISNAN( point.value ) ? 0.0 : point.value; + + QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( sourceIndex ); + + if ( threeDAttrs.isEnabled() ) + usedDepth = qMax( usedDepth, threeDAttrs.depth() ); + + // this is always true yMin can be 0 in case all values + // are the same + // same for yMax it can be zero if all values are negative + if ( isFirst ) { + yMin = value; + yMax = value; + isFirst = false; + } else { + yMin = qMin( yMin, value ); + yMax = qMax( yMax, value ); + } + } + } + + // special cases + if ( yMax == yMin ) { + if ( yMin == 0.0 ) { + yMax = 0.1; // we need at least a range + } else if ( yMax < 0.0 ) { + yMax = 0.0; // extend the range to zero + } else if ( yMin > 0.0 ) { + yMin = 0.0; // dito + } + } + + return QPair< QPointF, QPointF >( QPointF( xMin, yMin ), QPointF( xMax, yMax ) ); +} + +void NormalBarDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = attributesModel()->rowCount(attributesModelRootIndex()); + const int colCount = attributesModel()->columnCount(attributesModelRootIndex()); + + BarAttributes ba = diagram()->barAttributes(); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes(); + + //we need some margin (hence the 2.5) for the three dimensional depth + const qreal threeDepthMargin = ( threeDAttrs.isEnabled() ) ? 2.5 * threeDAttrs.depth() : 0; + + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundRight.x() - boundLeft.x() - threeDepthMargin; + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * ( groupWidth + ( ( colCount - 1 ) * ba.fixedDataValueGap() ) ); + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( width > maxLimit ) { + spaceBetweenBars += ba.fixedDataValueGap(); + } else { + spaceBetweenBars = ( ( width / rowCount ) - groupWidth ) / ( colCount - 1 ); + } + } + + if ( ba.useFixedValueBlockGap() ) { + spaceBetweenGroups += ba.fixedValueBlockGap(); + } + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + + for ( int row = 0; row < rowCount; ++row ) { + qreal offset = -groupWidth / 2 + spaceBetweenGroups / 2; + + if ( ba.useFixedDataValueGap() ) { + if ( spaceBetweenBars > 0 ) { + if ( width > maxLimit ) { + offset -= ba.fixedDataValueGap(); + } else { + offset -= ( ( width / rowCount ) - groupWidth ) / ( colCount - 1 ); + } + } else { + offset += barWidth / 2; + } + } + + for ( int column = 0; column < colCount; ++column ) { + // paint one group + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + const qreal value = point.value;//attributesModel()->data( sourceIndex ).toReal(); + if ( ! point.hidden && !ISNAN( value ) ) { + QPointF topPoint = ctx->coordinatePlane()->translate( QPointF( point.key + 0.5, value ) ); + QPointF bottomPoint = ctx->coordinatePlane()->translate( QPointF( point.key, 0 ) ); + + if ( threeDAttrs.isEnabled() ) { + const qreal usedDepth = threeDAttrs.depth() / 4; + topPoint.setY( topPoint.y() + usedDepth + 1.0 ); + } + + const qreal barHeight = bottomPoint.y() - topPoint.y(); + topPoint.setX( topPoint.x() + offset ); + const QRectF rect( topPoint, QSizeF( barWidth, barHeight ) ); + m_private->addLabel( &lpc, sourceIndex, 0, PositionPoints( rect ), Position::North, + Position::South, point.value ); + paintBars( ctx, sourceIndex, rect, maxDepth ); + } + offset += barWidth + spaceBetweenBars; + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.h new file mode 100644 index 00000000..cdaea25e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalBarDiagram_p.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTNORMALBARDIAGRAM_P_H +#define KDCHARTNORMALBARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class NormalBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit NormalBarDiagram( BarDiagram* ); + virtual ~NormalBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.cpp new file mode 100644 index 00000000..f065ca50 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.cpp @@ -0,0 +1,156 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartLineDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartNormalLineDiagram_p.h" +#include "PaintingHelpers_p.h" + +using namespace KDChart; +using namespace std; + +NormalLineDiagram::NormalLineDiagram( LineDiagram* d ) + : LineDiagramType( d ) +{ +} + +LineDiagram::LineType NormalLineDiagram::type() const +{ + return LineDiagram::Normal; +} + +const QPair< QPointF, QPointF > NormalLineDiagram::calculateDataBoundaries() const +{ + return compressor().dataBoundaries(); +} + +void NormalLineDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + Q_ASSERT( dynamic_cast( ctx->coordinatePlane() ) ); + CartesianCoordinatePlane* plane = static_cast( ctx->coordinatePlane() ); + const int columnCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + if ( columnCount == 0 || rowCount == 0 ) return; // maybe blank out the area? + + // Reverse order of data sets? + bool rev = diagram()->reverseDatasetOrder(); + LabelPaintCache lpc; + LineAttributesInfoList lineList; + + const int step = rev ? -1 : 1; + const int end = rev ? -1 : columnCount; + for ( int column = rev ? columnCount - 1 : 0; column != end; column += step ) { + LineAttributes laPreviousCell; + CartesianDiagramDataCompressor::DataPoint lastPoint; + qreal lastAreaBoundingValue = 0; + + // Get min. y value, used as lower or upper bounding for area highlighting + const qreal minYValue = qMin(plane->visibleDataRange().bottom(), plane->visibleDataRange().top()); + + CartesianDiagramDataCompressor::CachePosition previousCellPosition; + for ( int row = 0; row < rowCount; ++row ) { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + // get where to draw the line from: + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if ( point.hidden ) { + continue; + } + + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + + const LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + + // lower or upper bounding for the highlighted area + qreal areaBoundingValue; + if ( laCell.areaBoundingDataset() != -1 ) { + const CartesianDiagramDataCompressor::CachePosition areaBoundingCachePosition( row, laCell.areaBoundingDataset() ); + areaBoundingValue = compressor().data( areaBoundingCachePosition ).value; + } else { + // Use min. y value (i.e. zero line in most cases) if no bounding dataset is set + areaBoundingValue = minYValue; + } + + if ( ISNAN( point.value ) ) + { + switch ( policy ) + { + case LineAttributes::MissingValuesAreBridged: + // we just bridge both values + continue; + case LineAttributes::MissingValuesShownAsZero: + // set it to zero + point.value = 0.0; + break; + case LineAttributes::MissingValuesHideSegments: + // they're just hidden + break; + default: + break; + // hm.... + } + } + + if ( !ISNAN( point.value ) ) { + // area corners, a + b are the line ends: + const qreal offset = diagram()->centerDataPoints() ? 0.5 : 0; + const QPointF a( plane->translate( QPointF( lastPoint.key + offset, lastPoint.value ) ) ); + const QPointF b( plane->translate( QPointF( point.key + offset, point.value ) ) ); + const QPointF c( plane->translate( QPointF( lastPoint.key + offset, lastAreaBoundingValue ) ) ); + const QPointF d( plane->translate( QPointF( point.key + offset, areaBoundingValue ) ) ); + const PositionPoints pts = PositionPoints( b, a, d, c ); + + // add label + m_private->addLabel( &lpc, sourceIndex, &position, pts, Position::NorthWest, + Position::NorthWest, point.value ); + + // add line and area, if switched on and we have a current and previous value + if ( !ISNAN( lastPoint.value ) ) { + lineList.append( LineAttributesInfo( sourceIndex, a, b ) ); + + if ( laCell.displayArea() ) { + QList areas; + areas << ( QPolygonF() << a << b << d << c ); + PaintingHelpers::paintAreas( m_private, ctx, attributesModel()->mapToSource( lastPoint.index ), + areas, laCell.transparency() ); + } + } + } + + previousCellPosition = position; + laPreviousCell = laCell; + lastAreaBoundingValue = areaBoundingValue; + lastPoint = point; + } + } + + // paint the lines + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.h new file mode 100644 index 00000000..e36501dc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLineDiagram_p.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTNORMALLINEDIAGRAM_P_H +#define KDCHARTNORMALLINEDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include "KDChartLineDiagram_p.h" + +namespace KDChart { + + class NormalLineDiagram : public LineDiagram::LineDiagramType + { + public: + explicit NormalLineDiagram( LineDiagram* ); + virtual ~NormalLineDiagram() {} + virtual LineDiagram::LineType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.cpp new file mode 100644 index 00000000..1fe42b5d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.cpp @@ -0,0 +1,185 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartNormalLyingBarDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" + +using namespace KDChart; +using namespace std; + +NormalLyingBarDiagram::NormalLyingBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType NormalLyingBarDiagram::type() const +{ + return BarDiagram::Normal; +} + +// TODO there is a lot of duplication between this and the non-lying bar diagram, fix it someday... +const QPair NormalLyingBarDiagram::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + const qreal xMin = 0.0; + const qreal xMax = rowCount; + qreal yMin = 0.0; + qreal yMax = 0.0; + + bool isFirst = true; + for ( int column = 0; column < colCount; ++column ) { + for ( int row = 0; row < rowCount; ++row ) { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const qreal value = ISNAN( point.value ) ? 0.0 : point.value; + // this is always true yMin can be 0 in case all values + // are the same + // same for yMax it can be zero if all values are negative + if ( isFirst ) { + yMin = value; + yMax = value; + isFirst = false; + } else { + yMin = qMin( yMin, value ); + yMax = qMax( yMax, value ); + } + } + } + + // special cases + if ( yMax == yMin ) { + if ( yMin == 0.0 ) { + yMax = 0.1; // we need at least a range + } else if ( yMax < 0.0 ) { + yMax = 0.0; // they are the same and negative + } else if ( yMin > 0.0 ) { + yMin = 0.0; // they are the same but positive + } + } + const QPointF bottomLeft( QPointF( yMin, xMin ) ); + const QPointF topRight( QPointF( yMax, xMax ) ); + + return QPair< QPointF, QPointF >( bottomLeft, topRight ); +} + +void NormalLyingBarDiagram::paint( PaintContext* ctx ) +{ + // FIXME: in all LyingBarDiagram types, the datasets are rendered top to bottom, but the abscissa + // (in that case Y axis) ticks are still bottom to top. So tick labels are in reverse order. + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = attributesModel()->rowCount( attributesModelRootIndex() ); + const int colCount = attributesModel()->columnCount( attributesModelRootIndex() ); + + BarAttributes ba = diagram()->barAttributes(); + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundLeft.y() - boundRight.y(); + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * ( groupWidth + ( colCount - 1 ) * ba.fixedDataValueGap() ); + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( width > maxLimit ) + spaceBetweenBars += ba.fixedDataValueGap(); + else + spaceBetweenBars = ( width / rowCount - groupWidth ) / ( colCount - 1 ); + } + + if ( ba.useFixedValueBlockGap() ) { + spaceBetweenGroups += ba.fixedValueBlockGap(); + } + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + + for ( int row = 0; row < rowCount; row++ ) { + qreal offset = -groupWidth / 2 + spaceBetweenGroups / 2; + + if ( ba.useFixedDataValueGap() ) { + if ( spaceBetweenBars > 0 ) { + if ( width > maxLimit ) { + offset -= ba.fixedDataValueGap(); + } else { + offset -= ( width / rowCount - groupWidth ) / ( colCount - 1 ); + } + } else { + offset += barWidth / 2; + } + } + + for ( int column = 0; column < colCount; column++ ) { + // paint one group + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + + QPointF dataPoint( 0, rowCount - ( point.key + 0.5 ) ); + const QPointF topLeft = ctx->coordinatePlane()->translate( dataPoint ); + dataPoint.rx() += point.value; + const QPointF bottomRight = ctx->coordinatePlane()->translate( dataPoint ) + + QPointF( 0, barWidth ); + + const QRectF rect = QRectF( topLeft, bottomRight ).translated( 1.0, offset ); + m_private->addLabel( &lpc, sourceIndex, 0, PositionPoints( rect ), Position::North, + Position::South, point.value ); + paintBars( ctx, sourceIndex, rect, maxDepth ); + + offset += barWidth + spaceBetweenBars; + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.h new file mode 100644 index 00000000..f00d88ac --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalLyingBarDiagram_p.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTNORMALLYINGBARDIAGRAM_P_H +#define KDCHARTNORMALLYINGBARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class NormalLyingBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit NormalLyingBarDiagram( BarDiagram* ); + virtual ~NormalLyingBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.cpp new file mode 100644 index 00000000..225f8ddc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartNormalPlotter_p.h" +#include "KDChartPlotter.h" +#include "PaintingHelpers_p.h" + +#include + +using namespace KDChart; +using namespace std; + +NormalPlotter::NormalPlotter( Plotter* d ) + : PlotterType( d ) +{ +} + +Plotter::PlotType NormalPlotter::type() const +{ + return Plotter::Normal; +} + +const QPair< QPointF, QPointF > NormalPlotter::calculateDataBoundaries() const +{ + if ( diagram()->useDataCompression() != Plotter::NONE ) + return plotterCompressor().dataBoundaries(); + else + return compressor().dataBoundaries(); +} + +void NormalPlotter::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + Q_ASSERT( dynamic_cast< CartesianCoordinatePlane* >( ctx->coordinatePlane() ) ); + const CartesianCoordinatePlane* const plane = static_cast< CartesianCoordinatePlane* >( ctx->coordinatePlane() ); + const int colCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + + LabelPaintCache lpc; + + if ( diagram()->useDataCompression() != Plotter::NONE ) + { + for ( int dataset = 0; dataset < plotterCompressor().datasetCount(); ++dataset ) + { + LineAttributesInfoList lineList; + PlotterDiagramCompressor::DataPoint lastPoint; + for ( PlotterDiagramCompressor::Iterator it = plotterCompressor().begin( dataset ); it != plotterCompressor().end( dataset ); ++ it ) + { + const PlotterDiagramCompressor::DataPoint point = *it; + + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + + if ( ISNAN( point.key ) || ISNAN( point.value ) ) + { + switch ( policy ) + { + case LineAttributes::MissingValuesAreBridged: // we just bridge both values + continue; + case LineAttributes::MissingValuesShownAsZero: // fall-through since that attribute makes no sense for the plotter + case LineAttributes::MissingValuesHideSegments: // fall-through since they're just hidden + default: + lastPoint = PlotterDiagramCompressor::DataPoint(); + continue; + } + } + + // data area painting: a and b are prev / current data points, c and d are on the null line + const QPointF b( plane->translate( QPointF( point.key, point.value ) ) ); + + if ( !point.hidden && PaintingHelpers::isFinite( b ) ) { + const QPointF a( plane->translate( QPointF( lastPoint.key, lastPoint.value ) ) ); + const QPointF c( plane->translate( QPointF( lastPoint.key, 0.0 ) ) ); + const QPointF d( plane->translate( QPointF( point.key, 0.0 ) ) ); + + // data point label + const PositionPoints pts = PositionPoints( b, a, d, c ); + m_private->addLabel( &lpc, sourceIndex, 0, pts, Position::NorthWest, + Position::NorthWest, point.value ); + + const bool lineValid = a.toPoint() != b.toPoint() && PaintingHelpers::isFinite( a ); + if ( lineValid ) { + // data line + lineList.append( LineAttributesInfo( sourceIndex, a, b ) ); + + if ( laCell.displayArea() ) { + // data area + QList areas; + QPolygonF polygon; + polygon << a << b << d << c; + areas << polygon; + PaintingHelpers::paintAreas( m_private, ctx, + attributesModel()->mapToSource( lastPoint.index ), + areas, laCell.transparency() ); + } + } + } + + lastPoint = point; + } + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); + } + } + else + { + if ( colCount == 0 || rowCount == 0 ) + return; + for ( int column = 0; column < colCount; ++column ) + { + LineAttributesInfoList lineList; + CartesianDiagramDataCompressor::DataPoint lastPoint; + + for ( int row = 0; row < rowCount; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + + if ( ISNAN( point.key ) || ISNAN( point.value ) ) + { + switch ( policy ) + { + case LineAttributes::MissingValuesAreBridged: // we just bridge both values + continue; + case LineAttributes::MissingValuesShownAsZero: // fall-through since that attribute makes no sense for the plotter + case LineAttributes::MissingValuesHideSegments: // fall-through since they're just hidden + default: + lastPoint = CartesianDiagramDataCompressor::DataPoint(); + continue; + } + } + + // data area painting: a and b are prev / current data points, c and d are on the null line + const QPointF b( plane->translate( QPointF( point.key, point.value ) ) ); + + if ( !point.hidden && PaintingHelpers::isFinite( b ) ) { + const QPointF a( plane->translate( QPointF( lastPoint.key, lastPoint.value ) ) ); + const QPointF c( plane->translate( QPointF( lastPoint.key, 0.0 ) ) ); + const QPointF d( plane->translate( QPointF( point.key, 0.0 ) ) ); + + // data point label + const PositionPoints pts = PositionPoints( b, a, d, c ); + m_private->addLabel( &lpc, sourceIndex, 0, pts, Position::NorthWest, + Position::NorthWest, point.value ); + + const bool lineValid = a.toPoint() != b.toPoint() && PaintingHelpers::isFinite( a ); + if ( lineValid ) { + // data line + lineList.append( LineAttributesInfo( sourceIndex, a, b ) ); + + if ( laCell.displayArea() ) { + // data area + QList areas; + QPolygonF polygon; + polygon << a << b << d << c; + areas << polygon; + PaintingHelpers::paintAreas( m_private, ctx, + attributesModel()->mapToSource( lastPoint.index ), + areas, laCell.transparency() ); + } + } + } + + lastPoint = point; + } + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); + } + } +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.h new file mode 100644 index 00000000..add0aaa6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartNormalPlotter_p.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTNORMALPLOTTER_P_H +#define KDCHARTNORMALPLOTTER_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +#include "KDChartPlotter_p.h" + +namespace KDChart { + + class NormalPlotter : public Plotter::PlotterType + { + public: + explicit NormalPlotter( Plotter* ); + virtual ~NormalPlotter() {} + virtual Plotter::PlotType type() const; + virtual const QPair< QPointF, QPointF > calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.cpp new file mode 100644 index 00000000..1a7e3c04 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.cpp @@ -0,0 +1,203 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPercentBarDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" + +using namespace KDChart; + +PercentBarDiagram::PercentBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType PercentBarDiagram::type() const +{ + return BarDiagram::Percent; +} + +const QPair PercentBarDiagram::calculateDataBoundaries() const +{ + const int rowCount = diagram()->model() ? diagram()->model()->rowCount( diagram()->rootIndex() ) : 0; + const int colCount = diagram()->model() ? diagram()->model()->columnCount( diagram()->rootIndex() ) : 0; + + const qreal xMin = 0.0; + const qreal xMax = rowCount; + const qreal yMin = 0.0; + const qreal yMax = 100.0; + + qreal usedDepth = 0; + + for ( int row = 0; row < rowCount ; ++row ) { + for ( int col = 0; col < colCount; ++col ) { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint p = compressor().data( position ); + QModelIndex sourceIndex = attributesModel()->mapToSource( p.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( sourceIndex ); + + if ( threeDAttrs.isEnabled() && threeDAttrs.depth() > usedDepth ) { + usedDepth = threeDAttrs.depth(); + } + } + } + + return QPair< QPointF, QPointF >( QPointF( xMin, yMin ), QPointF( xMax, yMax + usedDepth * 0.3 ) ); +} + +void PercentBarDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + BarAttributes ba = diagram()->barAttributes(); + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundRight.x() - boundLeft.x(); + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * (groupWidth + ((colCount-1) * ba.fixedDataValueGap()) ); + + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( width > maxLimit ) + spaceBetweenBars += ba.fixedDataValueGap(); + else + spaceBetweenBars = ((width/rowCount) - groupWidth)/(colCount-1); + } + + if ( ba.useFixedValueBlockGap() ) + spaceBetweenGroups += ba.fixedValueBlockGap(); + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + const qreal maxValue = 100; // always 100 % + qreal sumValues = 0; + QVector sumValuesVector; + + //calculate sum of values for each column and store + for ( int row = 0; row < rowCount; ++row ) + { + for ( int col = 0; col < colCount; ++col ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + //if ( point.value > 0 ) + sumValues += qMax( point.value, -point.value ); + if ( col == colCount - 1 ) { + sumValuesVector << sumValues ; + sumValues = 0; + } + } + } + + // calculate stacked percent value + for ( int col = 0; col < colCount; ++col ) + { + qreal offset = spaceBetweenGroups; + if ( ba.useFixedBarWidth() ) + offset -= ba.fixedBarWidth(); + + if ( offset < 0 ) + offset = 0; + + for ( int row = 0; row < rowCount ; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint p = compressor().data( position ); + QModelIndex sourceIndex = attributesModel()->mapToSource( p.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( sourceIndex ); + + if ( threeDAttrs.isEnabled() ) { + if ( barWidth > 0 ) + barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; + if ( barWidth <= 0 ) { + barWidth = 0; + maxDepth = offset - ( width/rowCount); + } + } else { + barWidth = (width - (offset*rowCount))/ rowCount; + } + + const qreal value = qMax( p.value, -p.value ); + qreal stackedValues = 0.0; + qreal key = 0.0; + + // calculate stacked percent value + // we only take in account positives values for now. + for ( int k = col; k >= 0 ; --k ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, k ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + stackedValues += qMax( point.value, -point.value ); + key = point.key; + } + + QPointF point, previousPoint; + if ( sumValuesVector.at( row ) != 0 && value > 0 ) { + point = ctx->coordinatePlane()->translate( QPointF( key, stackedValues / sumValuesVector.at( row ) * maxValue ) ); + point.rx() += offset / 2; + + previousPoint = ctx->coordinatePlane()->translate( QPointF( key, ( stackedValues - value)/sumValuesVector.at(row)* maxValue ) ); + } + const qreal barHeight = previousPoint.y() - point.y(); + + const QRectF rect( point, QSizeF( barWidth, barHeight ) ); + m_private->addLabel( &lpc, sourceIndex, 0, PositionPoints( rect ), Position::North, + Position::South, value ); + paintBars( ctx, sourceIndex, rect, maxDepth ); + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.h new file mode 100644 index 00000000..ef324f66 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentBarDiagram_p.h @@ -0,0 +1,43 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPERCENTBARDIAGRAM_P_H +#define KDCHARTPERCENTBARDIAGRAM_P_H + + +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class PercentBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit PercentBarDiagram( BarDiagram* ); + virtual ~PercentBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.cpp new file mode 100644 index 00000000..e3945c36 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.cpp @@ -0,0 +1,228 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPercentLineDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartLineDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "PaintingHelpers_p.h" + +using namespace KDChart; +using namespace std; + +PercentLineDiagram::PercentLineDiagram( LineDiagram* d ) + : LineDiagramType( d ) +{ +} + +LineDiagram::LineType PercentLineDiagram::type() const +{ + return LineDiagram::Percent; +} + +const QPair PercentLineDiagram::calculateDataBoundaries() const +{ + const qreal xMin = 0.0; + qreal xMax = diagram()->model() ? diagram()->model()->rowCount( diagram()->rootIndex() ) : 0; + if ( !diagram()->centerDataPoints() && diagram()->model() ) + xMax -= 1; + const qreal yMin = 0.0; + const qreal yMax = 100.0; + + QPointF bottomLeft( QPointF( xMin, yMin ) ); + QPointF topRight( QPointF( xMax, yMax ) ); + return QPair ( bottomLeft, topRight ); +} + +void PercentLineDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const int columnCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + +// FIXME integrade column index retrieval to compressor: + int maxFound = 0; +// { // find the last column number that is not hidden +// for ( int iColumn = datasetDimension() - 1; +// iColumn < columnCount; +// iColumn += datasetDimension() ) +// if ( ! diagram()->isHidden( iColumn ) ) +// maxFound = iColumn; +// } + maxFound = columnCount; + // ^^^ temp + const int lastVisibleColumn = maxFound - 1; + + LabelPaintCache lpc; + LineAttributesInfoList lineList; + + //FIXME(khz): add LineAttributes::MissingValuesPolicy support for LineDiagram::Stacked and ::Percent + + qreal maxValue = 100; // always 100% + qreal sumValues = 0; + QVector percentSumValues; + + //calculate sum of values for each column and store + for ( int row = 0; row < rowCount; ++row ) + { + for ( int col = 0; col < columnCount; ++col ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + const LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + if ( ISNAN( point.value ) && policy == LineAttributes::MissingValuesAreBridged ) + point.value = interpolateMissingValue( position ); + if ( point.value > 0 ) + sumValues += point.value; + if ( col == lastVisibleColumn ) + { + percentSumValues << sumValues ; + sumValues = 0; + } + } + } + + QList bottomPoints; + bool bFirstDataset = true; + + for ( int column = 0; column < columnCount; ++column ) + { + //display area can be set by dataset ( == column) and/or by cell + LineAttributes laPreviousCell; // by default no area is drawn + QModelIndex indexPreviousCell; + QList areas; + QList points; + + for ( int row = 0; row < rowCount; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + const LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const bool bDisplayCellArea = laCell.displayArea(); + + qreal stackedValues = 0, nextValues = 0, nextKey = 0; + for ( int column2 = column; + column2 >= 0;//datasetDimension() - 1; + column2 -= 1 )//datasetDimension() ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column2 ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + if ( ISNAN( point.value ) && policy == LineAttributes::MissingValuesAreBridged ) + point.value = interpolateMissingValue( position ); + + const qreal val = point.value; + if ( val > 0 ) + stackedValues += val; + //qDebug() << valueForCell( iRow, iColumn2 ); + if ( row + 1 < rowCount ) { + const CartesianDiagramDataCompressor::CachePosition position( row + 1, column2 ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + if ( ISNAN( point.value ) && policy == LineAttributes::MissingValuesAreBridged ) + point.value = interpolateMissingValue( position ); + + const qreal val = point.value; + if ( val > 0 ) + nextValues += val; + nextKey = point.key; + } + } + if ( percentSumValues.at( row ) != 0 ) + stackedValues = stackedValues / percentSumValues.at( row ) * maxValue; + else + stackedValues = 0.0; + //qDebug() << stackedValues << endl; + QPointF nextPoint = ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? point.key + 0.5 : point.key, stackedValues ) ); + points << nextPoint; + + const QPointF ptNorthWest( nextPoint ); + const QPointF ptSouthWest( + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? point.key + 0.5 : point.key, 0.0 ) ) + : bottomPoints.at( row ) + ) + : nextPoint ); + QPointF ptNorthEast; + QPointF ptSouthEast; + + if ( row + 1 < rowCount ) { + if ( percentSumValues.at( row + 1 ) != 0 ) + nextValues = nextValues / percentSumValues.at( row + 1 ) * maxValue; + else + nextValues = 0.0; + QPointF toPoint = ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? nextKey + 0.5 : nextKey, nextValues ) ); + lineList.append( LineAttributesInfo( sourceIndex, nextPoint, toPoint ) ); + ptNorthEast = toPoint; + ptSouthEast = + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? nextKey + 0.5 : nextKey, 0.0 ) ) + : bottomPoints.at( row + 1 ) + ) + : toPoint; + if ( areas.count() && laCell != laPreviousCell ) { + PaintingHelpers::paintAreas( m_private, ctx, indexPreviousCell, areas, laPreviousCell.transparency() ); + areas.clear(); + } + if ( bDisplayCellArea ) { + QPolygonF poly; + poly << ptNorthWest << ptNorthEast << ptSouthEast << ptSouthWest; + areas << poly; + laPreviousCell = laCell; + indexPreviousCell = sourceIndex; + } else { + //qDebug() << "no area shown for row"<addLabel( &lpc, sourceIndex, &position, pts, Position::NorthWest, + Position::NorthWest, point.value ); + } + } + if ( areas.count() ) { + PaintingHelpers::paintAreas( m_private, ctx, indexPreviousCell, areas, laPreviousCell.transparency() ); + areas.clear(); + } + bottomPoints = points; + bFirstDataset = false; + } + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.h new file mode 100644 index 00000000..333f71a6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLineDiagram_p.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPERCENTLINEDIAGRAM_P_H +#define KDCHARTPERCENTLINEDIAGRAM_P_H + +#include "KDChartLineDiagram_p.h" + +namespace KDChart { + + class PercentLineDiagram : public LineDiagram::LineDiagramType + { + public: + explicit PercentLineDiagram( LineDiagram* ); + virtual ~PercentLineDiagram() {} + virtual LineDiagram::LineType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.cpp new file mode 100644 index 00000000..e7af0ab3 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.cpp @@ -0,0 +1,216 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPercentLyingBarDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" + +using namespace KDChart; + +PercentLyingBarDiagram::PercentLyingBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType PercentLyingBarDiagram::type() const +{ + return BarDiagram::Percent; +} + +const QPair PercentLyingBarDiagram::calculateDataBoundaries() const +{ + //const int rowCount = compressor().modelDataRows(); + //const int colCount = compressor().modelDataColumns(); + + const qreal xMin = 0; + const qreal xMax = diagram()->model() ? diagram()->model()->rowCount( diagram()->rootIndex() ) : 0; + qreal yMin = 0.0, yMax = 100.0; + /*for ( int col = 0; col < colCount; ++col ) + { + for ( int row = 0; row < rowCount; ++row ) + { + // Ordinate should begin at 0 the max value being the 100% pos + const QModelIndex idx = diagram()->model()->index( row, col, diagram()->rootIndex() ); + // only positive values are handled + qreal value = diagram()->model()->data( idx ).toReal(); + if ( value > 0 ) + yMax = qMax( yMax, value ); + } + }*/ + // special cases + if ( yMax == yMin ) { + if ( yMin == 0.0 ) + yMax = 0.1; //we need at least a range + else + yMax = 0.0; // they are the same but negative + } + const QPointF bottomLeft( QPointF( yMin, xMin ) ); + const QPointF topRight( QPointF( yMax, xMax ) ); + + //qDebug() << "BarDiagram::calculateDataBoundaries () returns ( " << bottomLeft << topRight <<")"; + return QPair< QPointF, QPointF >( bottomLeft, topRight ); +} + +void PercentLyingBarDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + BarAttributes ba = diagram()->barAttributes(); + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundLeft.y() - boundRight.y(); + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * (groupWidth + ((colCount-1) * ba.fixedDataValueGap()) ); + + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( width > maxLimit ) + spaceBetweenBars += ba.fixedDataValueGap(); + else + spaceBetweenBars = ((ctx->rectangle().width()/rowCount) - groupWidth)/(colCount-1); + } + + if ( ba.useFixedValueBlockGap() ) + spaceBetweenGroups += ba.fixedValueBlockGap(); + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + const qreal maxValue = 100.0; // always 100 % + qreal sumValues = 0; + QVector sumValuesVector; + + //calculate sum of values for each column and store + for ( int row = 0; row < rowCount; ++row ) + { + for ( int col = 0; col < colCount; ++col ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + //if ( point.value > 0 ) + sumValues += qMax( point.value, -point.value ); + if ( col == colCount - 1 ) { + sumValuesVector << sumValues ; + sumValues = 0; + } + } + } + + // calculate stacked percent value + for ( int curRow = rowCount - 1; curRow >= 0; --curRow ) + { + qreal offset = spaceBetweenGroups; + if ( ba.useFixedBarWidth() ) + offset -= ba.fixedBarWidth(); + + if ( offset < 0 ) + offset = 0; + + for ( int col = 0; col < colCount ; ++col ) + { + qreal threeDOffset = 0.0; + const CartesianDiagramDataCompressor::CachePosition position( curRow, col ); + const CartesianDiagramDataCompressor::DataPoint p = compressor().data( position ); + QModelIndex sourceIndex = attributesModel()->mapToSource( p.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( sourceIndex ); + + if ( threeDAttrs.isEnabled() ) { + if ( barWidth > 0 ) { + barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; + threeDOffset = threeDAttrs.depth(); + } + if ( barWidth <= 0 ) { + barWidth = 0.1; + threeDOffset = (width - (offset*rowCount))/ rowCount; + } + } else { + barWidth = (width - (offset*rowCount))/ rowCount; + } + + const qreal value = qMax( p.value, -p.value ); + qreal stackedValues = 0.0; + qreal key = 0.0; + + // calculate stacked percent value + // we only take in account positives values for now. + for ( int k = col; k >= 0 ; --k ) + { + const CartesianDiagramDataCompressor::CachePosition position( curRow, k ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + stackedValues += qMax( point.value, -point.value ); + key = point.key; + } + + QPointF point, previousPoint; + if ( sumValuesVector.at( curRow ) != 0 && value > 0 ) { + QPointF dataPoint( ( stackedValues / sumValuesVector.at( curRow ) * maxValue ), rowCount - key ); + point = ctx->coordinatePlane()->translate( dataPoint ); + point.ry() += offset / 2 + threeDOffset; + + previousPoint = ctx->coordinatePlane()->translate( QPointF( ( ( stackedValues - value) / sumValuesVector.at( curRow ) * maxValue ), rowCount - key ) ); + } + + const qreal barHeight = point.x() - previousPoint.x(); + + point.setX( point.x() - barHeight ); + + const QRectF rect = QRectF( point, QSizeF( barHeight, barWidth ) ).translated( 1, 0 ); + m_private->addLabel( &lpc, sourceIndex, 0, PositionPoints( rect ), Position::North, + Position::South, value ); + paintBars( ctx, sourceIndex, rect, maxDepth ); + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.h new file mode 100644 index 00000000..fa3863c7 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentLyingBarDiagram_p.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPERCENTLYINGBARDIAGRAM_P_H +#define KDCHARTPERCENTLYINGBARDIAGRAM_P_H + +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class PercentLyingBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit PercentLyingBarDiagram( BarDiagram* ); + virtual ~PercentLyingBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.cpp new file mode 100644 index 00000000..9e86186e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.cpp @@ -0,0 +1,267 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPercentPlotter_p.h" +#include "KDChartPlotter.h" +#include "PaintingHelpers_p.h" + +#include + +using namespace KDChart; +using namespace std; + +PercentPlotter::PercentPlotter( Plotter* d ) + : PlotterType( d ) +{ +} + +Plotter::PlotType PercentPlotter::type() const +{ + return Plotter::Percent; +} + +const QPair< QPointF, QPointF > PercentPlotter::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + qreal xMin = std::numeric_limits< qreal >::quiet_NaN(); + qreal xMax = std::numeric_limits< qreal >::quiet_NaN(); + const qreal yMin = 0.0; + const qreal yMax = 100.0; + + for ( int column = 0; column < colCount; ++column ) + { + for ( int row = 0; row < rowCount; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + const qreal valueX = ISNAN( point.key ) ? 0.0 : point.key; + + if ( ISNAN( xMin ) ) + { + xMin = valueX; + xMax = valueX; + } + else + { + xMin = qMin( xMin, valueX ); + xMax = qMax( xMax, valueX ); + } + } + } + + const QPointF bottomLeft( QPointF( xMin, yMin ) ); + const QPointF topRight( QPointF( xMax, yMax ) ); + return QPair< QPointF, QPointF >( bottomLeft, topRight ); +} + +class Value +{ +public: + Value() + : value( std::numeric_limits< qreal >::quiet_NaN() ) + { + } + // allow implicit conversion + Value( qreal value ) + : value( value ) + { + } + operator qreal() const + { + return value; + } + +private: + qreal value; +}; + +void PercentPlotter::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + Q_ASSERT( dynamic_cast< CartesianCoordinatePlane* >( ctx->coordinatePlane() ) ); + const CartesianCoordinatePlane* const plane = static_cast< CartesianCoordinatePlane* >( ctx->coordinatePlane() ); + const int colCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + + if ( colCount == 0 || rowCount == 0 ) + return; + + LabelPaintCache lpc; + + // this map contains the y-values to each x-value + QMap< qreal, QVector< QPair< Value, QModelIndex > > > diagramValues; + + for ( int col = 0; col < colCount; ++col ) + { + for ( int row = 0; row < rowCount; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + diagramValues[ point.key ].resize( colCount ); + diagramValues[ point.key ][ col ].first = point.value; + diagramValues[ point.key ][ col ].second = point.index; + } + } + + // the sums of the y-values per x-value + QMap< qreal, qreal > yValueSums; + // the x-values + QList< qreal > xValues = diagramValues.keys(); + // make sure it's sorted + qSort( xValues ); + Q_FOREACH( const qreal xValue, xValues ) + { + // the y-values to the current x-value + QVector< QPair< Value, QModelIndex > >& yValues = diagramValues[ xValue ]; + Q_ASSERT( yValues.count() == colCount ); + + for ( int column = 0; column < colCount; ++column ) + { + QPair< Value, QModelIndex >& data = yValues[ column ]; + // if the index is invalid, there was no value. Let's interpolate. + if ( !data.second.isValid() ) + { + QPair< QPair< qreal, Value >, QModelIndex > left; + QPair< QPair< qreal, Value >, QModelIndex > right; + int xIndex = 0; + // let's find the next lower value + for ( xIndex = xValues.indexOf( xValue ); xIndex >= 0; --xIndex ) + { + if ( diagramValues[ xValues[ xIndex ] ][ column ].second.isValid() ) + { + left.first.first = xValues[ xIndex ]; + left.first.second = diagramValues[ left.first.first ][ column ].first; + left.second = diagramValues[ xValues[ xIndex ] ][ column ].second; + break; + } + } + // let's find the next higher value + for ( xIndex = xValues.indexOf( xValue ); xIndex < xValues.count(); ++xIndex ) + { + if ( diagramValues[ xValues[ xIndex ] ][ column ].second.isValid() ) + { + right.first.first = xValues[ xIndex ]; + right.first.second = diagramValues[ right.first.first ][ column ].first; + right.second = diagramValues[ xValues[ xIndex ] ][ column ].second; + break; + } + } + + // interpolate out of them (left and/or right might be invalid, but this doesn't matter here) + const qreal leftX = left.first.first; + const qreal rightX = right.first.first; + const qreal leftY = left.first.second; + const qreal rightY = right.first.second; + + data.first = leftY + ( rightY - leftY ) * ( xValue - leftX ) / ( rightX - leftX ); + // if the result is a valid value, let's assign the index, too + if ( !ISNAN( data.first.operator qreal() ) ) + data.second = left.second; + } + + // sum it up + if ( !ISNAN( yValues[ column ].first.operator qreal() ) ) + yValueSums[ xValue ] += yValues[ column ].first; + } + } + + for ( int column = 0; column < colCount; ++column ) + { + LineAttributesInfoList lineList; + LineAttributes laPreviousCell; + CartesianDiagramDataCompressor::CachePosition previousCellPosition; + + CartesianDiagramDataCompressor::DataPoint lastPoint; + + qreal lastExtraY = 0.0; + qreal lastValue = 0.0; + + QMapIterator< qreal, QVector< QPair< Value, QModelIndex > > > i( diagramValues ); + while ( i.hasNext() ) + { + i.next(); + CartesianDiagramDataCompressor::DataPoint point; + point.key = i.key(); + const QPair< Value, QModelIndex >& data = i.value().at( column ); + point.value = data.first; + point.index = data.second; + + if ( ISNAN( point.key ) || ISNAN( point.value ) ) + { + previousCellPosition = CartesianDiagramDataCompressor::CachePosition(); + continue; + } + + qreal extraY = 0.0; + for ( int col = column - 1; col >= 0; --col ) + { + const qreal y = i.value().at( col ).first; + if ( !ISNAN( y ) ) + extraY += y; + } + + LineAttributes laCell; + + const qreal value = ( point.value + extraY ) / yValueSums[ i.key() ] * 100; + + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + // area corners, a + b are the line ends: + const QPointF a( plane->translate( QPointF( lastPoint.key, lastValue ) ) ); + const QPointF b( plane->translate( QPointF( point.key, value ) ) ); + const QPointF c( plane->translate( QPointF( lastPoint.key, lastExtraY / yValueSums[ i.key() ] * 100 ) ) ); + const QPointF d( plane->translate( QPointF( point.key, extraY / yValueSums[ i.key() ] * 100 ) ) ); + // add the line to the list: + laCell = diagram()->lineAttributes( sourceIndex ); + // add data point labels: + const PositionPoints pts = PositionPoints( b, a, d, c ); + // if necessary, add the area to the area list: + QList areas; + if ( laCell.displayArea() ) { + QPolygonF polygon; + polygon << a << b << d << c; + areas << polygon; + } + // add the pieces to painting if this is not hidden: + if ( !point.hidden /*&& !ISNAN( lastPoint.key ) && !ISNAN( lastPoint.value ) */) { + m_private->addLabel( &lpc, sourceIndex, 0, pts, Position::NorthWest, + Position::NorthWest, value ); + if ( !ISNAN( lastPoint.key ) && !ISNAN( lastPoint.value ) ) + { + PaintingHelpers::paintAreas( m_private, ctx, + attributesModel()->mapToSource( lastPoint.index ), + areas, laCell.transparency() ); + lineList.append( LineAttributesInfo( sourceIndex, a, b ) ); + } + } + + // wrap it up: + laPreviousCell = laCell; + lastPoint = point; + lastExtraY = extraY; + lastValue = value; + } + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); + } +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.h new file mode 100644 index 00000000..3a4c24be --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartPercentPlotter_p.h @@ -0,0 +1,41 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPERCENTPLOTTER_P_H +#define KDCHARTPERCENTPLOTTER_P_H + +#include "KDChartPlotter_p.h" + +namespace KDChart { + + class PercentPlotter : public Plotter::PlotterType + { + public: + explicit PercentPlotter( Plotter* ); + virtual ~PercentPlotter() {} + virtual Plotter::PlotType type() const; + virtual const QPair< QPointF, QPointF > calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.cpp new file mode 100644 index 00000000..822ad8f6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.cpp @@ -0,0 +1,214 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartStackedBarDiagram_p.h" + +using namespace KDChart; + +StackedBarDiagram::StackedBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType StackedBarDiagram::type() const +{ + return BarDiagram::Stacked; +} + +const QPair StackedBarDiagram::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + const qreal xMin = 0.0; + const qreal xMax = rowCount; + qreal yMin = 0.0; + qreal yMax = 0.0; + + bool isFirst = true; + for ( int row = 0; row < rowCount; ++row ) { + // calculate sum of values per column - Find out stacked Min/Max + qreal stackedValues = 0.0; + qreal negativeStackedValues = 0.0; + for ( int col = 0; col < colCount; ++col ) { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const double value = ISNAN( point.value ) ? 0.0 : point.value; + + if ( value > 0.0 ) { + stackedValues += value; + } else { + negativeStackedValues += value; + } + + // this is always true yMin can be 0 in case all values + // are the same + // same for yMax it can be zero if all values are negative + if ( isFirst ) { + yMin = negativeStackedValues < 0.0 ? negativeStackedValues : stackedValues; + yMax = stackedValues > 0.0 ? stackedValues : negativeStackedValues; + isFirst = false; + } else { + yMin = qMin( qMin( yMin, stackedValues ), negativeStackedValues ); + yMax = qMax( qMax( yMax, stackedValues ), negativeStackedValues ); + } + } + } + + // special cases + if ( yMax == yMin ) { + if ( yMin == 0.0 ) { + yMax = 0.1; // we need at least a range + } else if ( yMax < 0.0 ) { + yMax = 0.0; // extend the range to zero + } else if ( yMin > 0.0 ) { + yMin = 0.0; // dito + } + } + + return QPair< QPointF, QPointF >( QPointF( xMin, yMin ), QPointF( xMax, yMax ) ); +} + +void StackedBarDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + BarAttributes ba = diagram()->barAttributes(); + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundRight.x() - boundLeft.x(); + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * (groupWidth + ((colCount-1) * ba.fixedDataValueGap()) ); + + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( width > maxLimit ) + spaceBetweenBars += ba.fixedDataValueGap(); + else + spaceBetweenBars = ((width/rowCount) - groupWidth)/(colCount-1); + } + + if ( ba.useFixedValueBlockGap() ) + spaceBetweenGroups += ba.fixedValueBlockGap(); + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + for ( int col = 0; col < colCount; ++col ) + { + qreal offset = spaceBetweenGroups; + if ( ba.useFixedBarWidth() ) + offset -= ba.fixedBarWidth(); + + if ( offset < 0 ) + offset = 0; + + for ( int row = 0; row < rowCount; ++row ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint p = compressor().data( position ); + + const QModelIndex index = attributesModel()->mapToSource( p.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( index ); + const qreal value = p.value; + qreal stackedValues = 0.0; + qreal key = 0.0; + + if ( threeDAttrs.isEnabled() ) { + if ( barWidth > 0 ) + barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; + if ( barWidth <= 0 ) { + barWidth = 0; + maxDepth = offset - (width/rowCount); + } + } else { + barWidth = (width - (offset*rowCount))/ rowCount ; + } + + for ( int k = col; k >= 0; --k ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, k ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if ( !ISNAN( point.value ) && (( p.value >= 0.0 && point.value >= 0.0 ) || ( p.value < 0.0 && point.value < 0.0 )) ) + stackedValues += point.value; + key = point.key; + } + + if (!ISNAN( value )) + { + const qreal usedDepth = threeDAttrs.depth(); + + QPointF point = ctx->coordinatePlane()->translate( QPointF( key, stackedValues ) ); + + const qreal dy = point.y() - usedDepth; + if ( dy < 0 ) { + threeDAttrs.setDepth( point.y() - 1 ); + diagram()->setThreeDBarAttributes( threeDAttrs ); + } + + point.rx() += offset / 2; + const QPointF previousPoint = ctx->coordinatePlane()->translate( QPointF( key, stackedValues - value ) ); + const qreal barHeight = previousPoint.y() - point.y(); + + const QRectF rect( point, QSizeF( barWidth , barHeight ) ); + m_private->addLabel( &lpc, index, 0, PositionPoints( rect ), Position::North, + Position::South, value ); + paintBars( ctx, index, rect, maxDepth ); + } + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.h new file mode 100644 index 00000000..1a907141 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedBarDiagram_p.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSTACKEDBARDIAGRAM_P_H +#define KDCHARTSTACKEDBARDIAGRAM_P_H + +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class StackedBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit StackedBarDiagram( BarDiagram* ); + virtual ~StackedBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.cpp new file mode 100644 index 00000000..5b13d932 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.cpp @@ -0,0 +1,233 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartStackedLineDiagram_p.h" + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartLineDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "PaintingHelpers_p.h" + +using namespace KDChart; +using namespace std; + +StackedLineDiagram::StackedLineDiagram( LineDiagram* d ) + : LineDiagramType( d ) +{ +} + +LineDiagram::LineType StackedLineDiagram::type() const +{ + return LineDiagram::Stacked; +} + +const QPair StackedLineDiagram::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + const qreal xMin = 0; + qreal xMax = diagram()->model() ? diagram()->model()->rowCount( diagram()->rootIndex() ) : 0; + if ( !diagram()->centerDataPoints() && diagram()->model() ) + xMax -= 1; + qreal yMin = 0, yMax = 0; + + bool bStarting = true; + for ( int row = 0; row < rowCount; ++row ) + { + // calculate sum of values per column - Find out stacked Min/Max + qreal stackedValues = 0.0; + qreal negativeStackedValues = 0.0; + for ( int col = datasetDimension() - 1; col < colCount; col += datasetDimension() ) { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + if ( ISNAN( point.value ) ) + continue; + + if ( point.value >= 0.0 ) + stackedValues += point.value; + else + negativeStackedValues += point.value; + } + + if ( bStarting ) { + yMin = stackedValues; + yMax = stackedValues; + bStarting = false; + } else { + // take in account all stacked values + yMin = qMin( qMin( yMin, negativeStackedValues ), stackedValues ); + yMax = qMax( qMax( yMax, negativeStackedValues ), stackedValues ); + } + } + + const QPointF bottomLeft( xMin, yMin ); + const QPointF topRight( xMax, yMax ); + + return QPair ( bottomLeft, topRight ); +} + +void StackedLineDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const int columnCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + +// FIXME integrate column index retrieval to compressor: +// int maxFound = 0; +// { // find the last column number that is not hidden +// for ( int iColumn = datasetDimension() - 1; +// iColumn < columnCount; +// iColumn += datasetDimension() ) +// if ( ! diagram()->isHidden( iColumn ) ) +// maxFound = iColumn; +// } + //maxFound = columnCount; + // ^^^ temp + + LabelPaintCache lpc; + LineAttributesInfoList lineList; + + QVector< qreal > percentSumValues; + + QList bottomPoints; + bool bFirstDataset = true; + + for ( int column = 0; column < columnCount; ++column ) + { + CartesianDiagramDataCompressor::CachePosition previousCellPosition; + + //display area can be set by dataset ( == column) and/or by cell + LineAttributes laPreviousCell; // by default no area is drawn + QModelIndex indexPreviousCell; + QList areas; + QList points; + + for ( int row = 0; row < rowCount; ++row ) { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + + const LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const bool bDisplayCellArea = laCell.displayArea(); + + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + + if ( ISNAN( point.value ) && policy == LineAttributes::MissingValuesShownAsZero ) + point.value = 0.0; + + qreal stackedValues = 0, nextValues = 0, nextKey = 0; + for ( int column2 = column; column2 >= 0; --column2 ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column2 ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if ( !ISNAN( point.value ) ) + { + stackedValues += point.value; + } + else if ( policy == LineAttributes::MissingValuesAreBridged ) + { + const qreal interpolation = interpolateMissingValue( position ); + if ( !ISNAN( interpolation ) ) + stackedValues += interpolation; + } + + //qDebug() << valueForCell( iRow, iColumn2 ); + if ( row + 1 < rowCount ) { + const CartesianDiagramDataCompressor::CachePosition position( row + 1, column2 ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if ( !ISNAN( point.value ) ) + { + nextValues += point.value; + } + else if ( policy == LineAttributes::MissingValuesAreBridged ) + { + const qreal interpolation = interpolateMissingValue( position ); + if ( !ISNAN( interpolation ) ) + nextValues += interpolation; + } + nextKey = point.key; + } + } + //qDebug() << stackedValues << endl; + const QPointF nextPoint = ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? point.key + 0.5 : point.key, stackedValues ) ); + points << nextPoint; + + const QPointF ptNorthWest( nextPoint ); + const QPointF ptSouthWest( + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? point.key + 0.5 : point.key, 0.0 ) ) + : bottomPoints.at( row ) + ) + : nextPoint ); + QPointF ptNorthEast; + QPointF ptSouthEast; + + if ( row + 1 < rowCount ) { + QPointF toPoint = ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? nextKey + 0.5 : nextKey, nextValues ) ); + lineList.append( LineAttributesInfo( sourceIndex, nextPoint, toPoint ) ); + ptNorthEast = toPoint; + ptSouthEast = + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( diagram()->centerDataPoints() ? nextKey + 0.5 : nextKey, 0.0 ) ) + : bottomPoints.at( row + 1 ) + ) + : toPoint; + if ( areas.count() && laCell != laPreviousCell ) { + PaintingHelpers::paintAreas( m_private, ctx, indexPreviousCell, areas, laPreviousCell.transparency() ); + areas.clear(); + } + if ( bDisplayCellArea ) { + QPolygonF poly; + poly << ptNorthWest << ptNorthEast << ptSouthEast << ptSouthWest; + areas << poly; + laPreviousCell = laCell; + indexPreviousCell = sourceIndex; + } else { + //qDebug() << "no area shown for row"<addLabel( &lpc, sourceIndex, &position, pts, Position::NorthWest, + Position::NorthWest, point.value ); + } + if ( areas.count() ) { + PaintingHelpers::paintAreas( m_private, ctx, indexPreviousCell, areas, laPreviousCell.transparency() ); + areas.clear(); + } + bottomPoints = points; + bFirstDataset = false; + } + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.h new file mode 100644 index 00000000..1c00986c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLineDiagram_p.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSTACKEDLINEDIAGRAM_P_H +#define KDCHARTSTACKEDLINEDIAGRAM_P_H + +#include "KDChartLineDiagram_p.h" + +namespace KDChart { + + class StackedLineDiagram : public LineDiagram::LineDiagramType + { + public: + explicit StackedLineDiagram( LineDiagram* ); + virtual ~StackedLineDiagram() {} + virtual LineDiagram::LineType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.cpp new file mode 100644 index 00000000..a82e464b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.cpp @@ -0,0 +1,203 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include + +#include "KDChartBarDiagram.h" +#include "KDChartTextAttributes.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartStackedLyingBarDiagram_p.h" + +using namespace KDChart; + +StackedLyingBarDiagram::StackedLyingBarDiagram( BarDiagram* d ) + : BarDiagramType( d ) +{ +} + +BarDiagram::BarType StackedLyingBarDiagram::type() const +{ + return BarDiagram::Stacked; +} + +const QPair StackedLyingBarDiagram::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + const qreal xMin = 0; + const qreal xMax = rowCount; + qreal yMin = 0; + qreal yMax = 0; + + bool isFirst = true; + for ( int row = 0; row < rowCount; ++row ) { + // calculate sum of values per column - Find out stacked Min/Max + qreal stackedValues = 0.0; + qreal negativeStackedValues = 0.0; + for ( int col = 0; col < colCount; ++col ) { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + if ( point.value > 0.0 ) + stackedValues += point.value; + else + negativeStackedValues += point.value; + + // this is always true yMin can be 0 in case all values + // are the same + // same for yMax it can be zero if all values are negative + if ( isFirst ) { + yMin = negativeStackedValues < 0.0 ? negativeStackedValues : stackedValues; + yMax = stackedValues > 0.0 ? stackedValues : negativeStackedValues; + isFirst = false; + } else { + yMin = qMin( qMin( yMin, stackedValues ), negativeStackedValues ); + yMax = qMax( qMax( yMax, stackedValues ), negativeStackedValues ); + } + } + } + + // special cases + if ( yMax == yMin ) { + if ( yMin == 0.0 ) { + yMax = 0.1; // we need at least a range + } else if ( yMax < 0.0 ) { + yMax = 0.0; // extend the range to zero + } else if ( yMin > 0.0 ) { + yMin = 0.0; // dito + } + } + + return QPair< QPointF, QPointF >( QPointF( yMin, xMin ), QPointF( yMax, xMax ) ); +} + +void StackedLyingBarDiagram::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); // cached + + const QPointF boundLeft = ctx->coordinatePlane()->translate( boundaries.first ) ; + const QPointF boundRight = ctx->coordinatePlane()->translate( boundaries.second ); + + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + + BarAttributes ba = diagram()->barAttributes(); + qreal barWidth = 0; + qreal maxDepth = 0; + qreal width = boundLeft.y() - boundRight.y(); + qreal groupWidth = width / rowCount; + qreal spaceBetweenBars = 0; + qreal spaceBetweenGroups = 0; + + if ( ba.useFixedBarWidth() ) { + barWidth = ba.fixedBarWidth(); + groupWidth += barWidth; + + // Pending Michel set a min and max value for the groupWidth + // related to the area.width + if ( groupWidth < 0 ) + groupWidth = 0; + + if ( groupWidth * rowCount > width ) + groupWidth = width / rowCount; + } + + // maxLimit: allow the space between bars to be larger until area.width() + // is covered by the groups. + qreal maxLimit = rowCount * (groupWidth + ((colCount-1) * ba.fixedDataValueGap()) ); + + + //Pending Michel: FixMe + if ( ba.useFixedDataValueGap() ) { + if ( ctx->rectangle().width() > maxLimit ) + spaceBetweenBars += ba.fixedDataValueGap(); + else + spaceBetweenBars = ((width/rowCount) - groupWidth)/(colCount-1); + } + + if ( ba.useFixedValueBlockGap() ) + spaceBetweenGroups += ba.fixedValueBlockGap(); + + calculateValueAndGapWidths( rowCount, colCount,groupWidth, + barWidth, spaceBetweenBars, spaceBetweenGroups ); + + LabelPaintCache lpc; + for ( int row = rowCount - 1; row >= 0; --row ) + { + qreal offset = spaceBetweenGroups; + if ( ba.useFixedBarWidth() ) + offset -= ba.fixedBarWidth(); + + if ( offset < 0 ) + offset = 0; + + for ( int col = 0; col < colCount; ++col ) + { + qreal threeDOffset = 0.0; + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint p = compressor().data( position ); + + const QModelIndex index = attributesModel()->mapToSource( p.index ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( index ); + const qreal value = p.value; + qreal stackedValues = 0.0; + qreal key = 0.0; + + if ( threeDAttrs.isEnabled() ) { + if ( barWidth > 0 ) { + barWidth = (width - ((offset+(threeDAttrs.depth()))*rowCount))/ rowCount; + threeDOffset = threeDAttrs.depth(); + } + if ( barWidth <= 0 ) { + barWidth = 0.1; + threeDOffset = (width - (offset*rowCount))/ rowCount; + } + } else { + barWidth = (width - (offset*rowCount))/ rowCount; + } + + for ( int k = col; k >= 0; --k ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, k ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if ( ( p.value >= 0.0 && point.value >= 0.0 ) || ( p.value < 0.0 && point.value < 0.0 ) ) + stackedValues += point.value; + key = point.key; + } + QPointF point = ctx->coordinatePlane()->translate( QPointF( stackedValues, rowCount - key ) ); + point.ry() += offset / 2 + threeDOffset; + const QPointF previousPoint = ctx->coordinatePlane()->translate( QPointF( stackedValues - value, rowCount - key ) ); + const qreal barHeight = point.x() - previousPoint.x(); + point.rx() -= barHeight; + + const QRectF rect = QRectF( point, QSizeF( barHeight , barWidth ) ).translated( 1, 0 ); + m_private->addLabel( &lpc, index, 0, PositionPoints( rect ), Position::North, + Position::South, value ); + paintBars( ctx, index, rect, maxDepth ); + } + } + m_private->paintDataValueTextsAndMarkers( ctx, lpc, false ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.h new file mode 100644 index 00000000..cb9c0afc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedLyingBarDiagram_p.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSTACKEDLYINGBARDIAGRAM_P_H +#define KDCHARTSTACKEDLYINGBARDIAGRAM_P_H + +#include "KDChartBarDiagram_p.h" + +namespace KDChart { + + class StackedLyingBarDiagram : public BarDiagram::BarDiagramType + { + public: + explicit StackedLyingBarDiagram( BarDiagram* ); + virtual ~StackedLyingBarDiagram() {} + virtual BarDiagram::BarType type() const; + virtual const QPair calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.cpp new file mode 100644 index 00000000..7915dfb5 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.cpp @@ -0,0 +1,272 @@ +/* -*- Mode: C++ -*- + KDChart - a multi-platform charting engine + */ + +/**************************************************************************** + ** Copyright (C) 2005-2007 Klarälvdalens Datakonsult AB. All rights reserved. + ** + ** This file is part of the KD Chart library. + ** + ** This file may be used under the terms of the GNU General Public + ** License versions 2.0 or 3.0 as published by the Free Software + ** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Alternatively you may (at + ** your option) use any later version of the GNU General Public + ** License if such license has been publicly approved by + ** Klarälvdalens Datakonsult AB (or its successors, if any). + ** + ** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, + ** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR + ** A PARTICULAR PURPOSE. Klarälvdalens Datakonsult AB reserves all rights + ** not expressly granted herein. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + **********************************************************************/ + +#include "KDChartStackedPlotter_p.h" +#include "KDChartPlotter.h" +#include "PaintingHelpers_p.h" + +#include + +using namespace KDChart; +using namespace std; + +StackedPlotter::StackedPlotter( Plotter* d ) + : PlotterType( d ) +{ +} + +Plotter::PlotType StackedPlotter::type() const +{ + return Plotter::Stacked; +} + +const QPair< QPointF, QPointF > StackedPlotter::calculateDataBoundaries() const +{ + const int rowCount = compressor().modelDataRows(); + const int colCount = compressor().modelDataColumns(); + double xMin = 0, xMax = 0; + double yMin = 0, yMax = 0; + + bool bStarting = true; + for( int row = 0; row < rowCount; ++row ) + { + // calculate sum of values per column - Find out stacked Min/Max + double stackedValues = 0.0; + double negativeStackedValues = 0.0; + for( int col = 0; col < colCount; ++col ) { + const CartesianDiagramDataCompressor::CachePosition position( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + + if( ISNAN( point.value ) ) + continue; + + if( point.value >= 0.0 ) + stackedValues += point.value; + else + negativeStackedValues += point.value; + } + + //assume that each value in this row has the same x-value + //very unintuitive... + const CartesianDiagramDataCompressor::CachePosition xPosition( row, 0 ); + const CartesianDiagramDataCompressor::DataPoint xPoint = compressor().data( xPosition ); + if( bStarting ){ + yMin = stackedValues; + yMax = stackedValues; + xMax = xPoint.key; + xMin = xPoint.key; + bStarting = false; + }else{ + // take in account all stacked values + yMin = qMin( qMin( yMin, negativeStackedValues ), stackedValues ); + yMax = qMax( qMax( yMax, negativeStackedValues ), stackedValues ); + xMin = qMin( qreal(xMin), xPoint.key ); + xMax = qMax( qreal(xMax), xPoint.key ); + } + } + + const QPointF bottomLeft( xMin, yMin ); + const QPointF topRight( xMax, yMax ); + + return QPair ( bottomLeft, topRight ); +} + +void StackedPlotter::paint( PaintContext* ctx ) +{ + reverseMapper().clear(); + + const QPair boundaries = diagram()->dataBoundaries(); + const QPointF bottomLeft = boundaries.first; + const QPointF topRight = boundaries.second; + + const int columnCount = compressor().modelDataColumns(); + const int rowCount = compressor().modelDataRows(); + +// FIXME integrate column index retrieval to compressor: + int maxFound = 0; +// { // find the last column number that is not hidden +// for( int iColumn = /*datasetDimension()*/2 - 1; +// iColumn < columnCount; +// iColumn += /*datasetDimension()*/2 ) +// if( ! diagram()->isHidden( iColumn ) ) +// maxFound = iColumn; +// } + maxFound = columnCount; + // ^^^ temp + + LabelPaintCache lpc; + LineAttributesInfoList lineList; + + //FIXME(khz): add LineAttributes::MissingValuesPolicy support for LineDiagram::Stacked and ::Percent + + QVector percentSumValues; + + QList bottomPoints; + bool bFirstDataset = true; + + for( int column = 0; column < columnCount; ++column ) + { + CartesianDiagramDataCompressor::CachePosition previousCellPosition; + + //display area can be set by dataset ( == column) and/or by cell + QList points; + + for ( int row = 0; row < rowCount; ++row ) { + const CartesianDiagramDataCompressor::CachePosition position( row, column ); + CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + + const LineAttributes laCell = diagram()->lineAttributes( sourceIndex ); + const bool bDisplayCellArea = laCell.displayArea(); + + const LineAttributes::MissingValuesPolicy policy = laCell.missingValuesPolicy(); + + if( ISNAN( point.value ) && policy == LineAttributes::MissingValuesShownAsZero ) + point.value = 0.0; + + double stackedValues = 0, nextValues = 0, nextKey = 0; + for ( int column2 = column; column2 >= 0; --column2 ) + { + const CartesianDiagramDataCompressor::CachePosition position( row, column2 ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + const QModelIndex sourceIndex = attributesModel()->mapToSource( point.index ); + if( !ISNAN( point.value ) ) + { + stackedValues += point.value; + } + else if( policy == LineAttributes::MissingValuesAreBridged ) + { + const double interpolation = interpolateMissingValue( position ); + if( !ISNAN( interpolation ) ) + stackedValues += interpolation; + } + + //qDebug() << valueForCell( iRow, iColumn2 ); + if ( row + 1 < rowCount ){ + const CartesianDiagramDataCompressor::CachePosition position( row + 1, column2 ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + if( !ISNAN( point.value ) ) + { + nextValues += point.value; + } + else if( policy == LineAttributes::MissingValuesAreBridged ) + { + const double interpolation = interpolateMissingValue( position ); + if( !ISNAN( interpolation ) ) + nextValues += interpolation; + } + nextKey = point.key; + } + } + //qDebug() << stackedValues << endl; + const QPointF nextPoint = ctx->coordinatePlane()->translate( QPointF( point.key, stackedValues ) ); + points << nextPoint; + + const QPointF ptNorthWest( nextPoint ); + const QPointF ptSouthWest( + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( point.key, 0.0 ) ) + : bottomPoints.at( row ) + ) + : nextPoint ); + QPointF ptNorthEast; + QPointF ptSouthEast; + + if ( row + 1 < rowCount ){ + QPointF toPoint = ctx->coordinatePlane()->translate( QPointF( nextKey, nextValues ) ); + lineList.append( LineAttributesInfo( sourceIndex, nextPoint, toPoint ) ); + ptNorthEast = toPoint; + ptSouthEast = + bDisplayCellArea + ? ( bFirstDataset + ? ctx->coordinatePlane()->translate( QPointF( nextKey, 0.0 ) ) + : bottomPoints.at( row + 1 ) + ) + : toPoint; + if( bDisplayCellArea ){ + QPolygonF poly; + poly << ptNorthWest << ptNorthEast << ptSouthEast << ptSouthWest; + QList areas; + areas << poly; + PaintingHelpers::paintAreas( m_private, ctx, sourceIndex, + areas, laCell.transparency() ); + }else{ + //qDebug() << "no area shown for row"<addLabel( &lpc, sourceIndex, &position, pts, Position::NorthWest, + Position::NorthWest, point.value ); + } + } + bottomPoints = points; + bFirstDataset = false; + } + + PaintingHelpers::paintElements( m_private, ctx, lpc, lineList ); +} + +double StackedPlotter::interpolateMissingValue( const CartesianDiagramDataCompressor::CachePosition& pos ) const +{ + double leftValue = std::numeric_limits< double >::quiet_NaN(); + double rightValue = std::numeric_limits< double >::quiet_NaN(); + int missingCount = 1; + + const int column = pos.column; + const int row = pos.row; + const int rowCount = compressor().modelDataRows(); + + // iterate back and forth to find valid values + for( int r1 = row - 1; r1 > 0; --r1 ) + { + const CartesianDiagramDataCompressor::CachePosition position( r1, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + leftValue = point.value; + if( !ISNAN( point.value ) ) + break; + ++missingCount; + } + for( int r2 = row + 1; r2 < rowCount; ++r2 ) + { + const CartesianDiagramDataCompressor::CachePosition position( r2, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + rightValue = point.value; + if( !ISNAN( point.value ) ) + break; + ++missingCount; + } + if( !ISNAN( leftValue ) && !ISNAN( rightValue ) ) + return leftValue + ( rightValue - leftValue ) / ( missingCount + 1 ); + else + return std::numeric_limits< double >::quiet_NaN(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.h new file mode 100644 index 00000000..af0f7ede --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/DiagramFlavors/KDChartStackedPlotter_p.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++ -*- + KDChart - a multi-platform charting engine + */ + +/**************************************************************************** + ** Copyright (C) 2005-2007 Klarälvdalens Datakonsult AB. All rights reserved. + ** + ** This file is part of the KD Chart library. + ** + ** This file may be used under the terms of the GNU General Public + ** License versions 2.0 or 3.0 as published by the Free Software + ** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3 + ** included in the packaging of this file. Alternatively you may (at + ** your option) use any later version of the GNU General Public + ** License if such license has been publicly approved by + ** Klarälvdalens Datakonsult AB (or its successors, if any). + ** + ** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, + ** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR + ** A PARTICULAR PURPOSE. Klarälvdalens Datakonsult AB reserves all rights + ** not expressly granted herein. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + **********************************************************************/ + +#ifndef KDCHARTSTACKEDPLOTTER_P_H +#define KDCHARTSTACKEDPLOTTER_P_H + +#include "KDChartPlotter_p.h" + +namespace KDChart { + + class StackedPlotter : public Plotter::PlotterType + { + public: + explicit StackedPlotter( Plotter* ); + virtual ~StackedPlotter() {} + virtual Plotter::PlotType type() const; + virtual const QPair< QPointF, QPointF > calculateDataBoundaries() const; + virtual void paint( PaintContext* ctx ); + double interpolateMissingValue( const CartesianDiagramDataCompressor::CachePosition& pos ) const; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.cpp new file mode 100644 index 00000000..1089f3eb --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartAbstractCartesianDiagram_p.h" + +#include + + +using namespace KDChart; + +AbstractCartesianDiagram::Private::Private() + : referenceDiagram( 0 ) +{ +} + +AbstractCartesianDiagram::Private::~Private() +{ +} + +bool AbstractCartesianDiagram::compare( const AbstractCartesianDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + return false; + } + return // compare the base class + ( static_cast(this)->compare( other ) ) && + // compare own properties + (referenceDiagram() == other->referenceDiagram()) && + ((! referenceDiagram()) || (referenceDiagramOffset() == other->referenceDiagramOffset())); +} + + +#define d d_func() + +AbstractCartesianDiagram::AbstractCartesianDiagram ( QWidget* parent, CartesianCoordinatePlane* plane ) + : AbstractDiagram ( new Private(), parent, plane ) +{ + init(); +} + +KDChart::AbstractCartesianDiagram::~AbstractCartesianDiagram() +{ + Q_FOREACH( CartesianAxis* axis, d->axesList ) { + axis->deleteObserver( this ); + } + d->axesList.clear(); +} + +void AbstractCartesianDiagram::init() +{ + d->compressor.setModel( attributesModel() ); + connect( this, SIGNAL( layoutChanged( AbstractDiagram* ) ), + &d->compressor, SLOT( slotDiagramLayoutChanged( AbstractDiagram* ) ) ); + connect( this, SIGNAL( attributesModelAboutToChange( AttributesModel*, AttributesModel* ) ), + this, SLOT( connectAttributesModel( AttributesModel* ) ) ); + + if ( d->plane ) { + connect( d->plane, SIGNAL( viewportCoordinateSystemChanged() ), + this, SIGNAL( viewportCoordinateSystemChanged() ) ); + } +} + +void AbstractCartesianDiagram::addAxis( CartesianAxis *axis ) +{ + if ( !d->axesList.contains( axis ) ) { + d->axesList.append( axis ); + axis->createObserver( this ); + layoutPlanes(); + } +} + +void AbstractCartesianDiagram::takeAxis( CartesianAxis *axis ) +{ + const int idx = d->axesList.indexOf( axis ); + if ( idx != -1 ) + d->axesList.takeAt( idx ); + axis->deleteObserver( this ); + axis->setParentWidget( 0 ); + layoutPlanes(); +} + +KDChart::CartesianAxisList AbstractCartesianDiagram::axes( ) const +{ + return d->axesList; +} + +void KDChart::AbstractCartesianDiagram::layoutPlanes() +{ + AbstractCoordinatePlane* plane = coordinatePlane(); + if ( plane ) { + plane->layoutPlanes(); + } +} + +void KDChart::AbstractCartesianDiagram::setCoordinatePlane( AbstractCoordinatePlane* plane ) +{ + if ( coordinatePlane() ) { + disconnect( attributesModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + coordinatePlane(), SLOT( relayout() ) ); + disconnect( attributesModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + coordinatePlane(), SLOT( relayout() ) ); + disconnect( attributesModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + coordinatePlane(), SLOT( relayout() ) ); + disconnect( attributesModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + coordinatePlane(), SLOT( relayout() ) ); + disconnect( coordinatePlane() ); + } + + AbstractDiagram::setCoordinatePlane(plane); + if ( plane ) { + // Readjust the layout when the dataset count changes + connect( attributesModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + plane, SLOT( relayout() ) ); + connect( attributesModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + plane, SLOT( relayout() ) ); + connect( attributesModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + plane, SLOT( relayout() ) ); + connect( attributesModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + plane, SLOT( relayout() ) ); + connect( plane, SIGNAL( viewportCoordinateSystemChanged() ), + this, SIGNAL( viewportCoordinateSystemChanged() ) ); + connect( plane, SIGNAL( viewportCoordinateSystemChanged() ), this, SLOT( update() ) ); + } +} + +void AbstractCartesianDiagram::setReferenceDiagram( AbstractCartesianDiagram* diagram, const QPointF& offset ) +{ + d->referenceDiagram = diagram; + d->referenceDiagramOffset = offset; +} + +AbstractCartesianDiagram* AbstractCartesianDiagram::referenceDiagram() const +{ + return d->referenceDiagram; +} + +QPointF AbstractCartesianDiagram::referenceDiagramOffset() const +{ + return d->referenceDiagramOffset; +} + +void AbstractCartesianDiagram::setRootIndex( const QModelIndex& index ) +{ + d->compressor.setRootIndex( attributesModel()->mapFromSource( index ) ); + AbstractDiagram::setRootIndex( index ); +} + +void AbstractCartesianDiagram::setModel( QAbstractItemModel* m ) +{ + if ( m == model() ) { + return; + } + AbstractDiagram::setModel( m ); +} + +void AbstractCartesianDiagram::setAttributesModel( AttributesModel* model ) +{ + if ( model == attributesModel() ) { + return; + } + AbstractDiagram::setAttributesModel( model ); +} + +void AbstractCartesianDiagram::connectAttributesModel( AttributesModel* newModel ) +{ + // The compressor must receive model signals before the diagram because the diagram will ask the + // compressor for data upon receiving dataChanged() et al. from the model, at which point the + // compressor must be up to date already. + // Starting from Qt 4.6, the invocation order of slots is guaranteed to be equal to connection + // order (and probably was before). + // This is our opportunity to connect to the AttributesModel before the AbstractDiagram does. + + // ### A better design would be to properly recognize that the compressor is the real data interface + // for Cartesian diagrams and make diagrams listen to updates from the *compressor*, not the model. + // However, this would change the outside interface of AbstractCartesianDiagram which would be bad. + // So we're stuck with the complication of this slot and the corresponding signal. + d->compressor.setModel( newModel ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.h new file mode 100644 index 00000000..acce0469 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTCARTESIANDIAGRAM_H +#define KDCHARTABSTRACTCARTESIANDIAGRAM_H + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartCartesianAxis.h" + +namespace KDChart { + + class GridAttributes; + + /** + * @brief Base class for diagrams based on a cartesian coordianate system. + * + * The AbstractCartesianDiagram interface adds those elements that are + * specific to diagrams based on a cartesian coordinate system to the + * basic AbstractDiagram interface. + */ + class KDCHART_EXPORT AbstractCartesianDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractCartesianDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractCartesianDiagram, CartesianCoordinatePlane ) + + public: + explicit AbstractCartesianDiagram( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~AbstractCartesianDiagram(); + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractCartesianDiagram* other ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const int numberOfAbscissaSegments() const = 0; + virtual const int numberOfOrdinateSegments() const = 0; +#else + virtual int numberOfAbscissaSegments() const = 0; + virtual int numberOfOrdinateSegments() const = 0; +#endif + /** + * Add the axis to the diagram. The diagram takes ownership of the axis + * and will delete it. + * + * To gain back ownership (e.g. for assigning the axis to another diagram) + * use the takeAxis method, before calling addAxis on the other diagram. + * + * \sa takeAxis + */ + virtual void addAxis( CartesianAxis * axis ); + /** + * Removes the axis from the diagram, without deleting it. + * + * The diagram no longer owns the axis, so it is + * the caller's responsibility to delete the axis. + * + * \sa addAxis + */ + virtual void takeAxis( CartesianAxis * axis ); + /** + * @return a list of all axes added to the diagram + */ + virtual KDChart::CartesianAxisList axes() const; + + /** + * Triggers layouting of all coordinate planes on the current chart. + * Normally you don't need to call this method. It's handled automatically for you. + */ + virtual void layoutPlanes(); + /** \reimpl */ + virtual void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Makes this diagram use another diagram \a diagram as reference diagram with relative offset + * \a offset. + * To share cartesian axes between different diagrams there might be cases when you need that. + * Normally you don't. + * \sa examples/SharedAbscissa + */ + virtual void setReferenceDiagram( AbstractCartesianDiagram* diagram, const QPointF& offset = QPointF() ); + /** + * @return this diagram's reference diagram + * \sa setReferenceDiagram + */ + virtual AbstractCartesianDiagram* referenceDiagram() const; + /** + * @return the relative offset of this diagram's reference diagram + * \sa setReferenceDiagram + */ + virtual QPointF referenceDiagramOffset() const; + + /* reimpl */ + void setModel( QAbstractItemModel* model ); + /* reimpl */ + void setRootIndex( const QModelIndex& index ); + /* reimpl */ + void setAttributesModel( AttributesModel* model ); + + protected Q_SLOTS: + void connectAttributesModel( AttributesModel* ); + + protected: + /** @return the 3D item depth of the model index \a index */ + virtual qreal threeDItemDepth( const QModelIndex& index ) const = 0; + /** @return the 3D item depth of the data set \a column */ + virtual qreal threeDItemDepth( int column ) const = 0; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram_p.h new file mode 100644 index 00000000..1b7c029b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartAbstractCartesianDiagram_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTCARTESIANDIAGRAM_P_H +#define KDCHARTABSTRACTCARTESIANDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractCartesianDiagram.h" + +#include +#include +#include + +#include + + +namespace KDChart { + + class CartesianCoordinatePlane; + class AbstractCartesianDiagram; + +/** + * \internal + */ +class AbstractCartesianDiagram::Private : public AbstractDiagram::Private +{ + friend class AbstractCartesianDiagram; +public: + Private(); + virtual ~Private(); + + Private( const Private& rhs ) : + AbstractDiagram::Private( rhs ), + // Do not copy axes and reference diagrams. + axesList(), + referenceDiagram( 0 ) + { + } + + /** \reimpl */ + virtual CartesianDiagramDataCompressor::AggregatedDataValueAttributes aggregatedAttrs( + const QModelIndex & index, + const CartesianDiagramDataCompressor::CachePosition * position ) const + { + if ( position ) + return compressor.aggregatedAttrs( diagram, index, *position ); + CartesianDiagramDataCompressor::AggregatedDataValueAttributes allAttrs; + allAttrs[index] = diagram->dataValueAttributes( index ); + return allAttrs; + } + + CartesianAxisList axesList; + + AbstractCartesianDiagram* referenceDiagram; + QPointF referenceDiagramOffset; + + mutable CartesianDiagramDataCompressor compressor; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( AbstractCartesianDiagram, AbstractDiagram, CartesianCoordinatePlane ) + +} +#endif /* KDCHARTABSTRACTCARTESIANDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.cpp new file mode 100644 index 00000000..a702f07b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartBarAttributes.h" +#include + +#include + +#define d d_func() + + +using namespace KDChart; + +class BarAttributes::Private +{ + friend class BarAttributes; +public: + Private(); + +private: + qreal datasetGap; + bool useFixedDatasetGap; + qreal valueBlockGap; + bool useFixedValueBlockGap; + qreal barWidth; + bool useFixedBarWidth; + bool drawSolidExcessArrows; + qreal groupGapFactor; + qreal barGapFactor; +}; + + +BarAttributes::Private::Private() + :datasetGap( 6 ), + useFixedDatasetGap( false ), + valueBlockGap( 24 ), + useFixedValueBlockGap( false ), + barWidth( -1 ), + useFixedBarWidth( false ), + drawSolidExcessArrows( false ), + groupGapFactor( 2.0 ), + barGapFactor( 0.4 ) +{ +} + + +BarAttributes::BarAttributes() + : _d( new Private() ) +{ +} + +BarAttributes::BarAttributes( const BarAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +BarAttributes& BarAttributes::operator= ( const BarAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +BarAttributes::~BarAttributes() +{ + delete _d; _d = 0; +} + + +bool BarAttributes::operator==( const BarAttributes& r ) const +{ + if ( fixedDataValueGap() == r.fixedDataValueGap() && + useFixedDataValueGap() == r.useFixedDataValueGap() && + fixedValueBlockGap() == r.fixedValueBlockGap() && + useFixedValueBlockGap() == r.useFixedValueBlockGap() && + fixedBarWidth() == r.fixedBarWidth() && + useFixedBarWidth() == r.useFixedBarWidth() && + groupGapFactor() == r.groupGapFactor() && + barGapFactor() == r.barGapFactor() && + drawSolidExcessArrows() == r.drawSolidExcessArrows() ) + return true; + else + return false; +} + + +void BarAttributes::setFixedDataValueGap( qreal gap ) +{ + d->datasetGap = gap; +} + +qreal BarAttributes::fixedDataValueGap() const +{ + return d->datasetGap; +} + +void BarAttributes::setUseFixedDataValueGap( bool gapIsFixed ) +{ + d->useFixedDatasetGap = gapIsFixed; +} + +bool BarAttributes::useFixedDataValueGap() const +{ + return d->useFixedDatasetGap; +} + +void BarAttributes::setFixedValueBlockGap( qreal gap ) +{ + d->valueBlockGap = gap; +} + +qreal BarAttributes::fixedValueBlockGap() const +{ + return d->valueBlockGap; +} + +void BarAttributes::setUseFixedValueBlockGap( bool gapIsFixed ) +{ + d->useFixedValueBlockGap = gapIsFixed; +} + +bool BarAttributes::useFixedValueBlockGap() const +{ + return d->useFixedValueBlockGap; +} + +void BarAttributes::setFixedBarWidth( qreal width ) +{ + d->barWidth = width; +} + +qreal BarAttributes::fixedBarWidth() const +{ + + return d->barWidth; +} + +void BarAttributes::setUseFixedBarWidth( bool useFixedBarWidth ) +{ + d->useFixedBarWidth = useFixedBarWidth; +} + +bool BarAttributes::useFixedBarWidth() const +{ + return d->useFixedBarWidth; +} + +void BarAttributes::setGroupGapFactor( qreal gapFactor ) +{ + d->groupGapFactor = gapFactor; +} + +qreal BarAttributes::groupGapFactor() const +{ + return d->groupGapFactor; +} + +void BarAttributes::setBarGapFactor( qreal gapFactor ) +{ + d->barGapFactor = gapFactor; +} + +qreal BarAttributes::barGapFactor() const +{ + return d->barGapFactor; +} + +void BarAttributes::setDrawSolidExcessArrows( bool solidArrows ) +{ + d->drawSolidExcessArrows = solidArrows; +} + +bool BarAttributes::drawSolidExcessArrows() const +{ + return d->drawSolidExcessArrows; +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.h new file mode 100644 index 00000000..1f8a257a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarAttributes.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBARATTRIBUTES_H +#define KDCHARTBARATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Set of attributes for changing the appearance of bar charts + */ +class KDCHART_EXPORT BarAttributes +{ +public: + BarAttributes(); + BarAttributes( const BarAttributes& ); + BarAttributes &operator= ( const BarAttributes& ); + + ~BarAttributes(); + + void setFixedDataValueGap( qreal gap ); + qreal fixedDataValueGap() const; + + void setUseFixedDataValueGap( bool gapIsFixed ); + bool useFixedDataValueGap() const; + + void setFixedValueBlockGap( qreal gap ); + qreal fixedValueBlockGap() const; + + void setUseFixedValueBlockGap( bool gapIsFixed ); + bool useFixedValueBlockGap() const; + + void setFixedBarWidth( qreal width ); + qreal fixedBarWidth() const; + + void setUseFixedBarWidth( bool useFixedBarWidth ); + bool useFixedBarWidth() const; + + void setGroupGapFactor ( qreal gapFactor ); + qreal groupGapFactor() const; + + void setBarGapFactor( qreal gapFactor ); + qreal barGapFactor() const; + + void setDrawSolidExcessArrows( bool solidArrows ); + bool drawSolidExcessArrows() const; + + bool operator==( const BarAttributes& ) const; + inline bool operator!=( const BarAttributes& other ) const { return !operator==(other); } + +private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } +}; // End of class BarAttributes + +} + +Q_DECLARE_METATYPE( KDChart::BarAttributes ) + +#endif // KDCHARTBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.cpp new file mode 100644 index 00000000..56a19ed6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.cpp @@ -0,0 +1,415 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartBarDiagram.h" +#include "KDChartBarDiagram_p.h" + +#include "KDChartThreeDBarAttributes.h" +#include "KDChartPosition.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" + +#include +#include + +#include + +#include "KDChartNormalBarDiagram_p.h" +#include "KDChartStackedBarDiagram_p.h" +#include "KDChartPercentBarDiagram_p.h" +#include "KDChartNormalLyingBarDiagram_p.h" +#include "KDChartStackedLyingBarDiagram_p.h" +#include "KDChartPercentLyingBarDiagram_p.h" + + +using namespace KDChart; + +BarDiagram::Private::Private() + : orientation( Qt::Vertical ) + , implementor( 0 ) + , normalDiagram( 0 ) + , stackedDiagram( 0 ) + , percentDiagram( 0 ) + , normalLyingDiagram( 0 ) + , stackedLyingDiagram( 0 ) + , percentLyingDiagram( 0 ) +{ +} + +BarDiagram::Private::~Private() +{ + delete normalDiagram; + delete stackedDiagram; + delete percentDiagram; + delete normalLyingDiagram; + delete stackedLyingDiagram; + delete percentLyingDiagram; +} + +void BarDiagram::Private::setOrientationAndType( Qt::Orientation o, BarDiagram::BarType type ) +{ + if ( orientation == o && implementor->type() == type ) { + return; + } + BarDiagram *barDia = qobject_cast< BarDiagram * >( diagram ); + + orientation = o; + + if ( orientation == Qt::Vertical ) { + switch ( type ) { + case Normal: + implementor = normalDiagram; + break; + case Stacked: + implementor = stackedDiagram; + break; + case Percent: + implementor = percentDiagram; + break; + default: + Q_ASSERT_X( false, "BarDiagram::setType", "unknown diagram subtype" ); + } + } else { + switch ( type ) { + case Normal: + implementor = normalLyingDiagram; + break; + case Stacked: + implementor = stackedLyingDiagram; + break; + case Percent: + implementor = percentLyingDiagram; + break; + default: + Q_ASSERT_X( false, "BarDiagram::setType", "unknown diagram subtype" ); + } + } + + Q_ASSERT( implementor->type() == type ); + + // AbstractAxis settings - see AbstractDiagram and CartesianAxis + barDia->setPercentMode( type == BarDiagram::Percent ); + barDia->setDataBoundariesDirty(); + emit barDia->layoutChanged( barDia ); + emit barDia->propertiesChanged(); +} + +#define d d_func() + + +BarDiagram::BarDiagram( QWidget* parent, CartesianCoordinatePlane* plane ) : + AbstractCartesianDiagram( new Private(), parent, plane ) +{ + init(); +} + +void BarDiagram::init() +{ + d->normalDiagram = new NormalBarDiagram( this ); + d->stackedDiagram = new StackedBarDiagram( this ); + d->percentDiagram = new PercentBarDiagram( this ); + d->normalLyingDiagram = new NormalLyingBarDiagram( this ); + d->stackedLyingDiagram = new StackedLyingBarDiagram( this ); + d->percentLyingDiagram = new PercentLyingBarDiagram( this ); + d->implementor = d->normalDiagram; + d->compressor.setModel( attributesModel() ); +} + +BarDiagram::~BarDiagram() +{ +} + +/** + * Creates an exact copy of this diagram. + */ +BarDiagram * BarDiagram::clone() const +{ + + BarDiagram* newDiagram = new BarDiagram( new Private( *d ) ); + newDiagram->setType( type() ); + return newDiagram; +} + +bool BarDiagram::compare( const BarDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + return false; + } + + return // compare the base class + ( static_cast(this)->compare( other ) ) && + // compare own properties + (type() == other->type()); +} + +/** + * Sets the bar diagram's type to \a type + * \sa BarDiagram::BarType + */ +void BarDiagram::setType( const BarType type ) +{ + d->setOrientationAndType( d->orientation, type ); +} + +/** + * @return the type of the bar diagram + */ +BarDiagram::BarType BarDiagram::type() const +{ + return d->implementor->type(); +} + +/** + * Sets the orientation of the bar diagram + */ +void BarDiagram::setOrientation( Qt::Orientation orientation ) +{ + d->setOrientationAndType( orientation, d->implementor->type() ); +} + +/** + * @return the orientation of the bar diagram + */ +Qt::Orientation BarDiagram::orientation() const +{ + return d->orientation; +} + +/** + * Sets the global bar attributes to \a ba + */ +void BarDiagram::setBarAttributes( const BarAttributes& ba ) +{ + d->attributesModel->setModelData( qVariantFromValue( ba ), BarAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the bar attributes of data set \a column to \a ba + */ +void BarDiagram::setBarAttributes( int column, const BarAttributes& ba ) +{ + d->setDatasetAttrs( column, qVariantFromValue( ba ), BarAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the line attributes for the model index \a index to \a ba + */ +void BarDiagram::setBarAttributes( const QModelIndex& index, const BarAttributes& ba ) +{ + attributesModel()->setData( + d->attributesModel->mapFromSource( index ), + qVariantFromValue( ba ), + BarAttributesRole ); + emit propertiesChanged(); +} + +/** + * @return the global bar attribute set + */ +BarAttributes BarDiagram::barAttributes() const +{ + return d->attributesModel->data( KDChart::BarAttributesRole ).value(); +} + +/** + * @return the bar attribute set of data set \a column + */ +BarAttributes BarDiagram::barAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, KDChart::BarAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value(); + return barAttributes(); +} + +/** + * @return the bar attribute set of the model index \a index + */ +BarAttributes BarDiagram::barAttributes( const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), + KDChart::BarAttributesRole ).value(); +} + +/** + * Sets the global 3D bar attributes to \a threeDAttrs + */ +void BarDiagram::setThreeDBarAttributes( const ThreeDBarAttributes& threeDAttrs ) +{ + setDataBoundariesDirty(); + d->attributesModel->setModelData( qVariantFromValue( threeDAttrs ), ThreeDBarAttributesRole ); + emit layoutChanged( this ); + emit propertiesChanged(); +} + +/** + * Sets the 3D bar attributes of dataset \a column to \a threeDAttrs + */ +void BarDiagram::setThreeDBarAttributes( int column, const ThreeDBarAttributes& threeDAttrs ) +{ + setDataBoundariesDirty(); + d->setDatasetAttrs( column, qVariantFromValue( threeDAttrs ), ThreeDBarAttributesRole ); + //emit layoutChanged( this ); + emit propertiesChanged(); +} + +/** + * Sets the 3D line attributes of model index \a index to \a threeDAttrs + */ +void BarDiagram::setThreeDBarAttributes( const QModelIndex& index, const ThreeDBarAttributes& threeDAttrs ) +{ + setDataBoundariesDirty(); + d->attributesModel->setData( + d->attributesModel->mapFromSource(index), + qVariantFromValue( threeDAttrs ), + ThreeDBarAttributesRole ); + //emit layoutChanged( this ); + emit propertiesChanged(); +} + +/** + * @return the global 3D bar attributes + */ +ThreeDBarAttributes BarDiagram::threeDBarAttributes() const +{ + return d->attributesModel->data( KDChart::ThreeDBarAttributesRole ).value(); +} + +/** + * @return the 3D bar attributes of data set \a column + */ +ThreeDBarAttributes BarDiagram::threeDBarAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, KDChart::ThreeDBarAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value(); + return threeDBarAttributes(); +} + +/** + * @return the 3D bar attributes of the model index \a index + */ +ThreeDBarAttributes BarDiagram::threeDBarAttributes( const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource(index), + KDChart::ThreeDBarAttributesRole ).value(); +} + +qreal BarDiagram::threeDItemDepth( const QModelIndex& index ) const +{ + return threeDBarAttributes( index ).validDepth(); +} + +qreal BarDiagram::threeDItemDepth( int column ) const +{ + return threeDBarAttributes( column ).validDepth(); +} + +void BarDiagram::resizeEvent ( QResizeEvent*) +{ + +} + +const QPair BarDiagram::calculateDataBoundaries() const +{ + d->compressor.setResolution( static_cast( this->size().width() * coordinatePlane()->zoomFactorX() ), + static_cast( this->size().height() * coordinatePlane()->zoomFactorY() ) ); + + if ( !checkInvariants( true ) ) { + return QPair< QPointF, QPointF >( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + } + + // note: calculateDataBoundaries() is ignoring the hidden flags. + // That's not a bug but a feature: Hiding data does not mean removing them. + // For totally removing data from KD Chart's view people can use e.g. a proxy model + // calculate boundaries for different line types Normal - Stacked - Percent - Default Normal + return d->implementor->calculateDataBoundaries(); +} + +void BarDiagram::paintEvent ( QPaintEvent*) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void BarDiagram::paint( PaintContext* ctx ) +{ + if ( !checkInvariants( true ) ) return; + if ( !AbstractGrid::isBoundariesValid(dataBoundaries()) ) return; + const PainterSaver p( ctx->painter() ); + if ( model()->rowCount( rootIndex() ) == 0 || model()->columnCount( rootIndex() ) == 0 ) + return; // nothing to paint for us + + AbstractCoordinatePlane* const plane = ctx->coordinatePlane(); + ctx->setCoordinatePlane( plane->sharedAxisMasterPlane( ctx->painter() ) ); + + // This was intended as a fix for KDCH-515, however it caused KDCH-816 + // and the original problem in KDCH-515 had by then been fixed in another way. + // Bottom line is, this code is wrong because the above call to + // plane->sharedAxisMasterPlane() performs a translation of the painter, which + // also translates the clip rect, so if we set the old clip rect again afterwards, + // we get a wrong clipping. + // Also, this code is unnecessary because CartesianCoordinatePlane::paint() + // already sets the clipping properly before calling this method. + // ctx->painter()->setClipping( true ); + // ctx->painter()->setClipRect( ctx->rectangle() ); + + // paint different bar types Normal - Stacked - Percent - Default Normal + d->implementor->paint( ctx ); + + ctx->setCoordinatePlane( plane ); +} + +void BarDiagram::resize( const QSizeF& size ) +{ + d->compressor.setResolution( static_cast< int >( size.width() * coordinatePlane()->zoomFactorX() ), + static_cast< int >( size.height() * coordinatePlane()->zoomFactorY() ) ); + setDataBoundariesDirty(); + QAbstractItemView::resize( size.toSize() ); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int BarDiagram::numberOfAbscissaSegments () const +{ + return d->attributesModel->rowCount(attributesModelRootIndex()); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int BarDiagram::numberOfOrdinateSegments () const +{ + return d->attributesModel->columnCount(attributesModelRootIndex()); +} + +//#undef d diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.h new file mode 100644 index 00000000..9ef8a2b2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBARDIAGRAM_H +#define KDCHARTBARDIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartBarAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDBarAttributes; + +/** + * @brief BarDiagram defines a common bar diagram. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT BarDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( BarDiagram ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( BarDiagram, CartesianCoordinatePlane ) + +public: + class BarDiagramType; + friend class BarDiagramType; + + explicit BarDiagram( + QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~BarDiagram(); + + virtual BarDiagram * clone() const; + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const BarDiagram* other ) const; + + enum BarType { Normal, + Stacked, + Percent, + Rows ///< @deprecated Use BarDiagram::setOrientation() instead + }; + + void setType( const BarType type ); + BarType type() const; + + void setOrientation( Qt::Orientation orientation ); + Qt::Orientation orientation() const; + + void setBarAttributes( const BarAttributes & a ); + void setBarAttributes( int column, const BarAttributes & a ); + void setBarAttributes( const QModelIndex & index, const BarAttributes & a ); + + BarAttributes barAttributes() const; + BarAttributes barAttributes( int column ) const; + BarAttributes barAttributes( const QModelIndex & index ) const; + + void setThreeDBarAttributes( const ThreeDBarAttributes & a ); + void setThreeDBarAttributes( int column, const ThreeDBarAttributes & a ); + void setThreeDBarAttributes( const QModelIndex & index, + const ThreeDBarAttributes & a ); + ThreeDBarAttributes threeDBarAttributes() const; + ThreeDBarAttributes threeDBarAttributes( int column ) const; + ThreeDBarAttributes threeDBarAttributes( const QModelIndex & index ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /** \reimpl */ + const int numberOfAbscissaSegments () const; + /** \reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /** \reimpl */ + int numberOfAbscissaSegments () const; + /** \reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +private: + + void calculateValueAndGapWidths( int rowCount, int colCount, + qreal groupWidth, + qreal& barWidth, + qreal& spaceBetweenBars, + qreal& spaceBetweenGroups ); +}; // End of class BarDiagram + +} + +#endif // KDCHARTBARDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.cpp new file mode 100644 index 00000000..704b03ed --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartBarDiagram.h" +#include "KDChartBarDiagram_p.h" + +#include "KDChartDataValueAttributes.h" +#include "KDChartPainterSaver_p.h" + +using namespace KDChart; + +BarDiagram::Private::Private( const Private& rhs ) + : AbstractCartesianDiagram::Private( rhs ) +{ +} + +void BarDiagram::BarDiagramType::paintBars( PaintContext* ctx, const QModelIndex& index, const QRectF& bar, qreal maxDepth ) +{ + PainterSaver painterSaver( ctx->painter() ); + + //Pending Michel: configure threeDBrush settings - shadowColor etc... + QBrush indexBrush( diagram()->brush( index ) ); + QPen indexPen( diagram()->pen( index ) ); + + ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram()->antiAliasing() ); + ThreeDBarAttributes threeDAttrs = diagram()->threeDBarAttributes( index ); + if ( threeDAttrs.isEnabled() ) { + indexBrush = threeDAttrs.threeDBrush( indexBrush, bar ); + } + ctx->painter()->setBrush( indexBrush ); + ctx->painter()->setPen( PrintingParameters::scalePen( indexPen ) ); + + if ( threeDAttrs.isEnabled() ) { + if ( maxDepth ) { + threeDAttrs.setDepth( -maxDepth ); + } + //fixme adjust the painting to reasonable depth value + const qreal usedDepth = threeDAttrs.depth() * ( type() == BarDiagram::Normal ? 0.25 : 1.0 ); + + const QRectF isoRect = bar.translated( usedDepth, -usedDepth ); + // we need to find out if the height is negative + // and in this case paint it up and down + QPolygonF topPoints; + if ( isoRect.height() < 0 ) { + if ( !( type() == BarDiagram::Stacked && index.column() != 0 ) ) { + // fix it when several negative stacked values + topPoints << isoRect.bottomLeft() << isoRect.bottomRight() + << bar.bottomRight() << bar.bottomLeft(); + } + } else { + reverseMapper().addRect( index.row(), index.column(), isoRect ); + ctx->painter()->drawRect( isoRect ); + if ( !( type() == BarDiagram::Percent && isoRect.height() == 0 ) ) { + topPoints << bar.topLeft() << bar.topRight() << isoRect.topRight() << isoRect.topLeft(); + } + } + + bool noClippingForTop = false; + if ( !topPoints.isEmpty() ) { + // Draw the top, if at least one of the top's points is + // either inside or near at the edge of the coordinate plane: + bool drawIt = false; + bool hasPointOutside = false; + const QRectF r( ctx->rectangle().adjusted( 0, -1, 1, 0 ) ); + KDAB_FOREACH( QPointF pt, topPoints ) { + if ( r.contains( pt ) ) { + drawIt = true; + } else { + hasPointOutside = true; + } + } + if ( drawIt ) { + const PainterSaver p( ctx->painter() ); + noClippingForTop = hasPointOutside && ctx->painter()->hasClipping(); + if ( noClippingForTop ) { + ctx->painter()->setClipping( false ); + } + reverseMapper().addPolygon( index.row(), index.column(), topPoints ); + ctx->painter()->drawPolygon( topPoints ); + } + } + + if ( bar.height() != 0 ) { + const PainterSaver p( ctx->painter() ); + if ( noClippingForTop ) { + ctx->painter()->setClipping( false ); + } + QPolygonF sidePoints; + sidePoints << bar.topRight() << isoRect.topRight() + << isoRect.bottomRight() << bar.bottomRight(); + reverseMapper().addPolygon( index.row(), index.column(), sidePoints ); + ctx->painter()->drawPolygon( sidePoints ); + } + } + + if ( bar.height() != 0 ) { + reverseMapper().addRect( index.row(), index.column(), bar ); + ctx->painter()->drawRect( bar ); + } +} + +AttributesModel* BarDiagram::BarDiagramType::attributesModel() const +{ + return m_private->attributesModel; +} + +QModelIndex BarDiagram::BarDiagramType::attributesModelRootIndex() const +{ + return diagram()->attributesModelRootIndex(); +} + +BarDiagram* BarDiagram::BarDiagramType::diagram() const +{ + return static_cast< BarDiagram* >( m_private->diagram ); +} + +void BarDiagram::BarDiagramType::calculateValueAndGapWidths( int rowCount, int colCount, + qreal groupWidth, + qreal& outBarWidth, + qreal& outSpaceBetweenBars, + qreal& outSpaceBetweenGroups ) +{ + + Q_UNUSED( rowCount ); + BarAttributes ba = diagram()->barAttributes(); + + // Pending Michel Fixme + /* We are colCount groups to paint. Each group is centered around the + * horizontal point position on the grid. The full area covers the + * values -1 to colCount + 1. A bar has a relative width of one unit, + * the gaps between bars are 0.5 wide, and the gap between groups is + * also one unit, by default. */ + + qreal units; + if ( type() == Normal ) { + units = colCount // number of bars in group * 1.0 + + (colCount-1) * ba.barGapFactor() // number of bar gaps + + 1 * ba.groupGapFactor(); // number of group gaps + } else { + units = 1 + 1 * ba.groupGapFactor(); + } + + qreal unitWidth = groupWidth / units; + + if ( !ba.useFixedBarWidth() ) { + outBarWidth = unitWidth; + } + + outSpaceBetweenBars += unitWidth * ba.barGapFactor(); + + // Pending Michel - minLimit: allow space between bars to be reduced until the bars are displayed next to each other. + // is that what we want? + // sebsauer; in the case e.g. CartesianCoordinatePlane::setHorizontalRangeReversed(true) was + // used to reverse the values, we deal with negative outSpaceBetweenBars and unitWidth here + // and since that's correct we don't like to lose e.g. the spacing here. + //if ( outSpaceBetweenBars < 0 ) + // outSpaceBetweenBars = 0; + + outSpaceBetweenGroups += unitWidth * ba.groupGapFactor(); +} + +ReverseMapper& BarDiagram::BarDiagramType::reverseMapper() +{ + return m_private->reverseMapper; +} + +CartesianDiagramDataCompressor& BarDiagram::BarDiagramType::compressor() const +{ + return m_private->compressor; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.h new file mode 100644 index 00000000..25377730 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartBarDiagram_p.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTBARDIAGRAM_P_H +#define KDCHARTBARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartBarDiagram.h" + +#include + +#include "KDChartAbstractCartesianDiagram_p.h" +#include "KDChartThreeDBarAttributes.h" + +#include + + +namespace KDChart { + +class PaintContext; + +/** + * \internal + */ +class BarDiagram::Private : public AbstractCartesianDiagram::Private +{ + friend class BarDiagram; + friend class BarDiagramType; + +public: + Private(); + Private( const Private& rhs ); + ~Private(); + + void setOrientationAndType( Qt::Orientation, BarDiagram::BarType ); + + Qt::Orientation orientation; + + BarDiagramType* implementor; // the current type + BarDiagramType* normalDiagram; + BarDiagramType* stackedDiagram; + BarDiagramType* percentDiagram; + BarDiagramType* normalLyingDiagram; + BarDiagramType* stackedLyingDiagram; + BarDiagramType* percentLyingDiagram; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( BarDiagram, AbstractCartesianDiagram, CartesianCoordinatePlane ) + + class BarDiagram::BarDiagramType + { + public: + explicit BarDiagramType( BarDiagram* d ) + : m_private( d->d_func() ) + { + } + virtual ~BarDiagramType() {} + virtual BarDiagram::BarType type() const = 0; + virtual const QPair calculateDataBoundaries() const = 0; + virtual void paint( PaintContext* ctx ) = 0; + BarDiagram* diagram() const; + + protected: + // make some elements of m_private available to derived classes: + AttributesModel* attributesModel() const; + QModelIndex attributesModelRootIndex() const; + ReverseMapper& reverseMapper(); + CartesianDiagramDataCompressor& compressor() const; + + void paintBars( PaintContext* ctx, const QModelIndex& index, const QRectF& bar, qreal maxDepth ); + void calculateValueAndGapWidths( int rowCount, int colCount, + qreal groupWidth, + qreal& barWidth, + qreal& spaceBetweenBars, + qreal& spaceBetweenGroups ); + + BarDiagram::Private* m_private; + }; +} + +#endif /* KDCHARTBARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.cpp new file mode 100644 index 00000000..bededd82 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.cpp @@ -0,0 +1,1148 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartCartesianAxis.h" +#include "KDChartCartesianAxis_p.h" + +#include + +#include +#include +#include +#include +#include + +#include "KDChartPaintContext.h" +#include "KDChartChart.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartAbstractDiagram_p.h" +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartLayoutItems.h" +#include "KDChartBarDiagram.h" +#include "KDChartStockDiagram.h" +#include "KDChartLineDiagram.h" +#include "KDChartPrintingParameters.h" + +#include + +using namespace KDChart; + +#define d (d_func()) + +static qreal slightlyLessThan( qreal r ) +{ + if ( r == 0.0 ) { + // scale down the epsilon somewhat arbitrarily + return r - std::numeric_limits< qreal >::epsilon() * 1e-6; + } + // scale the epsilon so that it (hopefully) changes at least the least significant bit of r + qreal diff = qAbs( r ) * std::numeric_limits< qreal >::epsilon() * 2.0; + return r - diff; +} + +static int numSignificantDecimalPlaces( qreal floatNumber ) +{ + static const int maxPlaces = 15; + QString sample = QString::number( floatNumber, 'f', maxPlaces ).section( QLatin1Char('.'), 1, 2 ); + int ret = maxPlaces; + for ( ; ret > 0; ret-- ) { + if ( sample[ ret - 1 ] != QLatin1Char( '0' ) ) { + break; + } + } + return ret; +} + +// ensure we take the const-overload of any following function, esp. required for strict iterators +template +static const T& constify(T &v) +{ + return v; +} + +// Feature idea: In case of numeric labels, consider limiting the possible values of majorThinningFactor +// to something like {1, 2, 5} * 10^n. Or even better, something that achieves round values in the +// remaining labels. + +TickIterator::TickIterator( CartesianAxis* a, CartesianCoordinatePlane* plane, uint majorThinningFactor, + bool omitLastTick ) + : m_axis( a ), + m_majorThinningFactor( majorThinningFactor ), + m_majorLabelCount( 0 ), + m_type( NoTick ) +{ + // deal with the things that are specfic to axes (like annotations), before the generic init(). + const CartesianAxis::Private *axisPriv = CartesianAxis::Private::get( a ); + XySwitch xy( axisPriv->isVertical() ); + m_dimension = xy( plane->gridDimensionsList().first(), plane->gridDimensionsList().last() ); + if ( omitLastTick ) { + // In bar and stock charts the last X tick is a fencepost with no associated value, which is + // convenient for grid painting. Here we have to manually exclude it to avoid overpainting. + m_dimension.end -= m_dimension.stepWidth; + } + + m_annotations = axisPriv->annotations; + m_customTicks = axisPriv->customTicksPositions; + + const qreal inf = std::numeric_limits< qreal >::infinity(); + + if ( m_customTicks.count() ) { + qSort( m_customTicks.begin(), m_customTicks.end() ); + m_customTickIndex = 0; + m_customTick = m_customTicks.at( m_customTickIndex ); + } else { + m_customTickIndex = -1; + m_customTick = inf; + } + + if ( m_majorThinningFactor > 1 && hasShorterLabels() ) { + m_manualLabelTexts = m_axis->shortLabels(); + } else { + m_manualLabelTexts = m_axis->labels(); + } + m_manualLabelIndex = m_manualLabelTexts.isEmpty() ? -1 : 0; + + if ( !m_dimension.isCalculated ) { + // ### depending on the data, it is difficult to impossible to choose anchors (where ticks + // corresponding to the header labels are) on the ordinate or even the abscissa with + // 2-dimensional data. this should be somewhat mitigated by isCalculated only being false + // when header data labels should work, at least that seems to be what the code that sets up + // the dimensions is trying to do. + QStringList dataHeaderLabels; + AbstractDiagram* const dia = plane->diagram(); + dataHeaderLabels = dia->itemRowLabels(); + if ( !dataHeaderLabels.isEmpty() ) { + AttributesModel* model = dia->attributesModel(); + const int anchorCount = model->rowCount( QModelIndex() ); + if ( anchorCount == dataHeaderLabels.count() ) { + for ( int i = 0; i < anchorCount; i++ ) { + // ### ordinal number as anchor point generally only works for 1-dimensional data + m_dataHeaderLabels.insert( qreal( i ), dataHeaderLabels.at( i ) ); + } + } + } + } + + bool hasMajorTicks = m_axis->rulerAttributes().showMajorTickMarks(); + bool hasMinorTicks = m_axis->rulerAttributes().showMinorTickMarks(); + + init( xy.isY, hasMajorTicks, hasMinorTicks, plane ); +} + +static QMap< qreal, QString > allAxisAnnotations( const AbstractCoordinatePlane *plane, bool isY ) +{ + QMap< qreal, QString > annotations; + Q_FOREACH( const AbstractDiagram *diagram, plane->diagrams() ) { + const AbstractCartesianDiagram *cd = qobject_cast< const AbstractCartesianDiagram* >( diagram ); + if ( !cd ) { + continue; + } + Q_FOREACH( const CartesianAxis *axis, cd->axes() ) { + const CartesianAxis::Private *axisPriv = CartesianAxis::Private::get( axis ); + if ( axisPriv->isVertical() == isY ) { + annotations.unite( axisPriv->annotations ); + } + } + } + return annotations; +} + +TickIterator::TickIterator( bool isY, const DataDimension& dimension, bool useAnnotationsForTicks, + bool hasMajorTicks, bool hasMinorTicks, CartesianCoordinatePlane* plane ) + : m_axis( 0 ), + m_dimension( dimension ), + m_majorThinningFactor( 1 ), + m_majorLabelCount( 0 ), + m_customTickIndex( -1 ), + m_manualLabelIndex( -1 ), + m_type( NoTick ), + m_customTick( std::numeric_limits< qreal >::infinity() ) +{ + if ( useAnnotationsForTicks ) { + m_annotations = allAxisAnnotations( plane, isY ); + } + init( isY, hasMajorTicks, hasMinorTicks, plane ); +} + +void TickIterator::init( bool isY, bool hasMajorTicks, bool hasMinorTicks, + CartesianCoordinatePlane* plane ) +{ + Q_ASSERT( std::numeric_limits< qreal >::has_infinity ); + + m_isLogarithmic = m_dimension.calcMode == AbstractCoordinatePlane::Logarithmic; + // sanity check against infinite loops + hasMajorTicks = hasMajorTicks && ( m_dimension.stepWidth > 0 || m_isLogarithmic ); + hasMinorTicks = hasMinorTicks && ( m_dimension.subStepWidth > 0 || m_isLogarithmic ); + + XySwitch xy( isY ); + + GridAttributes gridAttributes = plane->gridAttributes( xy( Qt::Horizontal, Qt::Vertical ) ); + m_isLogarithmic = m_dimension.calcMode == AbstractCoordinatePlane::Logarithmic; + if ( !m_isLogarithmic ) { + // adjustedLowerUpperRange() is intended for use with linear scaling; specifically it would + // round lower bounds < 1 to 0. + + const bool fixedRange = xy( plane->autoAdjustHorizontalRangeToData(), + plane->autoAdjustVerticalRangeToData() ) >= 100; + const bool adjustLower = gridAttributes.adjustLowerBoundToGrid() && !fixedRange; + const bool adjustUpper = gridAttributes.adjustUpperBoundToGrid() && !fixedRange; + m_dimension = AbstractGrid::adjustedLowerUpperRange( m_dimension, adjustLower, adjustUpper ); + + m_decimalPlaces = numSignificantDecimalPlaces( m_dimension.stepWidth ); + } else { + // the number of significant decimal places for each label naturally varies with logarithmic scaling + m_decimalPlaces = -1; + } + + const qreal inf = std::numeric_limits< qreal >::infinity(); + + // try to place m_position just in front of the first tick to be drawn so that operator++() + // can be used to find the first tick + if ( m_isLogarithmic ) { + if ( ISNAN( m_dimension.start ) || ISNAN( m_dimension.end ) ) { + // this can happen in a spurious paint operation before everything is set up; + // just bail out to avoid an infinite loop in that case. + m_dimension.start = 0.0; + m_dimension.end = 0.0; + m_position = inf; + m_majorTick = inf; + m_minorTick = inf; + } else if ( m_dimension.start >= 0 ) { + m_position = m_dimension.start ? pow( 10.0, floor( log10( m_dimension.start ) ) - 1.0 ) + : 1e-6; + m_majorTick = hasMajorTicks ? m_position : inf; + m_minorTick = hasMinorTicks ? m_position * 20.0 : inf; + } else { + m_position = -pow( 10.0, ceil( log10( -m_dimension.start ) ) + 1.0 ); + m_majorTick = hasMajorTicks ? m_position : inf; + m_minorTick = hasMinorTicks ? m_position * 0.09 : inf; + } + } else { + m_majorTick = hasMajorTicks ? m_dimension.start : inf; + m_minorTick = hasMinorTicks ? m_dimension.start : inf; + m_position = slightlyLessThan( m_dimension.start ); + } + + ++( *this ); +} + +bool TickIterator::areAlmostEqual( qreal r1, qreal r2 ) const +{ + if ( !m_isLogarithmic ) { + qreal span = m_dimension.end - m_dimension.start; + if ( span == 0 ) { + // When start == end, we still want to show one tick if possible, + // which needs this function to perform a reasonable comparison. + span = qFuzzyIsNull( m_dimension.start) ? 1 : qAbs( m_dimension.start ); + } + return qAbs( r2 - r1 ) < ( span ) * 1e-6; + } else { + return qAbs( r2 - r1 ) < qMax( qAbs( r1 ), qAbs( r2 ) ) * 0.01; + } +} + +bool TickIterator::isHigherPrecedence( qreal importantTick, qreal unimportantTick ) const +{ + return importantTick != std::numeric_limits< qreal >::infinity() && + ( importantTick <= unimportantTick || areAlmostEqual( importantTick, unimportantTick ) ); +} + +void TickIterator::computeMajorTickLabel( int decimalPlaces ) +{ + if ( m_manualLabelIndex >= 0 ) { + m_text = m_manualLabelTexts[ m_manualLabelIndex++ ]; + if ( m_manualLabelIndex >= m_manualLabelTexts.count() ) { + // manual label texts repeat if there are less label texts than ticks on an axis + m_manualLabelIndex = 0; + } + m_type = m_majorThinningFactor > 1 ? MajorTickManualShort : MajorTickManualLong; + } else { + // if m_axis is null, we are dealing with grid lines. grid lines never need labels. + if ( m_axis && ( m_majorLabelCount++ % m_majorThinningFactor ) == 0 ) { + QMap< qreal, QString >::ConstIterator it = + constify(m_dataHeaderLabels).lowerBound( slightlyLessThan( m_position ) ); + + if ( it != m_dataHeaderLabels.constEnd() && areAlmostEqual( it.key(), m_position ) ) { + m_text = it.value(); + m_type = MajorTickHeaderDataLabel; + } else { + // 'f' to avoid exponential notation for large numbers, consistent with data value text + if ( decimalPlaces < 0 ) { + decimalPlaces = numSignificantDecimalPlaces( m_position ); + } + m_text = QString::number( m_position, 'f', decimalPlaces ); + m_type = MajorTick; + } + } else { + m_text.clear(); + m_type = MajorTick; + } + } +} + +void TickIterator::operator++() +{ + if ( isAtEnd() ) { + return; + } + const qreal inf = std::numeric_limits< qreal >::infinity(); + + // make sure to find the next tick at a value strictly greater than m_position + + if ( !m_annotations.isEmpty() ) { + QMap< qreal, QString >::ConstIterator it = constify(m_annotations).upperBound( m_position ); + if ( it != m_annotations.constEnd() ) { + m_position = it.key(); + m_text = it.value(); + m_type = CustomTick; + } else { + m_position = inf; + } + } else if ( !m_isLogarithmic && m_dimension.stepWidth * 1e6 < + qMax( qAbs( m_dimension.start ), qAbs( m_dimension.end ) ) ) { + // If the step width is too small to increase m_position at all, we get an infinite loop. + // This usually happens when m_dimension.start == m_dimension.end and both are very large. + // When start == end, the step width defaults to 1, and it doesn't scale with start or end. + // So currently, we bail and show no tick at all for empty ranges > 10^6, but at least we don't hang. + m_position = inf; + } else { + // advance the calculated ticks + if ( m_isLogarithmic ) { + while ( m_majorTick <= m_position ) { + m_majorTick *= m_position >= 0 ? 10 : 0.1; + } + while ( m_minorTick <= m_position ) { + // the next major tick position should be greater than this + m_minorTick += m_majorTick * ( m_position >= 0 ? 0.1 : 1.0 ); + } + } else { + while ( m_majorTick <= m_position ) { + m_majorTick += m_dimension.stepWidth; + } + while ( m_minorTick <= m_position ) { + m_minorTick += m_dimension.subStepWidth; + } + } + + while ( m_customTickIndex >= 0 && m_customTick <= m_position ) { + if ( ++m_customTickIndex >= m_customTicks.count() ) { + m_customTickIndex = -1; + m_customTick = inf; + break; + } + m_customTick = m_customTicks.at( m_customTickIndex ); + } + + // now see which kind of tick we'll have + if ( isHigherPrecedence( m_customTick, m_majorTick ) && isHigherPrecedence( m_customTick, m_minorTick ) ) { + m_position = m_customTick; + computeMajorTickLabel( -1 ); + // override the MajorTick type here because those tick's labels are collision-tested, which we don't want + // for custom ticks. they may be arbitrarily close to other ticks, causing excessive label thinning. + if ( m_type == MajorTick ) { + m_type = CustomTick; + } + } else if ( isHigherPrecedence( m_majorTick, m_minorTick ) ) { + m_position = m_majorTick; + if ( m_minorTick != inf ) { + // realign minor to major + m_minorTick = m_majorTick; + } + computeMajorTickLabel( m_decimalPlaces ); + } else if ( m_minorTick != inf ) { + m_position = m_minorTick; + m_text.clear(); + m_type = MinorTick; + } else { + m_position = inf; + } + } + + if ( m_position > m_dimension.end || ISNAN( m_position ) ) { + m_position = inf; // make isAtEnd() return true + m_text.clear(); + m_type = NoTick; + } +} + +CartesianAxis::CartesianAxis( AbstractCartesianDiagram* diagram ) + : AbstractAxis ( new Private( diagram, this ), diagram ) +{ + init(); +} + +CartesianAxis::~CartesianAxis() +{ + // when we remove the first axis it will unregister itself and + // propagate the next one to the primary, thus the while loop + while ( d->mDiagram ) { + AbstractCartesianDiagram *cd = qobject_cast< AbstractCartesianDiagram* >( d->mDiagram ); + cd->takeAxis( this ); + } + KDAB_FOREACH( AbstractDiagram *diagram, d->secondaryDiagrams ) { + AbstractCartesianDiagram *cd = qobject_cast< AbstractCartesianDiagram* >( diagram ); + cd->takeAxis( this ); + } +} + +void CartesianAxis::init() +{ + d->customTickLength = 3; + d->position = Bottom; + setCachedSizeDirty(); + connect( this, SIGNAL( coordinateSystemChanged() ), SLOT( coordinateSystemChanged() ) ); +} + + +bool CartesianAxis::compare( const CartesianAxis* other ) const +{ + if ( other == this ) { + return true; + } + if ( !other ) { + return false; + } + return AbstractAxis::compare( other ) && ( position() == other->position() ) && + ( titleText() == other->titleText() ) && + ( titleTextAttributes() == other->titleTextAttributes() ); +} + +void CartesianAxis::coordinateSystemChanged() +{ + layoutPlanes(); +} + + +void CartesianAxis::setTitleText( const QString& text ) +{ + d->titleText = text; + layoutPlanes(); +} + +QString CartesianAxis::titleText() const +{ + return d->titleText; +} + +void CartesianAxis::setTitleTextAttributes( const TextAttributes &a ) +{ + d->titleTextAttributes = a; + d->useDefaultTextAttributes = false; + layoutPlanes(); +} + +TextAttributes CartesianAxis::titleTextAttributes() const +{ + if ( hasDefaultTitleTextAttributes() ) { + TextAttributes ta( textAttributes() ); + Measure me( ta.fontSize() ); + me.setValue( me.value() * 1.5 ); + ta.setFontSize( me ); + return ta; + } + return d->titleTextAttributes; +} + +void CartesianAxis::resetTitleTextAttributes() +{ + d->useDefaultTextAttributes = true; + layoutPlanes(); +} + +bool CartesianAxis::hasDefaultTitleTextAttributes() const +{ + return d->useDefaultTextAttributes; +} + + +void CartesianAxis::setPosition( Position p ) +{ + d->position = p; + layoutPlanes(); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +CartesianAxis::Position CartesianAxis::position() const +{ + return d->position; +} + +void CartesianAxis::layoutPlanes() +{ + if ( ! d->diagram() || ! d->diagram()->coordinatePlane() ) { + return; + } + AbstractCoordinatePlane* plane = d->diagram()->coordinatePlane(); + if ( plane ) { + plane->layoutPlanes(); + } +} + +static bool referenceDiagramIsBarDiagram( const AbstractDiagram * diagram ) +{ + const AbstractCartesianDiagram * dia = + qobject_cast< const AbstractCartesianDiagram * >( diagram ); + if ( dia && dia->referenceDiagram() ) + dia = dia->referenceDiagram(); + return qobject_cast< const BarDiagram* >( dia ) != 0; +} + +static bool referenceDiagramNeedsCenteredAbscissaTicks( const AbstractDiagram *diagram ) +{ + const AbstractCartesianDiagram * dia = + qobject_cast< const AbstractCartesianDiagram * >( diagram ); + if ( dia && dia->referenceDiagram() ) + dia = dia->referenceDiagram(); + if ( qobject_cast< const BarDiagram* >( dia ) ) + return true; + if ( qobject_cast< const StockDiagram* >( dia ) ) + return true; + + const LineDiagram * lineDiagram = qobject_cast< const LineDiagram* >( dia ); + return lineDiagram && lineDiagram->centerDataPoints(); +} + +bool CartesianAxis::isAbscissa() const +{ + const Qt::Orientation diagramOrientation = referenceDiagramIsBarDiagram( d->diagram() ) ? ( ( BarDiagram* )( d->diagram() ) )->orientation() + : Qt::Vertical; + return diagramOrientation == Qt::Vertical ? position() == Bottom || position() == Top + : position() == Left || position() == Right; +} + +bool CartesianAxis::isOrdinate() const +{ + return !isAbscissa(); +} + +void CartesianAxis::paint( QPainter* painter ) +{ + if ( !d->diagram() || !d->diagram()->coordinatePlane() ) { + return; + } + PaintContext ctx; + ctx.setPainter ( painter ); + AbstractCoordinatePlane *const plane = d->diagram()->coordinatePlane(); + ctx.setCoordinatePlane( plane ); + + ctx.setRectangle( QRectF( areaGeometry() ) ); + PainterSaver painterSaver( painter ); + + // enable clipping only when required due to zoom, because it slows down painting + // (the alternative to clipping when zoomed in requires much more work to paint just the right area) + const qreal zoomFactor = d->isVertical() ? plane->zoomFactorY() : plane->zoomFactorX(); + if ( zoomFactor > 1.0 ) { + painter->setClipRegion( areaGeometry().adjusted( - d->amountOfLeftOverlap - 1, - d->amountOfTopOverlap - 1, + d->amountOfRightOverlap + 1, d->amountOfBottomOverlap + 1 ) ); + } + paintCtx( &ctx ); +} + +const TextAttributes CartesianAxis::Private::titleTextAttributesWithAdjustedRotation() const +{ + TextAttributes titleTA( titleTextAttributes ); + int rotation = titleTA.rotation(); + if ( position == Left || position == Right ) { + rotation += 270; + } + if ( rotation >= 360 ) { + rotation -= 360; + } + // limit the allowed values to 0, 90, 180, 270 + rotation = ( rotation / 90 ) * 90; + titleTA.setRotation( rotation ); + return titleTA; +} + +QString CartesianAxis::Private::customizedLabelText( const QString& text, Qt::Orientation orientation, + qreal value ) const +{ + // ### like in the old code, using int( value ) as column number... + QString withUnits = diagram()->unitPrefix( int( value ), orientation, true ) + + text + + diagram()->unitSuffix( int( value ), orientation, true ); + return axis()->customizedLabel( withUnits ); +} + +void CartesianAxis::setTitleSpace( qreal axisTitleSpace ) +{ + d->axisTitleSpace = axisTitleSpace; +} + +qreal CartesianAxis::titleSpace() const +{ + return d->axisTitleSpace; +} + +void CartesianAxis::setTitleSize( qreal value ) +{ + // ### remove me +} + +qreal CartesianAxis::titleSize() const +{ + // ### remove me + return 1.0; +} + +void CartesianAxis::Private::drawTitleText( QPainter* painter, CartesianCoordinatePlane* plane, + const QRect& geoRect ) const +{ + const TextAttributes titleTA( titleTextAttributesWithAdjustedRotation() ); + if ( titleTA.isVisible() ) { + TextLayoutItem titleItem( titleText, titleTA, plane->parent(), KDChartEnums::MeasureOrientationMinimum, + Qt::AlignHCenter | Qt::AlignVCenter ); + QPointF point; + QSize size = titleItem.sizeHint(); + switch ( position ) { + case Top: + point.setX( geoRect.left() + geoRect.width() / 2 ); + point.setY( geoRect.top() + ( size.height() / 2 ) / axisTitleSpace ); + size.setWidth( qMin( size.width(), axis()->geometry().width() ) ); + break; + case Bottom: + point.setX( geoRect.left() + geoRect.width() / 2 ); + point.setY( geoRect.bottom() - ( size.height() / 2 ) / axisTitleSpace ); + size.setWidth( qMin( size.width(), axis()->geometry().width() ) ); + break; + case Left: + point.setX( geoRect.left() + ( size.width() / 2 ) / axisTitleSpace ); + point.setY( geoRect.top() + geoRect.height() / 2 ); + size.setHeight( qMin( size.height(), axis()->geometry().height() ) ); + break; + case Right: + point.setX( geoRect.right() - ( size.width() / 2 ) / axisTitleSpace ); + point.setY( geoRect.top() + geoRect.height() / 2 ); + size.setHeight( qMin( size.height(), axis()->geometry().height() ) ); + break; + } + const PainterSaver painterSaver( painter ); + painter->setClipping( false ); + painter->translate( point ); + titleItem.setGeometry( QRect( QPoint( -size.width() / 2, -size.height() / 2 ), size ) ); + titleItem.paint( painter ); + } +} + +bool CartesianAxis::Private::isVertical() const +{ + return axis()->isAbscissa() == AbstractDiagram::Private::get( diagram() )->isTransposed(); +} + +void CartesianAxis::paintCtx( PaintContext* context ) +{ + Q_ASSERT_X ( d->diagram(), "CartesianAxis::paint", + "Function call not allowed: The axis is not assigned to any diagram." ); + + CartesianCoordinatePlane* plane = dynamic_cast( context->coordinatePlane() ); + Q_ASSERT_X ( plane, "CartesianAxis::paint", + "Bad function call: PaintContext::coordinatePlane() NOT a cartesian plane." ); + + // note: Not having any data model assigned is no bug + // but we can not draw an axis then either. + if ( !d->diagram()->model() ) { + return; + } + + const bool centerTicks = referenceDiagramNeedsCenteredAbscissaTicks( d->diagram() ) && isAbscissa(); + + XySwitch geoXy( d->isVertical() ); + + QPainter* const painter = context->painter(); + + // determine the position of the axis (also required for labels) and paint it + + qreal transversePosition = signalingNaN; // in data space + // the next one describes an additional shift in screen space; it is unfortunately required to + // make axis sharing work, which uses the areaGeometry() to override the position of the axis. + qreal transverseScreenSpaceShift = signalingNaN; + { + // determine the unadulterated position in screen space + + DataDimension dimX = plane->gridDimensionsList().first(); + DataDimension dimY = plane->gridDimensionsList().last(); + QPointF start( dimX.start, dimY.start ); + QPointF end( dimX.end, dimY.end ); + // consider this: you can turn a diagonal line into a horizontal or vertical line on any + // edge by changing just one of its four coordinates. + switch ( position() ) { + case CartesianAxis::Bottom: + end.setY( dimY.start ); + break; + case CartesianAxis::Top: + start.setY( dimY.end ); + break; + case CartesianAxis::Left: + end.setX( dimX.start ); + break; + case CartesianAxis::Right: + start.setX( dimX.end ); + break; + } + + transversePosition = geoXy( start.y(), start.x() ); + + QPointF transStart = plane->translate( start ); + QPointF transEnd = plane->translate( end ); + + // an externally set areaGeometry() moves the axis position transversally; the shift is + // nonzero only when this is a shared axis + + const QRect geo = areaGeometry(); + switch ( position() ) { + case CartesianAxis::Bottom: + transverseScreenSpaceShift = geo.top() - transStart.y(); + break; + case CartesianAxis::Top: + transverseScreenSpaceShift = geo.bottom() - transStart.y(); + break; + case CartesianAxis::Left: + transverseScreenSpaceShift = geo.right() - transStart.x(); + break; + case CartesianAxis::Right: + transverseScreenSpaceShift = geo.left() - transStart.x(); + break; + } + + geoXy.lvalue( transStart.ry(), transStart.rx() ) += transverseScreenSpaceShift; + geoXy.lvalue( transEnd.ry(), transEnd.rx() ) += transverseScreenSpaceShift; + + if ( rulerAttributes().showRulerLine() ) { + bool clipSaved = context->painter()->hasClipping(); + painter->setClipping( false ); + painter->drawLine( transStart, transEnd ); + painter->setClipping( clipSaved ); + } + } + + // paint ticks and labels + + TextAttributes labelTA = textAttributes(); + RulerAttributes rulerAttr = rulerAttributes(); + + int labelThinningFactor = 1; + // TODO: label thinning also when grid line distance < 4 pixels, not only when labels collide + TextLayoutItem *tickLabel = new TextLayoutItem( QString(), labelTA, plane->parent(), + KDChartEnums::MeasureOrientationMinimum, Qt::AlignLeft ); + TextLayoutItem *prevTickLabel = new TextLayoutItem( QString(), labelTA, plane->parent(), + KDChartEnums::MeasureOrientationMinimum, Qt::AlignLeft ); + QPointF prevTickLabelPos; + enum { + Layout = 0, + Painting, + Done + }; + for ( int step = labelTA.isVisible() ? Layout : Painting; step < Done; step++ ) { + bool skipFirstTick = !rulerAttr.showFirstTick(); + bool isFirstLabel = true; + for ( TickIterator it( this, plane, labelThinningFactor, centerTicks ); !it.isAtEnd(); ++it ) { + if ( skipFirstTick ) { + skipFirstTick = false; + continue; + } + + const qreal drawPos = it.position() + ( centerTicks ? 0.5 : 0. ); + QPointF onAxis = plane->translate( geoXy( QPointF( drawPos, transversePosition ) , + QPointF( transversePosition, drawPos ) ) ); + geoXy.lvalue( onAxis.ry(), onAxis.rx() ) += transverseScreenSpaceShift; + const bool isOutwardsPositive = position() == Bottom || position() == Right; + + // paint the tick mark + + QPointF tickEnd = onAxis; + qreal tickLen = it.type() == TickIterator::CustomTick ? + d->customTickLength : tickLength( it.type() == TickIterator::MinorTick ); + geoXy.lvalue( tickEnd.ry(), tickEnd.rx() ) += isOutwardsPositive ? tickLen : -tickLen; + + // those adjustments are required to paint the ticks exactly on the axis and of the right length + if ( position() == Top ) { + onAxis.ry() += 1; + tickEnd.ry() += 1; + } else if ( position() == Left ) { + tickEnd.rx() += 1; + } + + if ( step == Painting ) { + painter->save(); + if ( rulerAttr.hasTickMarkPenAt( it.position() ) ) { + painter->setPen( rulerAttr.tickMarkPen( it.position() ) ); + } else { + painter->setPen( it.type() == TickIterator::MinorTick ? rulerAttr.minorTickMarkPen() + : rulerAttr.majorTickMarkPen() ); + } + painter->drawLine( onAxis, tickEnd ); + painter->restore(); + } + + if ( it.text().isEmpty() || !labelTA.isVisible() ) { + // the following code in the loop is only label painting, so skip it + continue; + } + + // paint the label + + QString text = it.text(); + if ( it.type() == TickIterator::MajorTick ) { + // add unit prefixes and suffixes, then customize + text = d->customizedLabelText( text, geoXy( Qt::Horizontal, Qt::Vertical ), it.position() ); + } else if ( it.type() == TickIterator::MajorTickHeaderDataLabel ) { + // unit prefixes and suffixes have already been added in this case - only customize + text = customizedLabel( text ); + } + + tickLabel->setText( text ); + QSizeF size = QSizeF( tickLabel->sizeHint() ); + QPolygon labelPoly = tickLabel->boundingPolygon(); + Q_ASSERT( labelPoly.count() == 4 ); + + // for alignment, find the label polygon edge "most parallel" and closest to the axis + + int axisAngle = 0; + switch ( position() ) { + case Bottom: + axisAngle = 0; break; + case Top: + axisAngle = 180; break; + case Right: + axisAngle = 270; break; + case Left: + axisAngle = 90; break; + default: + Q_ASSERT( false ); + } + // the left axis is not actually pointing down and the top axis not actually pointing + // left, but their corresponding closest edges of a rectangular unrotated label polygon are. + + int relAngle = axisAngle - labelTA.rotation() + 45; + if ( relAngle < 0 ) { + relAngle += 360; + } + int polyCorner1 = relAngle / 90; + QPoint p1 = labelPoly.at( polyCorner1 ); + QPoint p2 = labelPoly.at( polyCorner1 == 3 ? 0 : ( polyCorner1 + 1 ) ); + + QPointF labelPos = tickEnd; + + qreal labelMargin = rulerAttr.labelMargin(); + if ( labelMargin < 0 ) { + labelMargin = QFontMetricsF( tickLabel->realFont() ).height() * 0.5; + } + labelMargin -= tickLabel->marginWidth(); // make up for the margin that's already there + + switch ( position() ) { + case Left: + labelPos += QPointF( -size.width() - labelMargin, + -0.45 * size.height() - 0.5 * ( p1.y() + p2.y() ) ); + break; + case Right: + labelPos += QPointF( labelMargin, + -0.45 * size.height() - 0.5 * ( p1.y() + p2.y() ) ); + break; + case Top: + labelPos += QPointF( -0.45 * size.width() - 0.5 * ( p1.x() + p2.x() ), + -size.height() - labelMargin ); + break; + case Bottom: + labelPos += QPointF( -0.45 * size.width() - 0.5 * ( p1.x() + p2.x() ), + labelMargin ); + break; + } + + tickLabel->setGeometry( QRect( labelPos.toPoint(), size.toSize() ) ); + + if ( step == Painting ) { + tickLabel->paint( painter ); + } + + // collision check the current label against the previous one + + // like in the old code, we don't shorten or decimate labels if they are already the + // manual short type, or if they are the manual long type and on the vertical axis + // ### they can still collide though, especially when they're rotated! + if ( step == Layout ) { + int spaceSavingRotation = geoXy( 270, 0 ); + bool canRotate = labelTA.autoRotate() && labelTA.rotation() != spaceSavingRotation; + const bool canShortenLabels = !geoXy.isY && it.type() == TickIterator::MajorTickManualLong && + it.hasShorterLabels(); + bool collides = false; + if ( it.type() == TickIterator::MajorTick || it.type() == TickIterator::MajorTickHeaderDataLabel + || canShortenLabels || canRotate ) { + if ( isFirstLabel ) { + isFirstLabel = false; + } else { + collides = tickLabel->intersects( *prevTickLabel, labelPos, prevTickLabelPos ); + qSwap( prevTickLabel, tickLabel ); + } + prevTickLabelPos = labelPos; + } + if ( collides ) { + // to make room, we try in order: shorten, rotate, decimate + if ( canRotate && !canShortenLabels ) { + labelTA.setRotation( spaceSavingRotation ); + // tickLabel will be reused in the next round + tickLabel->setTextAttributes( labelTA ); + } else { + labelThinningFactor++; + } + step--; // relayout + break; + } + } + } + } + delete tickLabel; + tickLabel = 0; + delete prevTickLabel; + prevTickLabel = 0; + + if ( ! titleText().isEmpty() ) { + d->drawTitleText( painter, plane, d->axis()->geometry() ); + } +} + +/* pure virtual in QLayoutItem */ +bool CartesianAxis::isEmpty() const +{ + return false; // if the axis exists, it has some (perhaps default) content +} + +/* pure virtual in QLayoutItem */ +Qt::Orientations CartesianAxis::expandingDirections() const +{ + Qt::Orientations ret; + switch ( position() ) { + case Bottom: + case Top: + ret = Qt::Horizontal; + break; + case Left: + case Right: + ret = Qt::Vertical; + break; + default: + Q_ASSERT( false ); + break; + }; + return ret; +} + +void CartesianAxis::setCachedSizeDirty() const +{ + d->cachedMaximumSize = QSize(); +} + +/* pure virtual in QLayoutItem */ +QSize CartesianAxis::maximumSize() const +{ + if ( ! d->cachedMaximumSize.isValid() ) + d->cachedMaximumSize = d->calculateMaximumSize(); + return d->cachedMaximumSize; +} + +QSize CartesianAxis::Private::calculateMaximumSize() const +{ + if ( !diagram() ) { + return QSize(); + } + + CartesianCoordinatePlane* plane = dynamic_cast< CartesianCoordinatePlane* >( diagram()->coordinatePlane() ); + Q_ASSERT( plane ); + QObject* refArea = plane->parent(); + const bool centerTicks = referenceDiagramNeedsCenteredAbscissaTicks( diagram() ) + && axis()->isAbscissa(); + + // we ignore: + // - label thinning (expensive, not worst case and we want worst case) + // - label autorotation (expensive, obscure feature(?)) + // - axis length (it is determined by the plane / diagram / chart anyway) + // - the title's influence on axis length; this one might be TODO. See KDCH-863. + + XySwitch geoXy( isVertical() ); + qreal size = 0; // this is the size transverse to the axis direction + + // the following variables describe how much the first and last label stick out over the axis + // area, so that the geometry of surrounding layout items can be adjusted to make room. + qreal startOverhang = 0.0; + qreal endOverhang = 0.0; + + if ( mAxis->textAttributes().isVisible() ) { + // these four are used just to calculate startOverhang and endOverhang + qreal lowestLabelPosition = signalingNaN; + qreal highestLabelPosition = signalingNaN; + qreal lowestLabelLongitudinalSize = signalingNaN; + qreal highestLabelLongitudinalSize = signalingNaN; + + TextLayoutItem tickLabel( QString(), mAxis->textAttributes(), refArea, + KDChartEnums::MeasureOrientationMinimum, Qt::AlignLeft ); + const RulerAttributes rulerAttr = mAxis->rulerAttributes(); + + bool showFirstTick = rulerAttr.showFirstTick(); + for ( TickIterator it( axis(), plane, 1, centerTicks ); !it.isAtEnd(); ++it ) { + const qreal drawPos = it.position() + ( centerTicks ? 0.5 : 0. ); + if ( !showFirstTick ) { + showFirstTick = true; + continue; + } + + qreal labelSizeTransverse = 0.0; + qreal labelMargin = 0.0; + QString text = it.text(); + if ( !text.isEmpty() ) { + QPointF labelPosition = plane->translate( QPointF( geoXy( drawPos, 1.0 ), + geoXy( 1.0, drawPos ) ) ); + highestLabelPosition = geoXy( labelPosition.x(), labelPosition.y() ); + + if ( it.type() == TickIterator::MajorTick ) { + // add unit prefixes and suffixes, then customize + text = customizedLabelText( text, geoXy( Qt::Horizontal, Qt::Vertical ), it.position() ); + } else if ( it.type() == TickIterator::MajorTickHeaderDataLabel ) { + // unit prefixes and suffixes have already been added in this case - only customize + text = axis()->customizedLabel( text ); + } + tickLabel.setText( text ); + + QSize sz = tickLabel.sizeHint(); + highestLabelLongitudinalSize = geoXy( sz.width(), sz.height() ); + if ( ISNAN( lowestLabelLongitudinalSize ) ) { + lowestLabelLongitudinalSize = highestLabelLongitudinalSize; + lowestLabelPosition = highestLabelPosition; + } + + labelSizeTransverse = geoXy( sz.height(), sz.width() ); + labelMargin = rulerAttr.labelMargin(); + if ( labelMargin < 0 ) { + labelMargin = QFontMetricsF( tickLabel.realFont() ).height() * 0.5; + } + labelMargin -= tickLabel.marginWidth(); // make up for the margin that's already there + } + qreal tickLength = it.type() == TickIterator::CustomTick ? + customTickLength : axis()->tickLength( it.type() == TickIterator::MinorTick ); + size = qMax( size, tickLength + labelMargin + labelSizeTransverse ); + } + + const DataDimension dimX = plane->gridDimensionsList().first(); + const DataDimension dimY = plane->gridDimensionsList().last(); + + QPointF pt = plane->translate( QPointF( dimX.start, dimY.start ) ); + const qreal lowestPosition = geoXy( pt.x(), pt.y() ); + pt = plane->translate( QPointF( dimX.end, dimY.end ) ); + const qreal highestPosition = geoXy( pt.x(), pt.y() ); + + // the geoXy( 1.0, -1.0 ) here is necessary because Qt's y coordinate is inverted + startOverhang = qMax( 0.0, ( lowestPosition - lowestLabelPosition ) * geoXy( 1.0, -1.0 ) + + lowestLabelLongitudinalSize * 0.5 ); + endOverhang = qMax( 0.0, ( highestLabelPosition - highestPosition ) * geoXy( 1.0, -1.0 ) + + highestLabelLongitudinalSize * 0.5 ); + } + + amountOfLeftOverlap = geoXy( startOverhang, 0.0 ); + amountOfRightOverlap = geoXy( endOverhang, 0.0 ); + amountOfBottomOverlap = geoXy( 0.0, startOverhang ); + amountOfTopOverlap = geoXy( 0.0, endOverhang ); + + const TextAttributes titleTA = titleTextAttributesWithAdjustedRotation(); + if ( titleTA.isVisible() && !axis()->titleText().isEmpty() ) { + TextLayoutItem title( axis()->titleText(), titleTA, refArea, KDChartEnums::MeasureOrientationMinimum, + Qt::AlignHCenter | Qt::AlignVCenter ); + + QFontMetricsF titleFM( title.realFont(), GlobalMeasureScaling::paintDevice() ); + size += geoXy( titleFM.height() * 0.33, titleFM.averageCharWidth() * 0.55 ); // spacing + size += geoXy( title.sizeHint().height(), title.sizeHint().width() ); + } + + // the size parallel to the axis direction is not determined by us, so we just return 1 + return QSize( geoXy( 1, int( size ) ), geoXy( int ( size ), 1 ) ); +} + +/* pure virtual in QLayoutItem */ +QSize CartesianAxis::minimumSize() const +{ + return maximumSize(); +} + +/* pure virtual in QLayoutItem */ +QSize CartesianAxis::sizeHint() const +{ + return maximumSize(); +} + +/* pure virtual in QLayoutItem */ +void CartesianAxis::setGeometry( const QRect& r ) +{ + if ( d->geometry != r ) { + d->geometry = r; + setCachedSizeDirty(); + } +} + +/* pure virtual in QLayoutItem */ +QRect CartesianAxis::geometry() const +{ + return d->geometry; +} + +void CartesianAxis::setCustomTickLength( int value ) +{ + d->customTickLength = value; +} + +int CartesianAxis::customTickLength() const +{ + return d->customTickLength; +} + +int CartesianAxis::tickLength( bool subUnitTicks ) const +{ + const RulerAttributes& rulerAttr = rulerAttributes(); + return subUnitTicks ? rulerAttr.minorTickMarkLength() : rulerAttr.majorTickMarkLength(); +} + +QMap< qreal, QString > CartesianAxis::annotations() const +{ + return d->annotations; +} + +void CartesianAxis::setAnnotations( const QMap< qreal, QString >& annotations ) +{ + if ( d->annotations == annotations ) + return; + + d->annotations = annotations; + update(); +} + +QList< qreal > CartesianAxis::customTicks() const +{ + return d->customTicksPositions; +} + +void CartesianAxis::setCustomTicks( const QList< qreal >& customTicksPositions ) +{ + if ( d->customTicksPositions == customTicksPositions ) + return; + + d->customTicksPositions = customTicksPositions; + update(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.h new file mode 100644 index 00000000..7d4b4bf1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis.h @@ -0,0 +1,189 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANAXIS_H +#define KDCHARTCARTESIANAXIS_H + +#include + +#include "KDChartAbstractAxis.h" + +namespace KDChart { + + class AbstractCartesianDiagram; + + /** + * The class for cartesian axes. + * + * For being useful, axes need to be assigned to a diagram, see + * AbstractCartesianDiagram::addAxis and AbstractCartesianDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT CartesianAxis : public AbstractAxis + { + Q_OBJECT + + Q_DISABLE_COPY( CartesianAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( CartesianAxis, AbstractDiagram* ) + + public: + enum Position { + Bottom, + Top, + Right, + Left + }; + + /** + * C'tor of the class for cartesian axes. + * + * \note If you pass a null parent to the constructor, you need to call + * your diagram's addAxis function to add your axis to the diagram. + * Otherwise there is no need to call addAxis, since the constructor + * does it already. + * + * \sa AbstractCartesianDiagram::addAxis + */ + explicit CartesianAxis ( AbstractCartesianDiagram* diagram = 0 ); + ~CartesianAxis(); + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const CartesianAxis* other ) const; + + /** reimpl */ + virtual void paint( QPainter* ); + /** reimpl */ + virtual void paintCtx( PaintContext* ); + + /** + * Sets the optional text displayed as chart title. + */ + void setTitleText( const QString& text ); + QString titleText() const; + + /** + * \deprecated + * Sets the spacing between the title and the diagram. + * Be aware that setting this value can lead to + * collisions between axis labels and the title + */ + void setTitleSpace( qreal value ); + /// \deprecated + qreal titleSpace() const; + + /// \deprecated \brief use setTitleTextAttributes() instead + void setTitleSize(qreal value); + /// \deprecated + qreal titleSize() const; + + void setTitleTextAttributes( const TextAttributes &a ); + /** + * Returns the text attributes that will be used for displaying the + * title text. + * This is either the text attributes as specified by setTitleTextAttributes, + * or (if setTitleTextAttributes() was not called) the default text attributes. + * \sa resetTitleTextAttributes, hasDefaultTitleTextAttributes + */ + TextAttributes titleTextAttributes() const; + /** + * Reset the title text attributes to the built-in default: + * + * Same font and pen as AbstractAxis::textAttributes() + * and 1.5 times their size. + */ + void resetTitleTextAttributes(); + bool hasDefaultTitleTextAttributes() const; + + virtual void setPosition ( Position p ); +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const Position position () const; +#else + virtual Position position () const; +#endif + + virtual void layoutPlanes(); + + virtual bool isAbscissa() const; + virtual bool isOrdinate() const; + + /** + * Sets the axis annotations to \a annotations. + * Annotations are a QMap of qreals and QStrings defining special + * markers and their position. + * If you use annotations, the normal ticks and values will be invisible. + * To unset the annotations, pass an empty QMap. + */ + void setAnnotations( const QMap< qreal, QString >& annotations ); + /** + * Returns the currently set axis annotations. + */ + QMap< qreal, QString > annotations() const; + + /** + * Sets custom ticks on the axis. + * Ticks are a QList of qreals defining their special position. + */ + void setCustomTicks( const QList< qreal >& ticksPostions ); + /** + * Returns the currently set custom ticks on the axis. + */ + QList< qreal > customTicks() const; + + /** + * Sets the length of custom ticks on the axis. + */ + void setCustomTickLength(int value); + /** + * Returns the length of custom ticks on the axis. + */ + int customTickLength() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + public Q_SLOTS: + void setCachedSizeDirty() const; + + virtual int tickLength( bool subUnitTicks = false ) const; + private Q_SLOTS: + void coordinateSystemChanged(); + }; + + typedef QList CartesianAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis_p.h new file mode 100644 index 00000000..95b2810d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianAxis_p.h @@ -0,0 +1,183 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANAXIS_P_H +#define KDCHARTCARTESIANAXIS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartCartesianAxis.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartAbstractAxis_p.h" + +#include + +#include + +namespace KDChart { + +/** + * \internal + */ +class CartesianAxis::Private : public AbstractAxis::Private +{ + friend class CartesianAxis; + +public: + Private( AbstractCartesianDiagram* diagram, CartesianAxis* axis ) + : AbstractAxis::Private( diagram, axis ) + , useDefaultTextAttributes( true ) + , cachedHeaderLabels( QStringList() ) + , cachedLabelHeight( 0.0 ) + , cachedFontHeight( 0 ) + , axisTitleSpace( 1.0 ) + {} + ~Private() {} + + static const Private *get( const CartesianAxis *axis ) { return axis->d_func(); }; + + CartesianAxis* axis() const { return static_cast( mAxis ); } + void drawTitleText( QPainter*, CartesianCoordinatePlane* plane, const QRect& areaGeoRect ) const; + const TextAttributes titleTextAttributesWithAdjustedRotation() const; + QSize calculateMaximumSize() const; + QString customizedLabelText( const QString& text, Qt::Orientation orientation, qreal value ) const; + bool isVertical() const; + + QMap< qreal, QString > annotations; + +private: + friend class TickIterator; + QString titleText; + TextAttributes titleTextAttributes; + bool useDefaultTextAttributes; + Position position; + QRect geometry; + int customTickLength; + QList< qreal > customTicksPositions; + mutable QStringList cachedHeaderLabels; + mutable qreal cachedLabelHeight; + mutable qreal cachedLabelWidth; + mutable int cachedFontHeight; + mutable int cachedFontWidth; + mutable QSize cachedMaximumSize; + qreal axisTitleSpace; +}; + +inline CartesianAxis::CartesianAxis( Private * p, AbstractDiagram* diagram ) + : AbstractAxis( p, diagram ) +{ + init(); +} + +inline CartesianAxis::Private * CartesianAxis::d_func() +{ return static_cast( AbstractAxis::d_func() ); } +inline const CartesianAxis::Private * CartesianAxis::d_func() const +{ return static_cast( AbstractAxis::d_func() ); } + + +class XySwitch +{ +public: + explicit XySwitch( bool _isY ) : isY( _isY ) {} + + // for rvalues + template< class T > + T operator()( T x, T y ) const { return isY ? y : x; } + + // lvalues + template< class T > + T& lvalue( T& x, T& y ) const { return isY ? y : x; } + + bool isY; +}; + +class TickIterator +{ +public: + enum TickType { + NoTick = 0, + MajorTick, + MajorTickHeaderDataLabel, + MajorTickManualShort, + MajorTickManualLong, + MinorTick, + CustomTick + }; + // this constructor is for use in CartesianAxis + TickIterator( CartesianAxis *a, CartesianCoordinatePlane* plane, uint majorThinningFactor, + bool omitLastTick /* sorry about that */ ); + // this constructor is for use in CartesianGrid + TickIterator( bool isY, const DataDimension& dimension, bool useAnnotationsForTicks, + bool hasMajorTicks, bool hasMinorTicks, CartesianCoordinatePlane* plane ); + + qreal position() const { return m_position; } + QString text() const { return m_text; } + TickType type() const { return m_type; } + bool hasShorterLabels() const { return m_axis && !m_axis->labels().isEmpty() && + m_axis->shortLabels().count() == m_axis->labels().count(); } + bool isAtEnd() const { return m_position == std::numeric_limits< qreal >::infinity(); } + void operator++(); + + bool areAlmostEqual( qreal r1, qreal r2 ) const; + +private: + // code shared by the two constructors + void init( bool isY, bool hasMajorTicks, bool hasMinorTicks, CartesianCoordinatePlane* plane ); + + bool isHigherPrecedence( qreal importantLabelValue, qreal unimportantLabelValue ) const; + void computeMajorTickLabel( int decimalPlaces ); + + // these are generally set once in the constructor + CartesianAxis* m_axis; + DataDimension m_dimension; // upper and lower bounds + int m_decimalPlaces; // for numeric labels + bool m_isLogarithmic; + QMap< qreal, QString > m_annotations; + QMap< qreal, QString > m_dataHeaderLabels; + QList< qreal > m_customTicks; + QStringList m_manualLabelTexts; + uint m_majorThinningFactor; + uint m_majorLabelCount; + + // these generally change in operator++(), i.e. from one label to the next + int m_customTickIndex; + int m_manualLabelIndex; + TickType m_type; + qreal m_position; + qreal m_customTick; + qreal m_majorTick; + qreal m_minorTick; + QString m_text; +}; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.cpp new file mode 100644 index 00000000..9d2271c2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.cpp @@ -0,0 +1,925 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartCartesianCoordinatePlane_p.h" + +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractDiagram_p.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "CartesianCoordinateTransformation.h" +#include "KDChartGridAttributes.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartBarDiagram.h" +#include "KDChartStockDiagram.h" + +#include + +#include +#include +#include +#include +#include +#include + + +using namespace KDChart; + +#define d d_func() + +CartesianCoordinatePlane::Private::Private() + : AbstractCoordinatePlane::Private() + , bPaintIsRunning( false ) + , hasOwnGridAttributesHorizontal( false ) + , hasOwnGridAttributesVertical( false ) + , isometricScaling( false ) + , horizontalMin( 0 ) + , horizontalMax( 0 ) + , verticalMin( 0 ) + , verticalMax( 0 ) + , autoAdjustHorizontalRangeToData( 67 ) + , autoAdjustVerticalRangeToData( 67 ) + , autoAdjustGridToZoom( true ) + , fixedDataCoordinateSpaceRelation( false ) + , xAxisStartAtZero( true ) + , reverseVerticalPlane( false ) + , reverseHorizontalPlane( false ) +{ +} + +CartesianCoordinatePlane::CartesianCoordinatePlane( Chart* parent ) + : AbstractCoordinatePlane( new Private(), parent ) +{ + // this bloc left empty intentionally +} + +CartesianCoordinatePlane::~CartesianCoordinatePlane() +{ + // this bloc left empty intentionally +} + +void CartesianCoordinatePlane::init() +{ + // this bloc left empty intentionally +} + + +void CartesianCoordinatePlane::addDiagram( AbstractDiagram* diagram ) +{ + Q_ASSERT_X( dynamic_cast( diagram ), + "CartesianCoordinatePlane::addDiagram", "Only cartesian " + "diagrams can be added to a cartesian coordinate plane!" ); + AbstractCoordinatePlane::addDiagram( diagram ); + connect( diagram, SIGNAL( layoutChanged ( AbstractDiagram* ) ), + SLOT( slotLayoutChanged( AbstractDiagram* ) ) ); + + connect( diagram, SIGNAL( propertiesChanged() ), this, SIGNAL( propertiesChanged() ) ); +} + + +void CartesianCoordinatePlane::paint( QPainter* painter ) +{ + // prevent recursive call: + if ( d->bPaintIsRunning ) { + return; + } + d->bPaintIsRunning = true; + + AbstractDiagramList diags = diagrams(); + if ( !diags.isEmpty() ) + { + PaintContext ctx; + ctx.setPainter ( painter ); + ctx.setCoordinatePlane ( this ); + const QRectF drawArea( drawingArea() ); + ctx.setRectangle ( drawArea ); + + // enabling clipping so that we're not drawing outside + PainterSaver painterSaver( painter ); + QRect clipRect = drawArea.toRect().adjusted( -1, -1, 1, 1 ); + QRegion clipRegion( clipRect ); + painter->setClipRegion( clipRegion ); + + // paint the coordinate system rulers: + d->grid->drawGrid( &ctx ); + + // paint the diagrams: + for ( int i = 0; i < diags.size(); i++ ) + { + if ( diags[i]->isHidden() ) { + continue; + } + bool doDumpPaintTime = AbstractDiagram::Private::get( diags[ i ] )->doDumpPaintTime; + QTime stopWatch; + if ( doDumpPaintTime ) { + stopWatch.start(); + } + + PainterSaver diagramPainterSaver( painter ); + diags[i]->paint( &ctx ); + + if ( doDumpPaintTime ) { + qDebug() << "Painting diagram" << i << "took" << stopWatch.elapsed() << "milliseconds"; + } + } + + } + d->bPaintIsRunning = false; +} + + +void CartesianCoordinatePlane::slotLayoutChanged( AbstractDiagram* ) +{ + layoutDiagrams(); +} + +QRectF CartesianCoordinatePlane::getRawDataBoundingRectFromDiagrams() const +{ + // determine unit of the rectangles of all involved diagrams: + qreal minX = 0; + qreal maxX = 0; + qreal minY = 0; + qreal maxY = 0; + bool bStarting = true; + Q_FOREACH( const AbstractDiagram* diagram, diagrams() ) + { + QPair dataBoundariesPair = diagram->dataBoundaries(); + //qDebug() << "CartesianCoordinatePlane::getRawDataBoundingRectFromDiagrams()\ngets diagram->dataBoundaries: " << dataBoundariesPair.first << dataBoundariesPair.second; + if ( bStarting || dataBoundariesPair.first.x() < minX ) minX = dataBoundariesPair.first.x(); + if ( bStarting || dataBoundariesPair.first.y() < minY ) minY = dataBoundariesPair.first.y(); + if ( bStarting || dataBoundariesPair.second.x() > maxX ) maxX = dataBoundariesPair.second.x(); + if ( bStarting || dataBoundariesPair.second.y() > maxY ) maxY = dataBoundariesPair.second.y(); + bStarting = false; + } + //qDebug() << "CartesianCoordinatePlane::getRawDataBoundingRectFromDiagrams()\nreturns data boundaries: " << QRectF( QPointF(minX, minY), QSizeF(maxX - minX, maxY - minY) ); + QRectF dataBoundingRect; + dataBoundingRect.setBottomLeft( QPointF( minX, minY ) ); + dataBoundingRect.setTopRight( QPointF( maxX, maxY ) ); + return dataBoundingRect; +} + + +QRectF CartesianCoordinatePlane::adjustedToMaxEmptyInnerPercentage( + const QRectF& r, unsigned int percentX, unsigned int percentY ) const +{ + QRectF ret = r; + if ( ( axesCalcModeX() != Logarithmic || r.left() < 0.0 ) && percentX > 0 && percentX != 100 ) { + const bool isPositive = r.left() >= 0; + if ( ( r.right() >= 0 ) == isPositive ) { + qreal upperBound = qMax( r.left(), r.right() ); + qreal lowerBound = qMin( r.left(), r.right() ); + qreal innerBound = isPositive ? lowerBound : upperBound; + qreal outerBound = isPositive ? upperBound : lowerBound; + if ( innerBound / outerBound * 100 <= percentX && d->xAxisStartAtZero ) { + if ( isPositive ) { + ret.setLeft( 0.0 ); + } else { + ret.setRight( 0.0 ); + } + } + } + } + // ### this doesn't seem to take into account that Qt's y coordinate is inverted + if ( ( axesCalcModeY() != Logarithmic || r.bottom() < 0.0 ) && percentY > 0 && percentY != 100 ) { + const bool isPositive = r.bottom() >= 0; + if ( ( r.top() >= 0 ) == isPositive ) { + qreal upperBound = qMax( r.top(), r.bottom() ); + qreal lowerBound = qMin( r.top(), r.bottom() ); + const qreal innerBound = isPositive ? lowerBound : upperBound; + const qreal outerBound = isPositive ? upperBound : lowerBound; + if ( innerBound / outerBound * 100 <= percentY ) { + if ( isPositive ) { + ret.setBottom( 0.0 ); + } else { + ret.setTop( 0.0 ); + } + } + } + } + return ret; +} + + +QRectF CartesianCoordinatePlane::calculateRawDataBoundingRect() const +{ + // are manually set ranges to be applied? + const bool bAutoAdjustHorizontalRange = d->autoAdjustHorizontalRangeToData < 100; + const bool bAutoAdjustVerticalRange = d->autoAdjustVerticalRangeToData < 100; + + const bool bHardHorizontalRange = (!bAutoAdjustHorizontalRange) && (d->horizontalMin != d->horizontalMax || (ISNAN(d->horizontalMin) != ISNAN(d->horizontalMax))); + const bool bHardVerticalRange = (!bAutoAdjustVerticalRange) && (d->verticalMin != d->verticalMax || (ISNAN(d->verticalMin) != ISNAN(d->verticalMax))); + QRectF dataBoundingRect; + + // if custom boundaries are set on the plane, use them + if ( bHardHorizontalRange && bHardVerticalRange ) { + dataBoundingRect.setLeft( d->horizontalMin ); + dataBoundingRect.setRight( d->horizontalMax ); + dataBoundingRect.setBottom( d->verticalMin ); + dataBoundingRect.setTop( d->verticalMax ); + } else { + // determine unit of the rectangles of all involved diagrams: + dataBoundingRect = getRawDataBoundingRectFromDiagrams(); + if ( bHardHorizontalRange ) { + if (!ISNAN(d->horizontalMin)) + dataBoundingRect.setLeft( d->horizontalMin ); + if (!ISNAN(d->horizontalMax)) + dataBoundingRect.setRight( d->horizontalMax ); + } + if ( bHardVerticalRange ) { + if (!ISNAN(d->verticalMin)) + dataBoundingRect.setBottom( d->verticalMin ); + if (!ISNAN(d->verticalMax)) + dataBoundingRect.setTop( d->verticalMax ); + } + } + // recalculate the bounds, if automatic adjusting of ranges is desired AND + // both bounds are at the same side of the zero line + dataBoundingRect = adjustedToMaxEmptyInnerPercentage( + dataBoundingRect, d->autoAdjustHorizontalRangeToData, d->autoAdjustVerticalRangeToData ); + if ( bAutoAdjustHorizontalRange ) { + const_cast( this )->d->horizontalMin = dataBoundingRect.left(); + const_cast( this )->d->horizontalMax = dataBoundingRect.right(); + } + if ( bAutoAdjustVerticalRange ) { + const_cast( this )->d->verticalMin = dataBoundingRect.bottom(); + const_cast( this )->d->verticalMax = dataBoundingRect.top(); + } + // qDebug() << Q_FUNC_INFO << dataBoundingRect; + return dataBoundingRect; +} + + +DataDimensionsList CartesianCoordinatePlane::getDataDimensionsList() const +{ + const AbstractCartesianDiagram* dgr = diagrams().isEmpty() ? 0 : + qobject_cast< const AbstractCartesianDiagram* >( diagrams().first() ); + if ( dgr && dgr->referenceDiagram() ) { + dgr = dgr->referenceDiagram(); + } + const BarDiagram *barDiagram = qobject_cast< const BarDiagram* >( dgr ); + const StockDiagram *stockDiagram = qobject_cast< const StockDiagram* >( dgr ); + + // note: + // It does make sense to retrieve the orientation from the first diagram. This is because + // a coordinate plane can either be for horizontal *or* for vertical diagrams. Both at the + // same time won't work, and thus the orientation for all diagrams is the same as for the first one. + const Qt::Orientation diagramOrientation = barDiagram != 0 ? barDiagram->orientation() : Qt::Vertical; + const bool diagramIsVertical = diagramOrientation == Qt::Vertical; + + DataDimensionsList l; + if ( dgr ) { + const QRectF r( calculateRawDataBoundingRect() ); + // We do not access d->gridAttributesHorizontal/Vertical here, but we use the getter function, + // to get the global attrs, if no special ones have been set for the given orientation. + const GridAttributes gaH( gridAttributes( Qt::Horizontal ) ); + const GridAttributes gaV( gridAttributes( Qt::Vertical ) ); + // append the first dimension: for Abscissa axes + l.append( + DataDimension( + r.left(), r.right(), + diagramIsVertical ? ( !stockDiagram && dgr->datasetDimension() > 1 ) : true, + axesCalcModeX(), + gaH.gridGranularitySequence(), + gaH.gridStepWidth(), + gaH.gridSubStepWidth() ) ); + // append the second dimension: for Ordinate axes + l.append( + DataDimension( + r.bottom(), r.top(), + diagramIsVertical ? true : ( dgr->datasetDimension() > 1 ), + axesCalcModeY(), + gaV.gridGranularitySequence(), + gaV.gridStepWidth(), + gaV.gridSubStepWidth() ) ); + } else { + l.append( DataDimension() ); // This gets us the default 1..0 / 1..0 grid + l.append( DataDimension() ); // shown, if there is no diagram on this plane. + } + return l; +} + +QRectF CartesianCoordinatePlane::drawingArea() const +{ + // the rectangle the diagrams cover in the *plane*: + // We reserve 1px on each side for antialiased drawing, and respect the way QPainter calculates + // the width of a painted rect (the size is the rectangle size plus the pen width). The latter + // accounts for another pixel that we subtract from height and width. + // This way, most clipping for regular pens should be avoided. When pens with a width larger + // than 1 are used, this may not be sufficient. + return QRectF( areaGeometry() ).adjusted( 1.0, 1.0, -2.0, -2.0 ); +} + + +QRectF CartesianCoordinatePlane::logicalArea() const +{ + if ( d->dimensions.isEmpty() ) + return QRectF(); + + const DataDimension dimX = d->dimensions.first(); + const DataDimension dimY = d->dimensions.last(); + const QPointF pt( qMin( dimX.start, dimX.end ), qMax( dimY.start, dimY.end ) ); + const QSizeF siz( qAbs( dimX.distance() ), -qAbs( dimY.distance() ) ); + const QRectF dataBoundingRect( pt, siz ); + + // determine logical top left, taking the "reverse" options into account + const QPointF topLeft( d->reverseHorizontalPlane ? dataBoundingRect.right() : dataBoundingRect.left(), + d->reverseVerticalPlane ? dataBoundingRect.bottom() : dataBoundingRect.top() ); + + const qreal width = dataBoundingRect.width() * ( d->reverseHorizontalPlane ? -1.0 : 1.0 ); + const qreal height = dataBoundingRect.height() * ( d->reverseVerticalPlane ? -1.0 : 1.0 ); + + return QRectF( topLeft, QSizeF( width, height ) ); +} + +QRectF CartesianCoordinatePlane::diagramArea() const +{ + const QRectF logArea( logicalArea() ); + QPointF physicalTopLeft = d->coordinateTransformation.translate( logArea.topLeft() ); + QPointF physicalBottomRight = d->coordinateTransformation.translate( logArea.bottomRight() ); + + return QRectF( physicalTopLeft, physicalBottomRight ).normalized(); +} + +QRectF CartesianCoordinatePlane::visibleDiagramArea() const +{ + return diagramArea().intersected( drawingArea() ); +} + +void CartesianCoordinatePlane::layoutDiagrams() +{ + d->dimensions = gridDimensionsList(); + Q_ASSERT_X ( d->dimensions.count() == 2, "CartesianCoordinatePlane::layoutDiagrams", + "Error: gridDimensionsList() did not return exactly two dimensions." ); + + // physical area of the plane + const QRectF physicalArea( drawingArea() ); + // .. in contrast to the logical area + const QRectF logArea( logicalArea() ); + + // TODO: isometric scaling for zooming? + + // the plane area might have changed, so the zoom values might also be changed + handleFixedDataCoordinateSpaceRelation( physicalArea ); + + d->coordinateTransformation.updateTransform( logArea, physicalArea ); + + update(); +} + +void CartesianCoordinatePlane::setFixedDataCoordinateSpaceRelation( bool fixed ) +{ + d->fixedDataCoordinateSpaceRelation = fixed; + d->fixedDataCoordinateSpaceRelationPinnedSize = QSize(); + handleFixedDataCoordinateSpaceRelation( drawingArea() ); +} + +bool CartesianCoordinatePlane::hasFixedDataCoordinateSpaceRelation() const +{ + return d->fixedDataCoordinateSpaceRelation; +} + +void CartesianCoordinatePlane::setXAxisStartAtZero(bool fixedStart) +{ + if (d->xAxisStartAtZero == fixedStart) + return; + + d->xAxisStartAtZero = fixedStart; +} + +bool CartesianCoordinatePlane::xAxisStartAtZero() const +{ + return d->xAxisStartAtZero; +} + +void CartesianCoordinatePlane::handleFixedDataCoordinateSpaceRelation( const QRectF& geometry ) +{ + if ( !d->fixedDataCoordinateSpaceRelation ) { + return; + } + // is the new geometry ok? + if ( !geometry.isValid() ) { + return; + } + + // note that the pinned size can be invalid even after setting it, if geometry wasn't valid. + // this is relevant for the cooperation between this method, setFixedDataCoordinateSpaceRelation(), + // and handleFixedDataCoordinateSpaceRelation(). + if ( !d->fixedDataCoordinateSpaceRelationPinnedSize.isValid() ) { + d->fixedDataCoordinateSpaceRelationPinnedSize = geometry.size(); + d->fixedDataCoordinateSpaceRelationPinnedZoom = ZoomParameters( zoomFactorX(), zoomFactorY(), zoomCenter() ); + return; + } + + // if the plane size was changed, change zoom factors to keep the diagram size constant + if ( d->fixedDataCoordinateSpaceRelationPinnedSize != geometry.size() ) { + const qreal widthScaling = d->fixedDataCoordinateSpaceRelationPinnedSize.width() / geometry.width(); + const qreal heightScaling = d->fixedDataCoordinateSpaceRelationPinnedSize.height() / geometry.height(); + + const qreal newZoomX = d->fixedDataCoordinateSpaceRelationPinnedZoom.xFactor * widthScaling; + const qreal newZoomY = d->fixedDataCoordinateSpaceRelationPinnedZoom.yFactor * heightScaling; + + const QPointF newCenter = QPointF( d->fixedDataCoordinateSpaceRelationPinnedZoom.xCenter / widthScaling, + d->fixedDataCoordinateSpaceRelationPinnedZoom.yCenter / heightScaling ); + // Use these internal methods to avoid sending the propertiesChanged signal more than once + bool changed = false; + if ( doneSetZoomFactorY( newZoomY ) ) + changed = true; + if ( doneSetZoomFactorX( newZoomX ) ) + changed = true; + if ( doneSetZoomCenter( newCenter ) ) + changed = true; + if ( changed ) + emit propertiesChanged(); + } +} + +const QPointF CartesianCoordinatePlane::translate( const QPointF& diagramPoint ) const +{ + // Note: We do not test if the point lays inside of the data area, + // but we just apply the transformation calculations to the point. + // This allows for basic calculations done by the user, see e.g. + // the file examples/Lines/BubbleChart/mainwindow.cpp + return d->coordinateTransformation.translate( diagramPoint ); +} + +const QPointF CartesianCoordinatePlane::translateBack( const QPointF& screenPoint ) const +{ + return d->coordinateTransformation.translateBack( screenPoint ); +} + +void CartesianCoordinatePlane::setIsometricScaling( bool isOn ) +{ + if ( d->isometricScaling != isOn ) { + d->isometricScaling = isOn; + layoutDiagrams(); + emit propertiesChanged(); + } +} + +bool CartesianCoordinatePlane::doesIsometricScaling() const +{ + return d->isometricScaling; +} + +bool CartesianCoordinatePlane::doneSetZoomFactorX( qreal factor ) +{ + if ( d->coordinateTransformation.zoom.xFactor == factor ) { + return false; + } + d->coordinateTransformation.zoom.xFactor = factor; + if ( d->autoAdjustGridToZoom ) { + d->grid->setNeedRecalculate(); + } + return true; +} + +bool CartesianCoordinatePlane::doneSetZoomFactorY( qreal factor ) +{ + if ( d->coordinateTransformation.zoom.yFactor == factor ) { + return false; + } + d->coordinateTransformation.zoom.yFactor = factor; + if ( d->autoAdjustGridToZoom ) { + d->grid->setNeedRecalculate(); + } + return true; +} + +bool CartesianCoordinatePlane::doneSetZoomCenter( const QPointF& point ) +{ + if ( d->coordinateTransformation.zoom.center() == point ) { + return false; + } + d->coordinateTransformation.zoom.setCenter( point ); + if ( d->autoAdjustGridToZoom ) { + d->grid->setNeedRecalculate(); + } + return true; +} + +void CartesianCoordinatePlane::setZoomFactors( qreal factorX, qreal factorY ) +{ + if ( doneSetZoomFactorX( factorX ) || doneSetZoomFactorY( factorY ) ) { + d->coordinateTransformation.updateTransform( logicalArea(), drawingArea() ); + emit propertiesChanged(); + } +} + +void CartesianCoordinatePlane::setZoomFactorX( qreal factor ) +{ + if ( doneSetZoomFactorX( factor ) ) { + d->coordinateTransformation.updateTransform( logicalArea(), drawingArea() ); + emit propertiesChanged(); + } +} + +void CartesianCoordinatePlane::setZoomFactorY( qreal factor ) +{ + if ( doneSetZoomFactorY( factor ) ) { + d->coordinateTransformation.updateTransform( logicalArea(), drawingArea() ); + emit propertiesChanged(); + } +} + +void CartesianCoordinatePlane::setZoomCenter( const QPointF& point ) +{ + if ( doneSetZoomCenter( point ) ) { + d->coordinateTransformation.updateTransform( logicalArea(), drawingArea() ); + emit propertiesChanged(); + } +} + +QPointF CartesianCoordinatePlane::zoomCenter() const +{ + return d->coordinateTransformation.zoom.center(); +} + +qreal CartesianCoordinatePlane::zoomFactorX() const +{ + return d->coordinateTransformation.zoom.xFactor; +} + +qreal CartesianCoordinatePlane::zoomFactorY() const +{ + return d->coordinateTransformation.zoom.yFactor; +} + + +CartesianCoordinatePlane::AxesCalcMode CartesianCoordinatePlane::axesCalcModeY() const +{ + return d->coordinateTransformation.axesCalcModeY; +} + +CartesianCoordinatePlane::AxesCalcMode CartesianCoordinatePlane::axesCalcModeX() const +{ + return d->coordinateTransformation.axesCalcModeX; +} + +void CartesianCoordinatePlane::setAxesCalcModes( AxesCalcMode mode ) +{ + if ( d->coordinateTransformation.axesCalcModeY != mode || + d->coordinateTransformation.axesCalcModeX != mode ) { + d->coordinateTransformation.axesCalcModeY = mode; + d->coordinateTransformation.axesCalcModeX = mode; + emit propertiesChanged(); + emit viewportCoordinateSystemChanged(); + Q_FOREACH( AbstractDiagram* diag, diagrams() ) + slotLayoutChanged( diag ); + } +} + +void CartesianCoordinatePlane::setAxesCalcModeY( AxesCalcMode mode ) +{ + if ( d->coordinateTransformation.axesCalcModeY != mode ) { + d->coordinateTransformation.axesCalcModeY = mode; + emit propertiesChanged(); + setGridNeedsRecalculate(); + emit viewportCoordinateSystemChanged(); + } +} + +void CartesianCoordinatePlane::setAxesCalcModeX( AxesCalcMode mode ) +{ + if ( d->coordinateTransformation.axesCalcModeX != mode ) { + d->coordinateTransformation.axesCalcModeX = mode; + emit propertiesChanged(); + emit viewportCoordinateSystemChanged(); + } +} + +namespace { + inline bool fuzzyCompare( qreal a, qreal b ) + { + if ( ISNAN(a) && ISNAN(b) ) + return true; + if ( qFuzzyIsNull(a) && qFuzzyIsNull(b) ) + return true; + return qFuzzyCompare( a, b ); + } +} + +void CartesianCoordinatePlane::setHorizontalRange( const QPair< qreal, qreal > & range ) +{ + if ( !fuzzyCompare(d->horizontalMin, range.first) || !fuzzyCompare(d->horizontalMax, range.second) ) { + d->autoAdjustHorizontalRangeToData = 100; + d->horizontalMin = range.first; + d->horizontalMax = range.second; + layoutDiagrams(); + emit propertiesChanged(); + emit boundariesChanged(); + } +} + +void CartesianCoordinatePlane::setVerticalRange( const QPair< qreal, qreal > & range ) +{ + if ( !fuzzyCompare(d->verticalMin, range.first) || !fuzzyCompare(d->verticalMax, range.second) ) { + d->autoAdjustVerticalRangeToData = 100; + d->verticalMin = range.first; + d->verticalMax = range.second; + layoutDiagrams(); + emit propertiesChanged(); + emit boundariesChanged(); + } +} + +QPair< qreal, qreal > CartesianCoordinatePlane::horizontalRange() const +{ + return QPair( d->horizontalMin, d->horizontalMax ); +} + +QPair< qreal, qreal > CartesianCoordinatePlane::verticalRange() const +{ + return QPair( d->verticalMin, d->verticalMax ); +} + +void CartesianCoordinatePlane::adjustRangesToData() +{ + const QRectF dataBoundingRect( getRawDataBoundingRectFromDiagrams() ); + d->horizontalMin = dataBoundingRect.left(); + d->horizontalMax = dataBoundingRect.right(); + d->verticalMin = dataBoundingRect.top(); + d->verticalMax = dataBoundingRect.bottom(); + layoutDiagrams(); + emit propertiesChanged(); +} + +void CartesianCoordinatePlane::adjustHorizontalRangeToData() +{ + const QRectF dataBoundingRect( getRawDataBoundingRectFromDiagrams() ); + d->horizontalMin = dataBoundingRect.left(); + d->horizontalMax = dataBoundingRect.right(); + layoutDiagrams(); + emit propertiesChanged(); +} + +void CartesianCoordinatePlane::adjustVerticalRangeToData() +{ + const QRectF dataBoundingRect( getRawDataBoundingRectFromDiagrams() ); + d->verticalMin = dataBoundingRect.bottom(); + d->verticalMax = dataBoundingRect.top(); + layoutDiagrams(); + emit propertiesChanged(); +} + +void CartesianCoordinatePlane::setAutoAdjustHorizontalRangeToData( unsigned int percentEmpty ) +{ + if ( d->autoAdjustHorizontalRangeToData != percentEmpty ) + { + d->autoAdjustHorizontalRangeToData = percentEmpty; + d->horizontalMin = 0.0; + d->horizontalMax = 0.0; + layoutDiagrams(); + emit propertiesChanged(); + } +} + +void CartesianCoordinatePlane::setAutoAdjustVerticalRangeToData( unsigned int percentEmpty ) +{ + if ( d->autoAdjustVerticalRangeToData != percentEmpty ) + { + d->autoAdjustVerticalRangeToData = percentEmpty; + d->verticalMin = 0.0; + d->verticalMax = 0.0; + layoutDiagrams(); + emit propertiesChanged(); + } +} + +unsigned int CartesianCoordinatePlane::autoAdjustHorizontalRangeToData() const +{ + return d->autoAdjustHorizontalRangeToData; +} + +unsigned int CartesianCoordinatePlane::autoAdjustVerticalRangeToData() const +{ + return d->autoAdjustVerticalRangeToData; +} + +void CartesianCoordinatePlane::setGridAttributes( + Qt::Orientation orientation, + const GridAttributes& a ) +{ + if ( orientation == Qt::Horizontal ) + d->gridAttributesHorizontal = a; + else + d->gridAttributesVertical = a; + setHasOwnGridAttributes( orientation, true ); + update(); + emit propertiesChanged(); +} + +void CartesianCoordinatePlane::resetGridAttributes( Qt::Orientation orientation ) +{ + setHasOwnGridAttributes( orientation, false ); + update(); +} + +const GridAttributes CartesianCoordinatePlane::gridAttributes( Qt::Orientation orientation ) const +{ + if ( hasOwnGridAttributes( orientation ) ) { + if ( orientation == Qt::Horizontal ) + return d->gridAttributesHorizontal; + else + return d->gridAttributesVertical; + } else { + return globalGridAttributes(); + } +} + +void CartesianCoordinatePlane::setHasOwnGridAttributes( Qt::Orientation orientation, bool on ) +{ + if ( orientation == Qt::Horizontal ) + d->hasOwnGridAttributesHorizontal = on; + else + d->hasOwnGridAttributesVertical = on; + emit propertiesChanged(); +} + +bool CartesianCoordinatePlane::hasOwnGridAttributes( Qt::Orientation orientation ) const +{ + return orientation == Qt::Horizontal ? d->hasOwnGridAttributesHorizontal + : d->hasOwnGridAttributesVertical; +} + +void CartesianCoordinatePlane::setAutoAdjustGridToZoom( bool autoAdjust ) +{ + if ( d->autoAdjustGridToZoom != autoAdjust ) { + d->autoAdjustGridToZoom = autoAdjust; + d->grid->setNeedRecalculate(); + emit propertiesChanged(); + } +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +bool CartesianCoordinatePlane::autoAdjustGridToZoom() const +{ + return d->autoAdjustGridToZoom; +} + +AbstractCoordinatePlane* CartesianCoordinatePlane::sharedAxisMasterPlane( QPainter* painter ) +{ + CartesianCoordinatePlane* plane = this; + AbstractCartesianDiagram* diag = dynamic_cast< AbstractCartesianDiagram* >( plane->diagram() ); + const CartesianAxis* sharedAxis = 0; + if ( diag != 0 ) + { + const CartesianAxisList axes = diag->axes(); + KDAB_FOREACH( const CartesianAxis* a, axes ) + { + CartesianCoordinatePlane* p = const_cast< CartesianCoordinatePlane* >( + dynamic_cast< const CartesianCoordinatePlane* >( a->coordinatePlane() ) ); + if ( p != 0 && p != this ) + { + plane = p; + sharedAxis = a; + } + } + } + + if ( plane == this || painter == 0 ) + return plane; + + const QPointF zero = QPointF( 0, 0 ); + const QPointF tenX = QPointF( 10, 0 ); + const QPointF tenY = QPointF( 0, 10 ); + + + if ( sharedAxis->isOrdinate() ) + { + painter->translate( translate( zero ).x(), 0.0 ); + const qreal factor = (translate( tenX ) - translate( zero ) ).x() / ( plane->translate( tenX ) - plane->translate( zero ) ).x(); + painter->scale( factor, 1.0 ); + painter->translate( -plane->translate( zero ).x(), 0.0 ); + } + if ( sharedAxis->isAbscissa() ) + { + painter->translate( 0.0, translate( zero ).y() ); + const qreal factor = (translate( tenY ) - translate( zero ) ).y() / ( plane->translate( tenY ) - plane->translate( zero ) ).y(); + painter->scale( 1.0, factor ); + painter->translate( 0.0, -plane->translate( zero ).y() ); + } + + + return plane; +} + +void CartesianCoordinatePlane::setHorizontalRangeReversed( bool reverse ) +{ + if ( d->reverseHorizontalPlane == reverse ) + return; + + d->reverseHorizontalPlane = reverse; + layoutDiagrams(); + emit propertiesChanged(); +} + +bool CartesianCoordinatePlane::isHorizontalRangeReversed() const +{ + return d->reverseHorizontalPlane; +} + +void CartesianCoordinatePlane::setVerticalRangeReversed( bool reverse ) +{ + if ( d->reverseVerticalPlane == reverse ) + return; + + d->reverseVerticalPlane = reverse; + layoutDiagrams(); + emit propertiesChanged(); +} + +bool CartesianCoordinatePlane::isVerticalRangeReversed() const +{ + return d->reverseVerticalPlane; +} + +QRectF CartesianCoordinatePlane::visibleDataRange() const +{ + QRectF result; + + const QRectF drawArea = drawingArea(); + + result.setTopLeft( translateBack( drawArea.topLeft() ) ); + result.setBottomRight( translateBack( drawArea.bottomRight() ) ); + + return result; +} + +void CartesianCoordinatePlane::setGeometry( const QRect& rectangle ) +{ + if ( rectangle == geometry() ) { + return; + } + + d->geometry = rectangle; + if ( d->isometricScaling ) { + const int hfw = heightForWidth( rectangle.width() ); + // same scaling for x and y means a fixed aspect ratio, which is enforced here + // always shrink the too large dimension + if ( hfw < rectangle.height() ) { + d->geometry.setHeight( hfw ); + } else { + d->geometry.setWidth( qRound( qreal( rectangle.width() ) * + qreal( rectangle.height() ) / qreal( hfw ) ) ); + } + } + + AbstractCoordinatePlane::setGeometry( d->geometry ); + + Q_FOREACH( AbstractDiagram* diagram, diagrams() ) { + diagram->resize( d->geometry.size() ); + } +} + +Qt::Orientations CartesianCoordinatePlane::expandingDirections() const +{ + // not completely sure why this is required for isometric scaling... + return d->isometricScaling ? Qt::Horizontal : ( Qt::Horizontal | Qt::Vertical ); +} + +bool CartesianCoordinatePlane::hasHeightForWidth() const +{ + return d->isometricScaling; +} + +int CartesianCoordinatePlane::heightForWidth( int w ) const +{ + // ### using anything for dataRect that depends on geometry will close a feedback loop which + // prevents the geometry from stabilizing. specifically, visibleDataRange() depends on + // drawingArea(), and no good will come out of using it here. + QRectF dataRect = logicalArea(); + return qRound( qreal( w ) * qAbs( qreal( dataRect.height() ) / qreal( dataRect.width() ) ) ); +} + +QSize CartesianCoordinatePlane::sizeHint() const +{ + QSize sh = AbstractCoordinatePlane::sizeHint(); + if ( d->isometricScaling ) { + // not sure why the next line doesn't cause an infinite loop, but it improves initial size allocation + sh = d->geometry.size(); + sh.setHeight( heightForWidth( sh.width() ) ); + } + return sh; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.h new file mode 100644 index 00000000..7ca9d061 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane.h @@ -0,0 +1,505 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANCOORDINATEPLANE_H +#define KDCHARTCARTESIANCOORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class Chart; + class PaintContext; + class AbstractDiagram; + class CartesianAxis; + class CartesianGrid; + + /** + * @brief Cartesian coordinate plane + */ + class KDCHART_EXPORT CartesianCoordinatePlane : public AbstractCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( CartesianCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( CartesianCoordinatePlane, Chart* ) + + friend class CartesianAxis; + friend class CartesianGrid; + + public: + explicit CartesianCoordinatePlane ( Chart* parent = 0 ); + ~CartesianCoordinatePlane(); + + void addDiagram ( AbstractDiagram* diagram ); + + /** + * If @p onOff is true, enforce that X and Y distances are scaled by the same factor. + * This makes the plane's height a function of its width, and hasHeightForWidth() + * will return true. + */ + void setIsometricScaling ( bool onOff ); + + bool doesIsometricScaling() const; + + const QPointF translate ( const QPointF& diagramPoint ) const; + + /** + * \sa setZoomFactorX, setZoomCenter + */ + virtual qreal zoomFactorX() const; + /** + * \sa setZoomFactorY, setZoomCenter + */ + virtual qreal zoomFactorY() const; + + /** + * \sa setZoomFactorX,setZoomFactorY + */ + virtual void setZoomFactors( qreal factorX, qreal factorY ); + /** + * \sa zoomFactorX, setZoomCenter + */ + virtual void setZoomFactorX( qreal factor ); + /** + * \sa zoomFactorY, setZoomCenter + */ + virtual void setZoomFactorY( qreal factor ); + + /** + * \sa setZoomCenter, setZoomFactorX, setZoomFactorY + */ + virtual QPointF zoomCenter() const; + + /** + * \sa zoomCenter, setZoomFactorX, setZoomFactorY + */ + virtual void setZoomCenter( const QPointF& center ); + + /** + * Allows to specify a fixed data-space / coordinate-space relation. If set + * to true then fixed bar widths are used, so you see more bars as the window + * is made wider. + * + * This allows to completely restrict the size of bars in a graph such that, + * upon resizing a window, the graphs coordinate plane will grow (add more + * ticks to x- and y-coordinates) rather than have the image grow. + */ + void setFixedDataCoordinateSpaceRelation( bool fixed ); + bool hasFixedDataCoordinateSpaceRelation() const; + + /** + * Allows to fix the lower bound of X axis to zero when diagram is in first quadrant. + * + * The default behavior is to lower x or y bound to be 0. If this behaviour is not wanted, + * either \a CartesianCoordinatePlane::setHorizontalRange could be used instead of letting + * KDChart auto-adjust the ranges, or this method can be used to disable this behavior. + */ + void setXAxisStartAtZero(bool fixedStart); + bool xAxisStartAtZero() const; + + /** + * \brief Set the boundaries of the visible value space displayed in horizontal direction. + * + * This is also known as the horizontal viewport. + * + * By default the horizontal range is adjusted to the range covered by the model's data, + * see setAutoAdjustHorizontalRangeToData for details. + * Calling setHorizontalRange with a valid range disables this default automatic adjusting, + * while on the other hand automatic adjusting will set these ranges. + * + * To disable use of this range you can either pass an empty pair by using the default + * constructor QPair() or you can set both values to the same which constitutes + * a null range. + * + * \note By default the visible data range often is larger than the + * range calculated from the data model (or set by setHoriz.|Vert.Range(), resp.). + * This is due to the built-in grid calculation feature: The visible start/end + * values get adjusted so that they match a main-grid line. + * You can turn this feature off for any of the four bounds by calling + * GridAttributes::setAdjustBoundsToGrid() for either the global grid-attributes + * or for the horizontal/vertical attrs separately. + * + * \note To set only one of the ends of the range to a fixed value while keeping + * the other dynamically adjusted, use std::numeric_limits< qreal >::quiet_NaN() + * for the dynamic value. + * + * \note If you use user defined vertical ranges together with logarithmic scale, only + * positive values are supported. If you set it to negative values, the result is undefined. + * + * \param range a pair of values representing the smalles and the largest + * horizontal value space coordinate displayed. + * + * \sa setAutoAdjustHorizontalRangeToData, setVerticalRange + * \sa GridAttributes::setAdjustBoundsToGrid() + */ + void setHorizontalRange( const QPair & range ); + + /** + * \brief Set the boundaries of the visible value space displayed in vertical direction. + * + * This is also known as the vertical viewport. + * + * By default the vertical range is adjusted to the range covered by the model's data, + * see setAutoAdjustVerticalRangeToData for details. + * Calling setVerticalRange with a valid range disables this default automatic adjusting, + * while on the other hand automatic adjusting will set these ranges. + * + * To disable use of this range you can either pass an empty pair by using the default + * constructor QPair() or you can set setting both values to the same which constitutes + * a null range. + * + * \note By default the visible data range often is larger than the + * range calculated from the data model (or set by setHoriz.|Vert.Range(), resp.). + * This is due to the built-in grid calculation feature: The visible start/end + * values get adjusted so that they match a main-grid line. + * You can turn this feature off for any of the four bounds by calling + * GridAttributes::setAdjustBoundsToGrid() for either the global grid-attributes + * or for the horizontal/vertical attrs separately. + * + * \note To set only one of the ends of the range to a fixed value while keeping + * the other dynamically adjusted, use std::numeric_limits< qreal >::quiet_NaN() + * for the dynamic value. + * + * \note If you use user defined vertical ranges together with logarithmic scale, only + * positive values are supported. If you set it to negative values, the result is undefined. + * + * \param range a pair of values representing the smalles and the largest + * vertical value space coordinate displayed. + * + * \sa setAutoAdjustVerticalRangeToData, setHorizontalRange + * \sa GridAttributes::setAdjustBoundsToGrid() + */ + void setVerticalRange( const QPair & range ); + + /** + * @return The largest and smallest visible horizontal value space + * value. If this is not explicitly set,or if both values are the same, + * the plane will use the union of the dataBoundaries of all + * associated diagrams. + * \see KDChart::AbstractDiagram::dataBoundaries + */ + QPair horizontalRange() const; + + /** + * @return The largest and smallest visible horizontal value space + * value. If this is not explicitly set, or if both values are the same, + * the plane will use the union of the dataBoundaries of all + * associated diagrams. + * \see KDChart::AbstractDiagram::dataBoundaries + */ + QPair verticalRange() const; + + /** + * \brief Automatically adjust horizontal range settings to the ranges covered by + * the model's values, when ever the data have changed, and then emit horizontalRangeAutomaticallyAdjusted. + * + * By default the horizontal range is adjusted automatically, if more than 67 percent of + * the available horizontal space would be empty otherwise. + * + * Range setting is adjusted if more than \c percentEmpty percent of the horizontal + * space covered by the coordinate plane would otherwise be empty. + * Automatic range adjusting can happen, when either all of the data are positive or all are negative. + * + * Set percentEmpty to 100 to disable automatic range adjusting. + * + * \param percentEmpty The maximal percentage of horizontal space that may be empty. + * + * \sa horizontalRangeAutomaticallyAdjusted + * \sa autoAdjustHorizontalRangeToData, adjustRangesToData + * \sa setHorizontalRange, setVerticalRange + * \sa setAutoAdjustVerticalRangeToData + */ + void setAutoAdjustHorizontalRangeToData( unsigned int percentEmpty = 67 ); + + /** + * \brief Automatically adjust vertical range settings to the ranges covered by + * the model's values, when ever the data have changed, and then emit verticalRangeAutomaticallyAdjusted. + * + * By default the vertical range is adjusted automatically, if more than 67 percent of + * the available vertical space would be empty otherwise. + * + * Range setting is adjusted if more than \c percentEmpty percent of the horizontal + * space covered by the coordinate plane would otherwise be empty. + * Automatic range adjusting can happen, when either all of the data are positive or all are negative. + * + * Set percentEmpty to 100 to disable automatic range adjusting. + * + * \param percentEmpty The maximal percentage of horizontal space that may be empty. + * + * \sa verticalRangeAutomaticallyAdjusted + * \sa autoAdjustVerticalRangeToData, adjustRangesToData + * \sa setHorizontalRange, setVerticalRange + * \sa setAutoAdjustHorizontalRangeToData + */ + void setAutoAdjustVerticalRangeToData( unsigned int percentEmpty = 67 ); + + /** + * \brief Returns the maximal allowed percent of the horizontal + * space covered by the coordinate plane that may be empty. + * + * \return A percent value indicating how much of the horizontal space may be empty. + * If more than this is empty, automatic range adjusting is applied. + * A return value of 100 indicates that no such automatic adjusting is done at all. + * + * \sa setAutoAdjustHorizontalRangeToData, adjustRangesToData + */ + unsigned int autoAdjustHorizontalRangeToData() const; + + /** + * \brief Returns the maximal allowed percent of the vertical + * space covered by the coordinate plane that may be empty. + * + * \return A percent value indicating how much of the vertical space may be empty. + * If more than this is empty, automatic range adjusting is applied. + * A return value of 100 indicates that no such automatic adjusting is done at all. + * + * \sa setAutoAdjustVerticalRangeToData, adjustRangesToData + */ + unsigned int autoAdjustVerticalRangeToData() const; + + + /** + * Set the attributes to be used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * + * To disable horizontal grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->gridAttributes( Qt::Horizontal ); + * ga.setGridVisible( false ); + * plane-setGridAttributes( Qt::Horizontal, ga ); + * \endcode + * + * \note setGridAttributes overwrites the global attributes that + * were set by AbstractCoordinatePlane::setGlobalGridAttributes. + * To re-activate these global attributes you can call + * resetGridAttributes. + * + * \sa resetGridAttributes, gridAttributes + * \sa setAutoAdjustGridToZoom + * \sa AbstractCoordinatePlane::setGlobalGridAttributes + * \sa hasOwnGridAttributes + */ + void setGridAttributes( Qt::Orientation orientation, const GridAttributes & ); + + /** + * Reset the attributes to be used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * By calling this method you specify that the global attributes set by + * AbstractCoordinatePlane::setGlobalGridAttributes be used. + * + * \sa setGridAttributes, gridAttributes + * \sa setAutoAdjustGridToZoom + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + void resetGridAttributes( Qt::Orientation orientation ); + + /** + * \return The attributes used for grid lines drawn in horizontal + * direction (or in vertical direction, resp.). + * + * \note This function always returns a valid set of grid attributes: + * If no special grid attributes were set foe this orientation + * the global attributes are returned, as returned by + * AbstractCoordinatePlane::globalGridAttributes. + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + const GridAttributes gridAttributes( Qt::Orientation orientation ) const; + + /** + * \return Returns whether the grid attributes have been set for the + * respective direction via setGridAttributes( orientation ). + * + * If false, the grid will use the global attributes set + * by AbstractCoordinatePlane::globalGridAttributes (or the default + * attributes, resp.) + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + */ + bool hasOwnGridAttributes( Qt::Orientation orientation ) const; + + /** + * Disable / re-enable the built-in grid adjusting feature. + * + * By default additional lines will be drawn in a Linear grid when zooming in. + * + * \sa autoAdjustGridToZoom, setGridAttributes + */ + void setAutoAdjustGridToZoom( bool autoAdjust ); + + /** + * Return the status of the built-in grid adjusting feature. + * + * \sa setAutoAdjustGridToZoom + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const bool autoAdjustGridToZoom() const; +#else + bool autoAdjustGridToZoom() const; +#endif + + AxesCalcMode axesCalcModeY() const; + AxesCalcMode axesCalcModeX() const; + + /** Specifies the calculation modes for all axes */ + void setAxesCalcModes( AxesCalcMode mode ); + /** Specifies the calculation mode for all Ordinate axes */ + void setAxesCalcModeY( AxesCalcMode mode ); + /** Specifies the calculation mode for all Abscissa axes */ + void setAxesCalcModeX( AxesCalcMode mode ); + + /** reimpl */ + virtual void paint( QPainter* ); + + /** reimpl */ + AbstractCoordinatePlane* sharedAxisMasterPlane( QPainter* p = 0 ); + + /** + * Returns the currently visible data range. Might be greater than the + * range of the grid. + */ + QRectF visibleDataRange() const; + + /** + * Returns the logical area, i.e., the rectangle defined by the very top + * left and very bottom right coordinate. + */ + QRectF logicalArea() const; + + /** + * Returns the (physical) area occupied by the diagram. Unless zoom is applied + * (which is also true when a fixed data coordinate / space relation is used), + * \code diagramArea() == drawingArea() \endcode . + * \sa setFixedDataCoordinateSpaceRelation + * \sa drawingArea + */ + QRectF diagramArea() const; + + /** + * Returns the visible part of the diagram area, i.e. + * \code diagramArea().intersected( drawingArea() ) \endcode + * \sa diagramArea + */ + QRectF visibleDiagramArea() const; + + /** + * Sets whether the horizontal range should be reversed or not, i.e. + * small values to the left and large values to the right (the default) + * or vice versa. + * \param reverse Whether the horizontal range should be reversed or not + */ + void setHorizontalRangeReversed( bool reverse ); + + /** + * \return Whether the horizontal range is reversed or not + */ + bool isHorizontalRangeReversed() const; + + /** + * Sets whether the vertical range should be reversed or not, i.e. + * small values at the bottom and large values at the top (the default) + * or vice versa. + * \param reverse Whether the vertical range should be reversed or not + */ + void setVerticalRangeReversed( bool reverse ); + + /** + * \return Whether the vertical range is reversed or not + */ + bool isVerticalRangeReversed() const; + + /** + * reimplemented from AbstractCoordinatePlane + */ + void setGeometry( const QRect& r ); + + // reimplemented + Qt::Orientations expandingDirections() const; + + + public Q_SLOTS: + /** + * \brief Adjust both, horizontal and vertical range settings to the + * ranges covered by the model's data values. + * + * \sa setHorizontalRange, setVerticalRange + * \sa adjustHorizontalRangeToData, adjustVerticalRangeToData + * \sa setAutoAdjustHorizontalRangeToData, setAutoAdjustVerticalRangeToData + */ + void adjustRangesToData(); + + /** + * Adjust horizontal range settings to the ranges covered by the model's data values. + * \sa adjustRangesToData + */ + void adjustHorizontalRangeToData(); + + /** + * Adjust vertical range settings to the ranges covered by the model's data values. + * \sa adjustRangesToData + */ + void adjustVerticalRangeToData(); + + protected: + QRectF getRawDataBoundingRectFromDiagrams() const; + QRectF adjustedToMaxEmptyInnerPercentage( + const QRectF& r, unsigned int percentX, unsigned int percentY ) const; + virtual QRectF calculateRawDataBoundingRect() const; + virtual DataDimensionsList getDataDimensionsList() const; + // the whole drawing area, includes diagrams and axes, but maybe smaller + // than (width, height): + virtual QRectF drawingArea() const; + public: + const QPointF translateBack( const QPointF& screenPoint ) const; + protected: + void paintEvent ( QPaintEvent* ); + void layoutDiagrams(); + // the following three return true if the new value is different from the old + bool doneSetZoomFactorX( qreal factor ); + bool doneSetZoomFactorY( qreal factor ); + bool doneSetZoomCenter( const QPointF& center ); + + void handleFixedDataCoordinateSpaceRelation( const QRectF& geometry ); + + // reimplemented from QLayoutItem, via AbstractLayoutItem, AbstractArea, AbstractCoordinatePlane + bool hasHeightForWidth() const; + int heightForWidth( int w ) const; + QSize sizeHint() const; + + protected Q_SLOTS: + void slotLayoutChanged( AbstractDiagram* ); + + private: + void setHasOwnGridAttributes( + Qt::Orientation orientation, bool on ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane_p.h new file mode 100644 index 00000000..d3c61efc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianCoordinatePlane_p.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANCOORDINATEPLANE_P_H +#define KDCHARTCARTESIANCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractCoordinatePlane_p.h" +#include "CartesianCoordinateTransformation.h" +#include "KDChartCartesianGrid.h" +#include "KDChartZoomParameters.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class CartesianCoordinatePlane::Private : public AbstractCoordinatePlane::Private +{ + friend class CartesianCoordinatePlane; +public: + explicit Private(); + virtual ~Private() { } + + virtual void initialize() + { + bPaintIsRunning = false; + coordinateTransformation.axesCalcModeX = Linear; + coordinateTransformation.axesCalcModeY = Linear; + grid = new CartesianGrid(); + } + + static Private *get( CartesianCoordinatePlane *plane ) + { + return static_cast< Private * >( plane->d_func() ); + } + + virtual bool isVisiblePoint( const AbstractCoordinatePlane * plane, const QPointF& point ) const + { + QPointF p = point; + const CartesianCoordinatePlane* const ref = + qobject_cast< const CartesianCoordinatePlane* >( + const_cast< AbstractCoordinatePlane* >( plane )->sharedAxisMasterPlane() ); + const CartesianCoordinatePlane* const cartPlane = + dynamic_cast< const CartesianCoordinatePlane* >( plane ); + if ( ref != 0 && ref != cartPlane ) { + const QPointF logical = ref->translateBack( point ) - cartPlane->visibleDataRange().topLeft() + + ref->visibleDataRange().topLeft(); + p = ref->translate( logical ); + } + const QRectF geo( plane->geometry() ); + return geo.contains( p ); + } + + + // the coordinate plane will calculate the coordinate transformation: + CoordinateTransformation coordinateTransformation; + + bool bPaintIsRunning; + + // true after setGridAttributes( Qt::Orientation ) was used, + // false if resetGridAttributes( Qt::Orientation ) was called + bool hasOwnGridAttributesHorizontal; + bool hasOwnGridAttributesVertical; + + // true after the first resize event came in + // bool initialResizeEventReceived; + + // true if the coordinate plane scales isometrically + // (same scaling ratio from data to screen space for both axes) + bool isometricScaling; + + GridAttributes gridAttributesHorizontal; + GridAttributes gridAttributesVertical; + + qreal horizontalMin; + qreal horizontalMax; + qreal verticalMin; + qreal verticalMax; + + // autoAdjustHorizontalRangeToData determines if and how much the horizontal range is adjusted. + // A value of 100 means that the fixed horizontal range will be used (e.g. set by the user), + // otherwise the value will be the percentage of the diagram's horizontal range that is to be + // left empty (i.e., it resembles the 'gap' between the horizontal extrema and the border of the + // diagram). + unsigned int autoAdjustHorizontalRangeToData; + + // autoAdjustVerticalRangeToData determines if and how much the vertical range is adjusted. + // A value of 100 means that the fixed vertical range will be used (e.g. set by the user), + // otherwise the value will be the percentage of the diagram's vertical range that is to be + // left empty (i.e., it resembles the 'gap' between the vertical extrema and the border of the + // diagram). + unsigned int autoAdjustVerticalRangeToData; + bool autoAdjustGridToZoom; + + bool fixedDataCoordinateSpaceRelation; + bool xAxisStartAtZero; + QSizeF fixedDataCoordinateSpaceRelationPinnedSize; + ZoomParameters fixedDataCoordinateSpaceRelationPinnedZoom; + + DataDimensionsList dimensions; + + bool reverseVerticalPlane; + bool reverseHorizontalPlane; +}; + + +KDCHART_IMPL_DERIVED_PLANE(CartesianCoordinatePlane, AbstractCoordinatePlane) + +} + +#endif /* KDCHARTBARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.cpp new file mode 100644 index 00000000..52bacf3c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.cpp @@ -0,0 +1,663 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartCartesianDiagramDataCompressor_p.h" + +#include +#include + +#include "KDChartAbstractCartesianDiagram.h" + +#include + +using namespace KDChart; +using namespace std; + +CartesianDiagramDataCompressor::CartesianDiagramDataCompressor( QObject* parent ) + : QObject( parent ) + , m_mode( Precise ) + , m_xResolution( 0 ) + , m_yResolution( 0 ) + , m_sampleStep( 0 ) + , m_datasetDimension( 1 ) +{ + calculateSampleStepWidth(); + m_data.resize( 0 ); +} + +static bool contains( const CartesianDiagramDataCompressor::AggregatedDataValueAttributes& aggregated, + const DataValueAttributes& attributes ) +{ + CartesianDiagramDataCompressor::AggregatedDataValueAttributes::const_iterator it = aggregated.constBegin(); + for ( ; it != aggregated.constEnd(); ++it ) { + if ( it.value() == attributes ) { + return true; + } + } + return false; +} + +CartesianDiagramDataCompressor::AggregatedDataValueAttributes CartesianDiagramDataCompressor::aggregatedAttrs( + const AbstractDiagram* diagram, + const QModelIndex & index, + const CachePosition& position ) const +{ + // return cached attrs, if any + DataValueAttributesCache::const_iterator i = m_dataValueAttributesCache.constFind( position ); + if ( i != m_dataValueAttributesCache.constEnd() ) { + return i.value(); + } + + // aggregate attributes from all indices in the same CachePosition as index + CartesianDiagramDataCompressor::AggregatedDataValueAttributes aggregated; + KDAB_FOREACH( const QModelIndex& neighborIndex, mapToModel( position ) ) { + DataValueAttributes attrs = diagram->dataValueAttributes( neighborIndex ); + // only store visible and unique attributes + if ( !attrs.isVisible() ) { + continue; + } + if ( !contains( aggregated, attrs ) ) { + aggregated[ neighborIndex ] = attrs; + } + } + // if none of the attributes had the visible flag set, we just take the one set for the index + // to avoid returning an empty list (### why not return an empty list?) + if ( aggregated.isEmpty() ) { + aggregated[index] = diagram->dataValueAttributes( index ); + } + + m_dataValueAttributesCache[position] = aggregated; + return aggregated; +} + +bool CartesianDiagramDataCompressor::prepareDataChange( const QModelIndex& parent, bool isRows, + int* start, int* end ) +{ + if ( parent != m_rootIndex ) { + return false; + } + Q_ASSERT( *start <= *end ); + + CachePosition startPos = isRows ? mapToCache( *start, 0 ) : mapToCache( 0, *start ); + CachePosition endPos = isRows ? mapToCache( *end, 0 ) : mapToCache( 0, *end ); + + static const CachePosition nullPosition; + if ( startPos == nullPosition ) { + rebuildCache(); + startPos = isRows ? mapToCache( *start, 0 ) : mapToCache( 0, *start ); + endPos = isRows ? mapToCache( *end, 0 ) : mapToCache( 0, *end ); + // The start position still isn't valid, + // means that no resolution was set yet or we're about to add the first rows + if ( startPos == nullPosition ) { + return false; + } + } + + *start = isRows ? startPos.row : startPos.column; + *end = isRows ? endPos.row : endPos.column; + return true; +} + +void CartesianDiagramDataCompressor::slotRowsAboutToBeInserted( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, true, &start, &end ) ) { + return; + } + for ( int i = 0; i < m_data.size(); ++i ) + { + Q_ASSERT( start >= 0 && start <= m_data[ i ].size() ); + m_data[ i ].insert( start, end - start + 1, DataPoint() ); + } +} + +void CartesianDiagramDataCompressor::slotRowsInserted( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, true, &start, &end ) ) { + return; + } + for ( int i = 0; i < m_data.size(); ++i ) + { + for ( int j = start; j < m_data[i].size(); ++j ) { + retrieveModelData( CachePosition( j, i ) ); + } + } +} + +void CartesianDiagramDataCompressor::slotColumnsAboutToBeInserted( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, false, &start, &end ) ) { + return; + } + const int rowCount = qMin( m_model ? m_model->rowCount( m_rootIndex ) : 0, m_xResolution ); + Q_ASSERT( start >= 0 && start <= m_data.size() ); + m_data.insert( start, end - start + 1, QVector< DataPoint >( rowCount ) ); +} + +void CartesianDiagramDataCompressor::slotColumnsInserted( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, false, &start, &end ) ) { + return; + } + for ( int i = start; i < m_data.size(); ++i ) + { + for (int j = 0; j < m_data[i].size(); ++j ) { + retrieveModelData( CachePosition( j, i ) ); + } + } +} + +void CartesianDiagramDataCompressor::slotRowsAboutToBeRemoved( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, true, &start, &end ) ) { + return; + } + for ( int i = 0; i < m_data.size(); ++i ) { + m_data[ i ].remove( start, end - start + 1 ); + } +} + +void CartesianDiagramDataCompressor::slotRowsRemoved( const QModelIndex& parent, int start, int end ) +{ + if ( parent != m_rootIndex ) + return; + Q_ASSERT( start <= end ); + Q_UNUSED( end ) + + CachePosition startPos = mapToCache( start, 0 ); + static const CachePosition nullPosition; + if ( startPos == nullPosition ) { + // Since we should already have rebuilt the cache, it won't help to rebuild it again. + // Do not Q_ASSERT() though, since the resolution might simply not be set or we might now have 0 rows + return; + } + + for ( int i = 0; i < m_data.size(); ++i ) { + for (int j = startPos.row; j < m_data[i].size(); ++j ) { + retrieveModelData( CachePosition( j, i ) ); + } + } +} + +void CartesianDiagramDataCompressor::slotColumnsAboutToBeRemoved( const QModelIndex& parent, int start, int end ) +{ + if ( !prepareDataChange( parent, false, &start, &end ) ) { + return; + } + m_data.remove( start, end - start + 1 ); +} + +void CartesianDiagramDataCompressor::slotColumnsRemoved( const QModelIndex& parent, int start, int end ) +{ + if ( parent != m_rootIndex ) + return; + Q_ASSERT( start <= end ); + Q_UNUSED( end ); + + const CachePosition startPos = mapToCache( 0, start ); + + static const CachePosition nullPosition; + if ( startPos == nullPosition ) { + // Since we should already have rebuilt the cache, it won't help to rebuild it again. + // Do not Q_ASSERT() though, since the resolution might simply not be set or we might now have 0 columns + return; + } + + for ( int i = startPos.column; i < m_data.size(); ++i ) { + for ( int j = 0; j < m_data[i].size(); ++j ) { + retrieveModelData( CachePosition( j, i ) ); + } + } +} + +void CartesianDiagramDataCompressor::slotModelHeaderDataChanged( Qt::Orientation orientation, int first, int last ) +{ + if ( orientation != Qt::Vertical ) + return; + + if ( m_model->rowCount( m_rootIndex ) > 0 ) { + const QModelIndex firstRow = m_model->index( 0, first, m_rootIndex ); // checked + const QModelIndex lastRow = m_model->index( m_model->rowCount( m_rootIndex ) - 1, last, m_rootIndex ); // checked + + slotModelDataChanged( firstRow, lastRow ); + } +} + +void CartesianDiagramDataCompressor::slotModelDataChanged( + const QModelIndex& topLeftIndex, + const QModelIndex& bottomRightIndex ) +{ + if ( topLeftIndex.parent() != m_rootIndex ) + return; + Q_ASSERT( topLeftIndex.parent() == bottomRightIndex.parent() ); + Q_ASSERT( topLeftIndex.row() <= bottomRightIndex.row() ); + Q_ASSERT( topLeftIndex.column() <= bottomRightIndex.column() ); + CachePosition topleft = mapToCache( topLeftIndex ); + CachePosition bottomright = mapToCache( bottomRightIndex ); + for ( int row = topleft.row; row <= bottomright.row; ++row ) + for ( int column = topleft.column; column <= bottomright.column; ++column ) + invalidate( CachePosition( row, column ) ); +} + +void CartesianDiagramDataCompressor::slotModelLayoutChanged() +{ + rebuildCache(); + calculateSampleStepWidth(); +} + +void CartesianDiagramDataCompressor::slotDiagramLayoutChanged( AbstractDiagram* diagramBase ) +{ + AbstractCartesianDiagram* diagram = qobject_cast< AbstractCartesianDiagram* >( diagramBase ); + Q_ASSERT( diagram ); + if ( diagram->datasetDimension() != m_datasetDimension ) { + setDatasetDimension( diagram->datasetDimension() ); + } +} + +int CartesianDiagramDataCompressor::modelDataColumns() const +{ + Q_ASSERT( m_datasetDimension != 0 ); + // only operational if there is a model and a resolution + if ( m_model ) { + const int effectiveDimension = m_datasetDimension == 2 ? 2 : 1; + const int columns = m_model->columnCount( m_rootIndex ) / effectiveDimension; + Q_ASSERT( columns == m_data.size() ); + return columns; + } else { + return 0; + } +} + +int CartesianDiagramDataCompressor::modelDataRows() const +{ + // only operational if there is a model, columns, and a resolution + if ( m_model && m_model->columnCount( m_rootIndex ) > 0 && m_xResolution > 0 ) { + return m_data.isEmpty() ? 0 : m_data.first().size(); + } else { + return 0; + } +} + +void CartesianDiagramDataCompressor::setModel( QAbstractItemModel* model ) +{ + if ( model == m_model ) { + return; + } + + if ( m_model != 0 ) { + disconnect( m_model, SIGNAL( headerDataChanged( Qt::Orientation, int, int ) ), + this, SLOT( slotModelHeaderDataChanged( Qt::Orientation, int, int ) ) ); + disconnect( m_model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), + this, SLOT( slotModelDataChanged( QModelIndex, QModelIndex ) ) ); + disconnect( m_model, SIGNAL( layoutChanged() ), + this, SLOT( slotModelLayoutChanged() ) ); + disconnect( m_model, SIGNAL( rowsAboutToBeInserted( QModelIndex, int, int ) ), + this, SLOT( slotRowsAboutToBeInserted( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), + this, SLOT( slotRowsInserted( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( rowsAboutToBeRemoved( QModelIndex, int, int ) ), + this, SLOT( slotRowsAboutToBeRemoved( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), + this, SLOT( slotRowsRemoved( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( columnsAboutToBeInserted( QModelIndex, int, int ) ), + this, SLOT( slotColumnsAboutToBeInserted( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( columnsInserted( QModelIndex, int, int ) ), + this, SLOT( slotColumnsInserted( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), + this, SLOT( slotColumnsRemoved( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( columnsAboutToBeRemoved( QModelIndex, int, int ) ), + this, SLOT( slotColumnsAboutToBeRemoved( QModelIndex, int, int ) ) ); + disconnect( m_model, SIGNAL( modelReset() ), + this, SLOT( rebuildCache() ) ); + m_model = 0; + } + + m_modelCache.setModel( model ); + + if ( model != 0 ) { + m_model = model; + connect( m_model, SIGNAL( headerDataChanged( Qt::Orientation, int, int ) ), + SLOT( slotModelHeaderDataChanged( Qt::Orientation, int, int ) ) ); + connect( m_model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), + SLOT( slotModelDataChanged( QModelIndex, QModelIndex ) ) ); + connect( m_model, SIGNAL( layoutChanged() ), + SLOT( slotModelLayoutChanged() ) ); + connect( m_model, SIGNAL( rowsAboutToBeInserted( QModelIndex, int, int ) ), + SLOT( slotRowsAboutToBeInserted( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), + SLOT( slotRowsInserted( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( rowsAboutToBeRemoved( QModelIndex, int, int ) ), + SLOT( slotRowsAboutToBeRemoved( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), + SLOT( slotRowsRemoved( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( columnsAboutToBeInserted( QModelIndex, int, int ) ), + SLOT( slotColumnsAboutToBeInserted( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( columnsInserted( QModelIndex, int, int ) ), + SLOT( slotColumnsInserted( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), + SLOT( slotColumnsRemoved( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( columnsAboutToBeRemoved( QModelIndex, int, int ) ), + SLOT( slotColumnsAboutToBeRemoved( QModelIndex, int, int ) ) ); + connect( m_model, SIGNAL( modelReset() ), SLOT( rebuildCache() ) ); + } + rebuildCache(); + calculateSampleStepWidth(); +} + +void CartesianDiagramDataCompressor::setRootIndex( const QModelIndex& root ) +{ + if ( m_rootIndex != root ) { + Q_ASSERT( root.model() == m_model || !root.isValid() ); + m_rootIndex = root; + m_modelCache.setRootIndex( root ); + rebuildCache(); + calculateSampleStepWidth(); + } +} + +void CartesianDiagramDataCompressor::recalcResolution() +{ + setResolution( m_xResolution, m_yResolution ); +} + +void CartesianDiagramDataCompressor::setResolution( int x, int y ) +{ + if ( setResolutionInternal( x, y ) ) { + rebuildCache(); + calculateSampleStepWidth(); + } +} + +bool CartesianDiagramDataCompressor::setResolutionInternal( int x, int y ) +{ + const int oldXRes = m_xResolution; + const int oldYRes = m_yResolution; + + if ( m_datasetDimension != 1 ) { + // just ignore the X resolution in that case + m_xResolution = m_model ? m_model->rowCount( m_rootIndex ) : 0; + } else { + m_xResolution = qMax( 0, x ); + } + m_yResolution = qMax( 0, y ); + + return m_xResolution != oldXRes || m_yResolution != oldYRes; +} + +void CartesianDiagramDataCompressor::clearCache() +{ + for ( int column = 0; column < m_data.size(); ++column ) + m_data[column].fill( DataPoint() ); +} + +void CartesianDiagramDataCompressor::rebuildCache() +{ + Q_ASSERT( m_datasetDimension != 0 ); + + m_data.clear(); + setResolutionInternal( m_xResolution, m_yResolution ); + const int columnDivisor = m_datasetDimension == 2 ? 2 : 1; + const int columnCount = m_model ? m_model->columnCount( m_rootIndex ) / columnDivisor : 0; + const int rowCount = qMin( m_model ? m_model->rowCount( m_rootIndex ) : 0, m_xResolution ); + m_data.resize( columnCount ); + for ( int i = 0; i < columnCount; ++i ) { + m_data[i].resize( rowCount ); + } + // also empty the attrs cache + m_dataValueAttributesCache.clear(); +} + +const CartesianDiagramDataCompressor::DataPoint& CartesianDiagramDataCompressor::data( const CachePosition& position ) const +{ + static DataPoint nullDataPoint; + if ( ! mapsToModelIndex( position ) ) { + return nullDataPoint; + } + if ( ! isCached( position ) ) { + retrieveModelData( position ); + } + return m_data[ position.column ][ position.row ]; +} + +QPair< QPointF, QPointF > CartesianDiagramDataCompressor::dataBoundaries() const +{ + const int colCount = modelDataColumns(); + qreal xMin = std::numeric_limits< qreal >::quiet_NaN(); + qreal xMax = std::numeric_limits< qreal >::quiet_NaN(); + qreal yMin = std::numeric_limits< qreal >::quiet_NaN(); + qreal yMax = std::numeric_limits< qreal >::quiet_NaN(); + + for ( int column = 0; column < colCount; ++column ) + { + const DataPointVector& data = m_data[ column ]; + int row = 0; + for ( DataPointVector::const_iterator it = data.begin(); it != data.end(); ++it, ++row ) + { + const DataPoint& p = *it; + if ( !p.index.isValid() ) + retrieveModelData( CachePosition( row, column ) ); + + if ( ISNAN( p.key ) || ISNAN( p.value ) ) { + continue; + } + + if ( ISNAN( xMin ) ) { + xMin = p.key; + xMax = p.key; + yMin = p.value; + yMax = p.value; + } else { + xMin = qMin( xMin, p.key ); + xMax = qMax( xMax, p.key ); + yMin = qMin( yMin, p.value ); + yMax = qMax( yMax, p.value ); + } + } + } + + const QPointF bottomLeft( xMin, yMin ); + const QPointF topRight( xMax, yMax ); + return qMakePair( bottomLeft, topRight ); +} + +void CartesianDiagramDataCompressor::retrieveModelData( const CachePosition& position ) const +{ + Q_ASSERT( mapsToModelIndex( position ) ); + DataPoint result; + result.hidden = true; + + switch ( m_mode ) { + case Precise: + { + const QModelIndexList indexes = mapToModel( position ); + + if ( m_datasetDimension == 2 ) { + Q_ASSERT( indexes.count() == 2 ); + const QModelIndex& xIndex = indexes.at( 0 ); + result.index = xIndex; + result.key = m_modelCache.data( xIndex ); + result.value = m_modelCache.data( indexes.at( 1 ) ); + } else { + if ( indexes.isEmpty() ) { + break; + } + result.value = std::numeric_limits< qreal >::quiet_NaN(); + result.key = 0.0; + Q_FOREACH( const QModelIndex& index, indexes ) { + const qreal value = m_modelCache.data( index ); + if ( !ISNAN( value ) ) { + result.value = ISNAN( result.value ) ? value : result.value + value; + } + result.key += index.row(); + } + result.index = indexes.at( 0 ); + result.key /= indexes.size(); + result.value /= indexes.size(); + } + + Q_FOREACH( const QModelIndex& index, indexes ) { + // the DataPoint point is visible if any of the underlying, aggregated points is visible + if ( m_model->data( index, DataHiddenRole ).value() == false ) { + result.hidden = false; + } + } + break; + } + case SamplingSeven: + break; + } + + m_data[ position.column ][ position.row ] = result; + Q_ASSERT( isCached( position ) ); +} + +CartesianDiagramDataCompressor::CachePosition CartesianDiagramDataCompressor::mapToCache( + const QModelIndex& index ) const +{ + Q_ASSERT( m_datasetDimension != 0 ); + + static const CachePosition nullPosition; + if ( !index.isValid() ) { + return nullPosition; + } + return mapToCache( index.row(), index.column() ); +} + +CartesianDiagramDataCompressor::CachePosition CartesianDiagramDataCompressor::mapToCache( + int row, int column ) const +{ + Q_ASSERT( m_datasetDimension != 0 ); + + if ( m_data.size() == 0 || m_data[ 0 ].size() == 0 ) { + return mapToCache( QModelIndex() ); + } + // assumption: indexes per column == 1 + if ( indexesPerPixel() == 0 ) { + return mapToCache( QModelIndex() ); + } + return CachePosition( int( row / indexesPerPixel() ), column / m_datasetDimension ); +} + +QModelIndexList CartesianDiagramDataCompressor::mapToModel( const CachePosition& position ) const +{ + QModelIndexList indexes; + if ( !mapsToModelIndex( position ) ) { + return indexes; + } + + Q_ASSERT( position.column < modelDataColumns() ); + if ( m_datasetDimension == 2 ) { + indexes << m_model->index( position.row, position.column * 2, m_rootIndex ); // checked + indexes << m_model->index( position.row, position.column * 2 + 1, m_rootIndex ); // checked + } else { + // here, indexes per column is usually but not always 1 (e.g. stock diagrams can have three + // or four dimensions: High-Low-Close or Open-High-Low-Close) + const qreal ipp = indexesPerPixel(); + const int baseRow = floor( position.row * ipp ); + // the following line needs to work for the last row(s), too... + const int endRow = floor( ( position.row + 1 ) * ipp ); + for ( int row = baseRow; row < endRow; ++row ) { + Q_ASSERT( row < m_model->rowCount( m_rootIndex ) ); + const QModelIndex index = m_model->index( row, position.column, m_rootIndex ); + if ( index.isValid() ) { + indexes << index; + } + } + } + return indexes; +} + +qreal CartesianDiagramDataCompressor::indexesPerPixel() const +{ + if ( !m_model || m_data.size() == 0 || m_data[ 0 ].size() == 0 ) { + return 0; + } + return qreal( m_model->rowCount( m_rootIndex ) ) / qreal( m_data[ 0 ].size() ); +} + +bool CartesianDiagramDataCompressor::mapsToModelIndex( const CachePosition& position ) const +{ + return m_model && m_data.size() > 0 && m_data[ 0 ].size() > 0 && + position.column >= 0 && position.column < m_data.size() && + position.row >=0 && position.row < m_data[ 0 ].size(); +} + +void CartesianDiagramDataCompressor::invalidate( const CachePosition& position ) +{ + if ( mapsToModelIndex( position ) ) { + m_data[ position.column ][ position.row ] = DataPoint(); + // Also invalidate the data value attributes at "position". + // Otherwise the user overwrites the attributes without us noticing + // it because we keep reading what's in the cache. + m_dataValueAttributesCache.remove( position ); + } +} + +bool CartesianDiagramDataCompressor::isCached( const CachePosition& position ) const +{ + Q_ASSERT( mapsToModelIndex( position ) ); + const DataPoint& p = m_data[ position.column ][ position.row ]; + return p.index.isValid(); +} + +void CartesianDiagramDataCompressor::calculateSampleStepWidth() +{ + if ( m_mode == Precise ) { + m_sampleStep = 1; + return; + } + + static unsigned int SomePrimes[] = { + 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, + 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, + 151, 211, 313, 401, 503, 607, 701, 811, 911, 1009, + 10037, 12911, 16001, 20011, 50021, + 100003, 137867, 199999, 500009, 707753, 1000003, 0 + }; // ... after that, having a model at all becomes impractical + + // we want at least 17 samples per data point, using a prime step width + const qreal WantedSamples = 17; + if ( WantedSamples > indexesPerPixel() ) { + m_sampleStep = 1; + } else { + int i; + for ( i = 0; SomePrimes[i] != 0; ++i ) { + if ( WantedSamples * SomePrimes[i+1] > indexesPerPixel() ) { + break; + } + } + m_sampleStep = SomePrimes[i]; + if ( SomePrimes[i] == 0 ) { + m_sampleStep = SomePrimes[i-1]; + } else { + m_sampleStep = SomePrimes[i]; + } + } +} + +void CartesianDiagramDataCompressor::setDatasetDimension( int dimension ) +{ + if ( dimension != m_datasetDimension ) { + m_datasetDimension = dimension; + rebuildCache(); + calculateSampleStepWidth(); + } +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.h new file mode 100644 index 00000000..74a05034 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianDiagramDataCompressor_p.h @@ -0,0 +1,219 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANDIAGRAMDATACOMPRESSOR_H +#define KDCHARTCARTESIANDIAGRAMDATACOMPRESSOR_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include +#include +#include +#include +#include + +#include "KDChartDataValueAttributes.h" +#include "KDChartModelDataCache_p.h" + +#include "kdchart_export.h" + +class CartesianDiagramDataCompressorTests; +QT_BEGIN_NAMESPACE +class QAbstractItemModel; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractDiagram; + + // - transparently compress table model data if the diagram widget + // size does not allow to display all data points in an acceptable way + // - the class acts much like a proxy model, but is not + // implemented as one, to avoid performance penalties by QVariant + // conversions + // - a wanted side effect is that the compressor will deliver + // more precise values for more precise media, like paper + // (a) this is absolutely strictly seriously private API of KDChart + // (b) if possible, this class is going to be templatized for + // different diagram types + + // KDCHART_EXPORT is needed as long there's a test using + // this class directly + class KDCHART_EXPORT CartesianDiagramDataCompressor : public QObject + { + Q_OBJECT + friend class ::CartesianDiagramDataCompressorTests; + + public: + class DataPoint { + public: + DataPoint() + : key( std::numeric_limits< qreal >::quiet_NaN() ), + value( std::numeric_limits< qreal >::quiet_NaN() ), + hidden( false ) + {} + qreal key; + qreal value; + bool hidden; + QModelIndex index; + }; + typedef QVector DataPointVector; + class CachePosition { + public: + CachePosition() + : row( -1 ), + column( -1 ) + {} + CachePosition( int row, int column ) + : row( row ), + column( column ) + {} + int row; + int column; + + bool operator==( const CachePosition& rhs ) const + { + return row == rhs.row && + column == rhs.column; + } + bool operator<( const CachePosition& rhs ) const + { + // This function is used to topologically sort all cache positions. + + // Think of them as entries in a matrix or table: + // An entry comes before another entry if it is either above the other + // entry, or in the same row and to the left of the other entry. + return row < rhs.row || ( row == rhs.row && column < rhs.column ); + } + }; + + typedef QMap< QModelIndex, DataValueAttributes > AggregatedDataValueAttributes; + typedef QMap< CartesianDiagramDataCompressor::CachePosition, AggregatedDataValueAttributes > DataValueAttributesCache; + + enum ApproximationMode { + // do not approximate, interpolate by averaging all + // datapoints for a pixel + Precise, + // approximate by averaging out over prime number distances + SamplingSeven + }; + + explicit CartesianDiagramDataCompressor( QObject* parent = 0 ); + + // input: model, chart resolution, approximation mode + void setModel( QAbstractItemModel* ); + void setRootIndex( const QModelIndex& root ); + void setResolution( int x, int y ); + void recalcResolution(); + void setApproximationMode( ApproximationMode mode ); + void setDatasetDimension( int dimension ); + + // output: resulting model resolution, data points + // FIXME (Mirko) rather stupid naming, Mirko! + int modelDataColumns() const; + int modelDataRows() const; + const DataPoint& data( const CachePosition& ) const; + + QPair< QPointF, QPointF > dataBoundaries() const; + + AggregatedDataValueAttributes aggregatedAttrs( + const AbstractDiagram* diagram, + const QModelIndex & index, + const CachePosition& position ) const; + + private Q_SLOTS: + void slotRowsAboutToBeInserted( const QModelIndex&, int, int ); + void slotRowsInserted( const QModelIndex&, int, int ); + void slotRowsAboutToBeRemoved( const QModelIndex&, int, int ); + void slotRowsRemoved( const QModelIndex&, int, int ); + + void slotColumnsAboutToBeInserted( const QModelIndex&, int, int ); + void slotColumnsInserted( const QModelIndex&, int, int ); + void slotColumnsAboutToBeRemoved( const QModelIndex&, int, int ); + void slotColumnsRemoved( const QModelIndex&, int, int ); + + void slotModelHeaderDataChanged( Qt::Orientation, int, int ); + void slotModelDataChanged( const QModelIndex&, const QModelIndex& ); + void slotModelLayoutChanged(); + // FIXME resolution changes and root index changes should all + // be catchable with this method: + void slotDiagramLayoutChanged( AbstractDiagram* ); + + // geometry has changed + void rebuildCache(); + // reset all cached values, without changing the cache geometry + void clearCache(); + + private: + // private version of setResolution() that does *not* call rebuildCache() + bool setResolutionInternal( int x, int y ); + // forget cached data at the position + void invalidate( const CachePosition& ); + // check if position is inside the dataset's index range + bool mapsToModelIndex( const CachePosition& ) const; + + CachePosition mapToCache( const QModelIndex& ) const; + CachePosition mapToCache( int row, int column ) const; + // Note: returns only valid model indices + QModelIndexList mapToModel( const CachePosition& ) const; + qreal indexesPerPixel() const; + + // common logic for slot{Rows,Columns}[AboutToBe]{Inserted,Removed} + bool prepareDataChange( const QModelIndex& parent, + bool isRows, /* columns otherwise */ + int* start, int* end); + + // retrieve data from the model, put it into the cache + void retrieveModelData( const CachePosition& ) const; + // check if a data point is in the cache: + bool isCached( const CachePosition& ) const; + // set sample step width according to settings: + void calculateSampleStepWidth(); + + + QPointer m_model; + QModelIndex m_rootIndex; + + ApproximationMode m_mode; + int m_xResolution; + int m_yResolution; + unsigned int m_sampleStep; + + mutable QVector m_data; // one per dataset + ModelDataCache< qreal, Qt::DisplayRole > m_modelCache; + mutable DataValueAttributesCache m_dataValueAttributesCache; + int m_datasetDimension; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.cpp new file mode 100644 index 00000000..2b9e73d1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.cpp @@ -0,0 +1,507 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartCartesianGrid.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartPrintingParameters.h" +#include "KDChartFrameAttributes.h" +#include "KDChartCartesianAxis_p.h" + +#include + +#include + +#include + +using namespace KDChart; + +CartesianGrid::CartesianGrid() + : AbstractGrid(), m_minsteps( 2 ), m_maxsteps( 12 ) +{ +} + +CartesianGrid::~CartesianGrid() +{ +} + +int CartesianGrid::minimalSteps() const +{ + return m_minsteps; +} + +void CartesianGrid::setMinimalSteps(int minsteps) +{ + m_minsteps = minsteps; +} + +int CartesianGrid::maximalSteps() const +{ + return m_maxsteps; +} + +void CartesianGrid::setMaximalSteps(int maxsteps) +{ + m_maxsteps = maxsteps; +} + +void CartesianGrid::drawGrid( PaintContext* context ) +{ + CartesianCoordinatePlane* plane = qobject_cast< CartesianCoordinatePlane* >( context->coordinatePlane() ); + const GridAttributes gridAttrsX( plane->gridAttributes( Qt::Horizontal ) ); + const GridAttributes gridAttrsY( plane->gridAttributes( Qt::Vertical ) ); + if ( !gridAttrsX.isGridVisible() && !gridAttrsX.isSubGridVisible() && + !gridAttrsY.isGridVisible() && !gridAttrsY.isSubGridVisible() ) { + return; + } + // This plane is used for translating the coordinates - not for the data boundaries + QPainter *p = context->painter(); + PainterSaver painterSaver( p ); + // sharedAxisMasterPlane() changes the painter's coordinate transformation(!) + plane = qobject_cast< CartesianCoordinatePlane* >( plane->sharedAxisMasterPlane( context->painter() ) ); + Q_ASSERT_X ( plane, "CartesianGrid::drawGrid", + "Bad function call: PaintContext::coodinatePlane() NOT a cartesian plane." ); + + // update the calculated mDataDimensions before using them + updateData( context->coordinatePlane() ); // this, in turn, calls our calculateGrid(). + Q_ASSERT_X ( mDataDimensions.count() == 2, "CartesianGrid::drawGrid", + "Error: updateData did not return exactly two dimensions." ); + if ( !isBoundariesValid( mDataDimensions ) ) { + return; + } + + const DataDimension dimX = mDataDimensions.first(); + const DataDimension dimY = mDataDimensions.last(); + const bool isLogarithmicX = dimX.calcMode == AbstractCoordinatePlane::Logarithmic; + const bool isLogarithmicY = dimY.calcMode == AbstractCoordinatePlane::Logarithmic; + + qreal minValueX = qMin( dimX.start, dimX.end ); + qreal maxValueX = qMax( dimX.start, dimX.end ); + qreal minValueY = qMin( dimY.start, dimY.end ); + qreal maxValueY = qMax( dimY.start, dimY.end ); + { + bool adjustXLower = !isLogarithmicX && gridAttrsX.adjustLowerBoundToGrid(); + bool adjustXUpper = !isLogarithmicX && gridAttrsX.adjustUpperBoundToGrid(); + bool adjustYLower = !isLogarithmicY && gridAttrsY.adjustLowerBoundToGrid(); + bool adjustYUpper = !isLogarithmicY && gridAttrsY.adjustUpperBoundToGrid(); + AbstractGrid::adjustLowerUpperRange( minValueX, maxValueX, dimX.stepWidth, adjustXLower, adjustXUpper ); + AbstractGrid::adjustLowerUpperRange( minValueY, maxValueY, dimY.stepWidth, adjustYLower, adjustYUpper ); + } + + if ( plane->frameAttributes().isVisible() ) { + const qreal radius = plane->frameAttributes().cornerRadius(); + QPainterPath path; + path.addRoundedRect( QRectF( plane->translate( QPointF( minValueX, minValueY ) ), + plane->translate( QPointF( maxValueX, maxValueY ) ) ), + radius, radius ); + context->painter()->setClipPath( path ); + } + + /* TODO features from old code: + - MAYBE coarsen the main grid when it gets crowded (do it in calculateGrid or here?) + if ( ! dimX.isCalculated ) { + while ( screenRangeX / numberOfUnitLinesX <= MinimumPixelsBetweenLines ) { + dimX.stepWidth *= 10.0; + dimX.subStepWidth *= 10.0; + numberOfUnitLinesX = qAbs( dimX.distance() / dimX.stepWidth ); + } + } + - MAYBE deactivate the sub-grid when it gets crowded + if ( dimX.subStepWidth && (screenRangeX / (dimX.distance() / dimX.subStepWidth) + <= MinimumPixelsBetweenLines) ) { + // de-activating grid sub steps: not enough space + dimX.subStepWidth = 0.0; + } + */ + + for ( int i = 0; i < 2; i++ ) { + XySwitch xy( i == 1 ); // first iteration paints the X grid lines, second paints the Y grid lines + const GridAttributes& gridAttrs = xy( gridAttrsX, gridAttrsY ); + bool hasMajorLines = gridAttrs.isGridVisible(); + bool hasMinorLines = hasMajorLines && gridAttrs.isSubGridVisible(); + if ( !hasMajorLines && !hasMinorLines ) { + continue; + } + + const DataDimension& dimension = xy( dimX, dimY ); + const bool drawZeroLine = dimension.isCalculated && gridAttrs.zeroLinePen().style() != Qt::NoPen; + + QPointF lineStart = QPointF( minValueX, minValueY ); // still need transformation to screen space + QPointF lineEnd = QPointF( maxValueX, maxValueY ); + + TickIterator it( xy.isY, dimension, gridAttrs.linesOnAnnotations(), + hasMajorLines, hasMinorLines, plane ); + for ( ; !it.isAtEnd(); ++it ) { + if ( !gridAttrs.isOuterLinesVisible() && + ( it.areAlmostEqual( it.position(), xy( minValueX, minValueY ) ) || + it.areAlmostEqual( it.position(), xy( maxValueX, maxValueY ) ) ) ) { + continue; + } + xy.lvalue( lineStart.rx(), lineStart.ry() ) = it.position(); + xy.lvalue( lineEnd.rx(), lineEnd.ry() ) = it.position(); + QPointF transLineStart = plane->translate( lineStart ); + QPointF transLineEnd = plane->translate( lineEnd ); + if ( ISNAN( transLineStart.x() ) || ISNAN( transLineStart.y() ) || + ISNAN( transLineEnd.x() ) || ISNAN( transLineEnd.y() ) ) { + // ### can we catch NaN problems earlier, wasting fewer cycles? + continue; + } + if ( it.position() == 0.0 && drawZeroLine ) { + p->setPen( PrintingParameters::scalePen( gridAttrsX.zeroLinePen() ) ); + } else if ( it.type() == TickIterator::MinorTick ) { + p->setPen( PrintingParameters::scalePen( gridAttrs.subGridPen() ) ); + } else { + p->setPen( PrintingParameters::scalePen( gridAttrs.gridPen() ) ); + } + p->drawLine( transLineStart, transLineEnd ); + } + } +} + + +DataDimensionsList CartesianGrid::calculateGrid( const DataDimensionsList& rawDataDimensions ) const +{ + Q_ASSERT_X ( rawDataDimensions.count() == 2, "CartesianGrid::calculateGrid", + "Error: calculateGrid() expects a list with exactly two entries." ); + + CartesianCoordinatePlane* plane = qobject_cast< CartesianCoordinatePlane* >( mPlane ); + Q_ASSERT_X ( plane, "CartesianGrid::calculateGrid", + "Error: PaintContext::calculatePlane() called, but no cartesian plane set." ); + + DataDimensionsList l( rawDataDimensions ); +#if 0 + qDebug() << Q_FUNC_INFO << "initial grid X-range:" << l.first().start << "->" << l.first().end + << " substep width:" << l.first().subStepWidth; + qDebug() << Q_FUNC_INFO << "initial grid Y-range:" << l.last().start << "->" << l.last().end + << " substep width:" << l.last().subStepWidth; +#endif + // rule: Returned list is either empty, or it is providing two + // valid dimensions, complete with two non-Zero step widths. + if ( isBoundariesValid( l ) ) { + const QPointF translatedBottomLeft( plane->translateBack( plane->geometry().bottomLeft() ) ); + const QPointF translatedTopRight( plane->translateBack( plane->geometry().topRight() ) ); + + const GridAttributes gridAttrsX( plane->gridAttributes( Qt::Horizontal ) ); + const GridAttributes gridAttrsY( plane->gridAttributes( Qt::Vertical ) ); + + const DataDimension dimX + = calculateGridXY( l.first(), Qt::Horizontal, + gridAttrsX.adjustLowerBoundToGrid(), + gridAttrsX.adjustUpperBoundToGrid() ); + if ( dimX.stepWidth ) { + //qDebug("CartesianGrid::calculateGrid() l.last().start: %f l.last().end: %f", l.last().start, l.last().end); + //qDebug(" l.first().start: %f l.first().end: %f", l.first().start, l.first().end); + + // one time for the min/max value + const DataDimension minMaxY + = calculateGridXY( l.last(), Qt::Vertical, + gridAttrsY.adjustLowerBoundToGrid(), + gridAttrsY.adjustUpperBoundToGrid() ); + + if ( plane->autoAdjustGridToZoom() + && plane->axesCalcModeY() == CartesianCoordinatePlane::Linear + && plane->zoomFactorY() > 1.0 ) + { + l.last().start = translatedBottomLeft.y(); + l.last().end = translatedTopRight.y(); + } + // and one other time for the step width + const DataDimension dimY + = calculateGridXY( l.last(), Qt::Vertical, + gridAttrsY.adjustLowerBoundToGrid(), + gridAttrsY.adjustUpperBoundToGrid() ); + if ( dimY.stepWidth ) { + l.first().start = dimX.start; + l.first().end = dimX.end; + l.first().stepWidth = dimX.stepWidth; + l.first().subStepWidth = dimX.subStepWidth; + l.last().start = minMaxY.start; + l.last().end = minMaxY.end; + l.last().stepWidth = dimY.stepWidth; + l.last().subStepWidth = dimY.subStepWidth; + //qDebug() << "CartesianGrid::calculateGrid() final grid y-range:" << l.last().end - l.last().start << " step width:" << l.last().stepWidth << endl; + // calculate some reasonable subSteps if the + // user did not set the sub grid but did set + // the stepWidth. + + // FIXME (Johannes) + // the last (y) dimension is not always the dimension for the ordinate! + // since there's no way to check for the orientation of this dimension here, + // we cannot automatically assume substep values + //if ( dimY.subStepWidth == 0 ) + // l.last().subStepWidth = dimY.stepWidth/2; + //else + // l.last().subStepWidth = dimY.subStepWidth; + } + } + } +#if 0 + qDebug() << Q_FUNC_INFO << "final grid X-range:" << l.first().start << "->" << l.first().end + << " substep width:" << l.first().subStepWidth; + qDebug() << Q_FUNC_INFO << "final grid Y-range:" << l.last().start << "->" << l.last().end + << " substep width:" << l.last().subStepWidth; +#endif + return l; +} + +qreal fastPow10( int x ) +{ + qreal res = 1.0; + if ( 0 <= x ) { + for ( int i = 1; i <= x; ++i ) + res *= 10.0; + } else { + for ( int i = -1; i >= x; --i ) + res *= 0.1; + } + return res; +} + +#ifdef Q_OS_WIN +#define trunc(x) ((int)(x)) +#endif + +DataDimension CartesianGrid::calculateGridXY( + const DataDimension& rawDataDimension, + Qt::Orientation orientation, + bool adjustLower, bool adjustUpper ) const +{ + CartesianCoordinatePlane* const plane = dynamic_cast( mPlane ); + if ( ( orientation == Qt::Vertical && plane->autoAdjustVerticalRangeToData() >= 100 ) || + ( orientation == Qt::Horizontal && plane->autoAdjustHorizontalRangeToData() >= 100 ) ) { + adjustLower = false; + adjustUpper = false; + } + + DataDimension dim( rawDataDimension ); + if ( dim.isCalculated && dim.start != dim.end ) { + if ( dim.calcMode == AbstractCoordinatePlane::Linear ) { + // linear ( == not-logarithmic) calculation + if ( dim.stepWidth == 0.0 ) { + QList granularities; + switch ( dim.sequence ) { + case KDChartEnums::GranularitySequence_10_20: + granularities << 1.0 << 2.0; + break; + case KDChartEnums::GranularitySequence_10_50: + granularities << 1.0 << 5.0; + break; + case KDChartEnums::GranularitySequence_25_50: + granularities << 2.5 << 5.0; + break; + case KDChartEnums::GranularitySequence_125_25: + granularities << 1.25 << 2.5; + break; + case KDChartEnums::GranularitySequenceIrregular: + granularities << 1.0 << 1.25 << 2.0 << 2.5 << 5.0; + break; + } + //qDebug("CartesianGrid::calculateGridXY() dim.start: %f dim.end: %f", dim.start, dim.end); + calculateStepWidth( + dim.start, dim.end, granularities, orientation, + dim.stepWidth, dim.subStepWidth, + adjustLower, adjustUpper ); + } + // if needed, adjust start/end to match the step width: + //qDebug() << "CartesianGrid::calculateGridXY() has 1st linear range: min " << dim.start << " and max" << dim.end; + + AbstractGrid::adjustLowerUpperRange( dim.start, dim.end, dim.stepWidth, + adjustLower, adjustUpper ); + //qDebug() << "CartesianGrid::calculateGridXY() returns linear range: min " << dim.start << " and max" << dim.end; + } else { + // logarithmic calculation with negative values + if ( dim.end <= 0 ) + { + qreal min; + const qreal minRaw = qMin( dim.start, dim.end ); + const int minLog = -static_cast(trunc( log10( -minRaw ) ) ); + if ( minLog >= 0 ) + min = qMin( minRaw, -std::numeric_limits< qreal >::epsilon() ); + else + min = -fastPow10( -(minLog-1) ); + + qreal max; + const qreal maxRaw = qMin( -std::numeric_limits< qreal >::epsilon(), qMax( dim.start, dim.end ) ); + const int maxLog = -static_cast(ceil( log10( -maxRaw ) ) ); + if ( maxLog >= 0 ) + max = -1; + else if ( fastPow10( -maxLog ) < maxRaw ) + max = -fastPow10( -(maxLog+1) ); + else + max = -fastPow10( -maxLog ); + if ( adjustLower ) + dim.start = min; + if ( adjustUpper ) + dim.end = max; + dim.stepWidth = -pow( 10.0, ceil( log10( qAbs( max - min ) / 10.0 ) ) ); + } + // logarithmic calculation (ignoring all negative values) + else + { + qreal min; + const qreal minRaw = qMax( qMin( dim.start, dim.end ), qreal( 0.0 ) ); + const int minLog = static_cast(trunc( log10( minRaw ) ) ); + if ( minLog <= 0 && dim.end < 1.0 ) + min = qMax( minRaw, std::numeric_limits< qreal >::epsilon() ); + else if ( minLog <= 0 ) + min = qMax( qreal(0.00001), dim.start ); + else + min = fastPow10( minLog-1 ); + + // Uh oh. Logarithmic scaling doesn't work with a lower or upper + // bound being 0. + const bool zeroBound = dim.start == 0.0 || dim.end == 0.0; + + qreal max; + const qreal maxRaw = qMax( qMax( dim.start, dim.end ), qreal( 0.0 ) ); + const int maxLog = static_cast(ceil( log10( maxRaw ) ) ); + if ( maxLog <= 0 ) + max = 1; + else if ( fastPow10( maxLog ) < maxRaw ) + max = fastPow10( maxLog+1 ); + else + max = fastPow10( maxLog ); + if ( adjustLower || zeroBound ) + dim.start = min; + if ( adjustUpper || zeroBound ) + dim.end = max; + dim.stepWidth = pow( 10.0, ceil( log10( qAbs( max - min ) / 10.0 ) ) ); + } + } + } else { + //qDebug() << "CartesianGrid::calculateGridXY() returns stepWidth 1.0 !!"; + // Do not ignore the user configuration + dim.stepWidth = dim.stepWidth ? dim.stepWidth : 1.0; + } + return dim; +} + + +static void calculateSteps( + qreal start_, qreal end_, const QList& list, + int minSteps, int maxSteps, + int power, + qreal& steps, qreal& stepWidth, + bool adjustLower, bool adjustUpper ) +{ + //qDebug("-----------------------------------\nstart: %f end: %f power-of-ten: %i", start_, end_, power); + + qreal distance = 0.0; + steps = 0.0; + + const int lastIdx = list.count()-1; + for ( int i = 0; i <= lastIdx; ++i ) { + const qreal testStepWidth = list.at(lastIdx - i) * fastPow10( power ); + //qDebug( "testing step width: %f", testStepWidth); + qreal start = qMin( start_, end_ ); + qreal end = qMax( start_, end_ ); + //qDebug("pre adjusting start: %f end: %f", start, end); + AbstractGrid::adjustLowerUpperRange( start, end, testStepWidth, adjustLower, adjustUpper ); + //qDebug("post adjusting start: %f end: %f", start, end); + + const qreal testDistance = qAbs(end - start); + const qreal testSteps = testDistance / testStepWidth; + + //qDebug() << "testDistance:" << testDistance << " distance:" << distance; + if ( (minSteps <= testSteps) && (testSteps <= maxSteps) + && ( (steps == 0.0) || (testDistance <= distance) ) ) { + steps = testSteps; + stepWidth = testStepWidth; + distance = testDistance; + //qDebug( "start: %f end: %f step width: %f steps: %f distance: %f", start, end, stepWidth, steps, distance); + } + } +} + + +void CartesianGrid::calculateStepWidth( + qreal start_, qreal end_, + const QList& granularities, + Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, + bool adjustLower, bool adjustUpper ) const +{ + Q_UNUSED( orientation ); + + Q_ASSERT_X ( granularities.count(), "CartesianGrid::calculateStepWidth", + "Error: The list of GranularitySequence values is empty." ); + QList list( granularities ); + qSort( list ); + + const qreal start = qMin( start_, end_); + const qreal end = qMax( start_, end_); + const qreal distance = end - start; + //qDebug( "raw data start: %f end: %f", start, end); + + qreal steps; + int power = 0; + while ( list.last() * fastPow10( power ) < distance ) { + ++power; + }; + // We have the sequence *two* times in the calculation test list, + // so we will be sure to find the best match: + const int count = list.count(); + QList testList; + + for ( int dec = -1; dec == -1 || fastPow10( dec + 1 ) >= distance; --dec ) + for ( int i = 0; i < count; ++i ) + testList << list.at(i) * fastPow10( dec ); + + testList << list; + + do { + calculateSteps( start, end, testList, m_minsteps, m_maxsteps, power, + steps, stepWidth, + adjustLower, adjustUpper ); + --power; + } while ( steps == 0.0 ); + ++power; + //qDebug( "steps calculated: stepWidth: %f steps: %f", stepWidth, steps); + + // find the matching sub-grid line width in case it is + // not set by the user + + if ( subStepWidth == 0.0 ) { + if ( stepWidth == list.first() * fastPow10( power ) ) { + subStepWidth = list.last() * fastPow10( power-1 ); + //qDebug("A"); + } else if ( stepWidth == list.first() * fastPow10( power-1 ) ) { + subStepWidth = list.last() * fastPow10( power-2 ); + //qDebug("B"); + } else { + qreal smallerStepWidth = list.first(); + for ( int i = 1; i < list.count(); ++i ) { + if ( stepWidth == list.at( i ) * fastPow10( power ) ) { + subStepWidth = smallerStepWidth * fastPow10( power ); + break; + } + if ( stepWidth == list.at( i ) * fastPow10( power-1 ) ) { + subStepWidth = smallerStepWidth * fastPow10( power-1 ); + break; + } + smallerStepWidth = list.at( i ); + } + } + } + //qDebug("CartesianGrid::calculateStepWidth() found stepWidth %f (%f steps) and sub-stepWidth %f", stepWidth, steps, subStepWidth); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.h new file mode 100644 index 00000000..a1f17081 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartCartesianGrid.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCARTESIANGRID_H +#define KDCHARTCARTESIANGRID_H + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class CartesianCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a cartesian plane. + * + * The CartesianGrid interface is used + * for calculating and for drawing + * the horizonal grid lines, and the vertical grid lines + * of a cartesian coordinate plane. + */ + class CartesianGrid : public AbstractGrid + { + public: + CartesianGrid(); + virtual ~CartesianGrid(); + + int minimalSteps() const; + void setMinimalSteps(int minsteps); + + int maximalSteps() const; + void setMaximalSteps(int maxsteps); + + void drawGrid( PaintContext* context ); + + private: + int m_minsteps; + int m_maxsteps; + + DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + + /** + * Helper function called by calculateGrid() to calculate the grid of one dimension. + * + * Classes derived from CartesianGrid can overwrite calculateGridXY() if they need + * a special way of calculating the start or end or step width of their grid lines. + * + * \param adjustLower If true, the function adjusts the start value + * so it matches the position of a grid line, if false the start value is + * the raw data dimension start value. + * \param adjustUpper If true, the function adjusts the end value + * so it matches the position of a grid line, if false the end value is + * the raw data dimension end value. + */ + virtual DataDimension calculateGridXY( + const DataDimension& rawDataDimension, + Qt::Orientation orientation, + bool adjustLower, bool adjustUpper ) const; + + /** + * Helper function called by calculateGridXY(). + * + * Classes derived from CartesianGrid can overwrite calculateStepWidth() if they need + * a way of calculating the step width, based upon given start/end values + * for their horizontal or vertical grid lines which is different from the default + * implementation. + * + * \note The CartesianGrid class tries to keep the displayed range as close to + * the raw data range as possible, so in most cases there should be no reason + * to change the default implementation: Using + * KDChart::GridAttributes::setGridGranularitySequence() should be sufficient. + * + * \param start The raw start value of the data range. + * \param end The raw end value of the data range. + * \param granularities The list of allowed granularities. + * \param adjustLower If true, the function adjusts the start value + * so it matches the position of a grid line, if false the start value is + * left as it is, in any case the value is adjusted for internal calculation only. + * \param adjustUpper If true, the function adjusts the end value + * so it matches the position of a grid line, if false the end value is + * left as it is, in any case the value is adjusted for internal calculation only. + * + * \returns stepWidth: One of the values from the granularities + * list, optionally multiplied by a positive (or negative, resp.) + * power of ten. subStepWidth: The matching width for sub-grid lines. + */ + virtual void calculateStepWidth( + qreal start, qreal end, + const QList& granularities, + Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, + bool adjustLower, bool adjustUpper ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.cpp new file mode 100644 index 00000000..38f61e3d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.cpp @@ -0,0 +1,277 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsAxis.h" +#include "KDChartLeveyJenningsAxis_p.h" + +#include +#include + +#include "KDChartPaintContext.h" +#include "KDChartChart.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartLayoutItems.h" +#include "KDChartPrintingParameters.h" + +#include + +#include + +using namespace KDChart; + +#define d (d_func()) + +LeveyJenningsAxis::LeveyJenningsAxis ( LeveyJenningsDiagram* diagram ) + : CartesianAxis ( new Private( diagram, this ), diagram ) +{ + init(); +} + +LeveyJenningsAxis::~LeveyJenningsAxis () +{ + // when we remove the first axis it will unregister itself and + // propagate the next one to the primary, thus the while loop + while ( d->mDiagram ) { + LeveyJenningsDiagram *cd = qobject_cast< LeveyJenningsDiagram* >( d->mDiagram ); + cd->takeAxis( this ); + } + Q_FOREACH( AbstractDiagram *diagram, d->secondaryDiagrams ) { + LeveyJenningsDiagram *cd = qobject_cast< LeveyJenningsDiagram* >( diagram ); + cd->takeAxis( this ); + } +} + +void LeveyJenningsAxis::init () +{ + setType( LeveyJenningsGridAttributes::Expected ); + setDateFormat( Qt::TextDate ); + const QStringList labels = QStringList() << tr( "-3sd" ) << tr( "-2sd" ) << tr( "mean" ) + << tr( "+2sd" ) << tr( "+3sd" ); + + setLabels( labels ); +} + +/** + * @return The axis' type. + */ +LeveyJenningsGridAttributes::GridType LeveyJenningsAxis::type() const +{ + return d->type; +} + +/** + * Sets the type of the axis to \a type. + * This method colors the label to the default color of the + * respective type. + * Please make sure to re-set the colors after calling this, + * if you want them different. + * Setting the type is only valid for axes located right or left + * from the diagram. An axis on the bottom always shows the timeline. + */ +void LeveyJenningsAxis::setType( LeveyJenningsGridAttributes::GridType type ) +{ + if ( type != d->type ) + { + TextAttributes ta = textAttributes(); + QPen pen = ta.pen(); + QColor color = type == LeveyJenningsGridAttributes::Expected ? Qt::black : Qt::blue; + if ( qobject_cast< const LeveyJenningsDiagram* >( d->diagram() ) && + qobject_cast< const LeveyJenningsCoordinatePlane* >( d->diagram()->coordinatePlane() ) ) + { + color = qobject_cast< const LeveyJenningsCoordinatePlane* >( d->diagram()->coordinatePlane() )->gridAttributes().gridPen( type ).color(); + } + pen.setColor( color ); + ta.setPen( pen ); + setTextAttributes( ta ); + } + d->type = type; +} + +Qt::DateFormat LeveyJenningsAxis::dateFormat() const +{ + return d->format; +} + +void LeveyJenningsAxis::setDateFormat(Qt::DateFormat format) +{ + d->format = format; +} + +bool LeveyJenningsAxis::compare( const LeveyJenningsAxis* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + //qDebug() << "CartesianAxis::compare() cannot compare to Null pointer"; + return false; + } + return ( static_cast(this)->compare( other ) ) && + ( type() == other->type() ); +} + +void LeveyJenningsAxis::paintCtx( PaintContext* context ) +{ + + Q_ASSERT_X ( d->diagram(), "LeveyJenningsAxis::paint", + "Function call not allowed: The axis is not assigned to any diagram." ); + + LeveyJenningsCoordinatePlane* plane = dynamic_cast(context->coordinatePlane()); + Q_ASSERT_X ( plane, "LeveyJenningsAxis::paint", + "Bad function call: PaintContext::coodinatePlane() NOT a levey jennings plane." ); + Q_UNUSED(plane); + // note: Not having any data model assigned is no bug + // but we can not draw an axis then either. + if ( ! d->diagram()->model() ) + return; + + if ( isOrdinate() ) + paintAsOrdinate( context ); + else + paintAsAbscissa( context ); +} + +void LeveyJenningsAxis::paintAsOrdinate( PaintContext* context ) +{ + const LeveyJenningsDiagram* const diag = dynamic_cast< const LeveyJenningsDiagram* >( d->diagram() ); + + Q_ASSERT( isOrdinate() ); + LeveyJenningsCoordinatePlane* plane = dynamic_cast(context->coordinatePlane()); + + const qreal meanValue = type() == LeveyJenningsGridAttributes::Expected ? diag->expectedMeanValue() + : diag->calculatedMeanValue(); + const qreal standardDeviation = type() == LeveyJenningsGridAttributes::Expected ? diag->expectedStandardDeviation() + : diag->calculatedStandardDeviation(); + const TextAttributes labelTA = textAttributes(); + const bool drawLabels = labelTA.isVisible(); + + // nothing to draw, since we've no ticks + if ( !drawLabels ) + return; + + const QObject* referenceArea = plane->parent(); + + const QVector< qreal > values = QVector< qreal >() << ( meanValue - 3 * standardDeviation ) + << ( meanValue - 2 * standardDeviation ) + << ( meanValue ) + << ( meanValue + 2 * standardDeviation ) + << ( meanValue + 3 * standardDeviation ); + + Q_ASSERT_X( values.count() <= labels().count(), "LeveyJenningsAxis::paintAsOrdinate", "Need to have at least 5 labels" ); + + TextLayoutItem labelItem( tr( "mean" ), + labelTA, + referenceArea, + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignLeft ); + + QPainter* const painter = context->painter(); + const PainterSaver ps( painter ); + painter->setRenderHint( QPainter::Antialiasing, true ); + painter->setClipping( false ); + + painter->setPen ( PrintingParameters::scalePen( labelTA.pen() ) ); // perhaps we want to add a setter method later? + + for ( int i = 0; i < values.count(); ++i ) + { + const QPointF labelPos = plane->translate( QPointF( 0.0, values.at( i ) ) ); + const QString label = customizedLabel( labels().at( i ) ); + labelItem.setText( label ); + const QSize size = labelItem.sizeHint(); + const float xPos = position() == Left ? geometry().right() - size.width() : geometry().left(); + labelItem.setGeometry( QRectF( QPointF( xPos, labelPos.y() - size.height() / 2.0 ), size ).toRect() ); + + // don't draw labels which aren't in the valid range (might happen for calculated SDs) + if ( values.at( i ) > diag->expectedMeanValue() + 4 * diag->expectedStandardDeviation() ) + continue; + + if ( values.at( i ) < diag->expectedMeanValue() - 4 * diag->expectedStandardDeviation() ) + continue; + + labelItem.paint( painter ); + } +} + +void LeveyJenningsAxis::paintAsAbscissa( PaintContext* context ) +{ + Q_ASSERT( isAbscissa() ); + + // this triggers drawing of the ticks + setLabels( QStringList() << QString::fromLatin1( " " ) ); + CartesianAxis::paintCtx( context ); + + const LeveyJenningsDiagram* const diag = dynamic_cast< const LeveyJenningsDiagram* >( d->diagram() ); + LeveyJenningsCoordinatePlane* plane = dynamic_cast(context->coordinatePlane()); + + const QObject* referenceArea = plane->parent(); + const TextAttributes labelTA = textAttributes(); + + const bool drawLabels = labelTA.isVisible(); + + if ( !drawLabels ) + return; + + + const QPair< QDateTime, QDateTime > range = diag->timeRange(); + + QPainter* const painter = context->painter(); + const PainterSaver ps( painter ); + painter->setRenderHint( QPainter::Antialiasing, true ); + painter->setClipping( false ); + + + TextLayoutItem labelItem( range.first.date().toString( dateFormat() ), + labelTA, + referenceArea, + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignLeft ); + QSize origSize = labelItem.sizeHint(); + if ( range.first.secsTo( range.second ) < 86400 ) + labelItem = TextLayoutItem( range.first.toString( dateFormat() ), + labelTA, + referenceArea, + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignLeft ); + QSize size = labelItem.sizeHint(); + + float yPos = position() == Bottom ? geometry().bottom() - size.height() : geometry().top(); + labelItem.setGeometry( QRectF( QPointF( geometry().left() - origSize.width() / 2.0, yPos ), size ).toRect() ); + labelItem.paint( painter ); + + + TextLayoutItem labelItem2( range.second.date().toString( dateFormat() ), + labelTA, + referenceArea, + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignLeft ); + origSize = labelItem2.sizeHint(); + if ( range.first.secsTo( range.second ) < 86400 ) + labelItem2 = TextLayoutItem( range.second.toString( dateFormat() ), + labelTA, + referenceArea, + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignLeft ); + size = labelItem2.sizeHint(); + yPos = position() == Bottom ? geometry().bottom() - size.height() : geometry().top(); + labelItem2.setGeometry( QRectF( QPointF( geometry().right() - size.width() + origSize.width() / 2.0, yPos ), size ).toRect() ); + labelItem2.paint( painter ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.h new file mode 100644 index 00000000..2213e887 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSAXIS_H +#define KDCHARTLEVEYJENNINGSAXIS_H + +#include + +#include "KDChartCartesianAxis.h" + +#include "KDChartLeveyJenningsGridAttributes.h" + +namespace KDChart { + + class LeveyJenningsDiagram; + + /** + * The class for levey jennings axes. + * + * For being useful, axes need to be assigned to a diagram, see + * LeveyJenningsDiagram::addAxis and LeveyJenningsDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT LeveyJenningsAxis : public CartesianAxis + { + Q_OBJECT + + Q_DISABLE_COPY( LeveyJenningsAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LeveyJenningsAxis, AbstractDiagram* ) + + public: + /** + * C'tor of the class for levey jennings axes. + * + * \note If using a zero parent for the constructor, you need to call + * your diagram's addAxis function to add your axis to the diagram. + * Otherwise, there is no need to call addAxis, since the constructor + * does that automatically for you, if you pass a diagram as parameter. + * + * \sa AbstractCartesianDiagram::addAxis + */ + explicit LeveyJenningsAxis ( LeveyJenningsDiagram* diagram = 0 ); + ~LeveyJenningsAxis(); + + LeveyJenningsGridAttributes::GridType type() const; + void setType( LeveyJenningsGridAttributes::GridType type ); + + Qt::DateFormat dateFormat() const; + void setDateFormat( Qt::DateFormat format ); + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const LeveyJenningsAxis* other ) const; + + /** reimpl */ + void paintCtx( PaintContext* ); + + protected: + virtual void paintAsOrdinate( PaintContext* ); + + virtual void paintAsAbscissa( PaintContext* ); + }; + + typedef QList LeveyJenningsAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis_p.h new file mode 100644 index 00000000..a0ae4881 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsAxis_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSAXIS_P_H +#define KDCHARTLEVEYJENNINGSAXIS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartLeveyJenningsAxis.h" +#include "KDChartLeveyJenningsDiagram.h" +#include "KDChartCartesianAxis_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class LeveyJenningsAxis::Private : public CartesianAxis::Private +{ + friend class LeveyJenningsAxis; + +public: + Private( LeveyJenningsDiagram* diagram, LeveyJenningsAxis* axis ) + : CartesianAxis::Private( diagram, axis ) + , type( LeveyJenningsGridAttributes::Expected ) + , format( Qt::ISODate ) + {} + ~Private() {} + +private: + LeveyJenningsGridAttributes::GridType type; + Qt::DateFormat format; +}; + +inline LeveyJenningsAxis::LeveyJenningsAxis( Private * p, AbstractDiagram* diagram ) + : CartesianAxis( p, diagram ) +{ + init(); +} +inline LeveyJenningsAxis::Private * LeveyJenningsAxis::d_func() +{ return static_cast( CartesianAxis::d_func() ); } +inline const LeveyJenningsAxis::Private * LeveyJenningsAxis::d_func() const +{ return static_cast( CartesianAxis::d_func() ); } + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.cpp new file mode 100644 index 00000000..a98b8b64 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsCoordinatePlane.h" +#include "KDChartLeveyJenningsCoordinatePlane_p.h" + +#include +#include + +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartCartesianAxis.h" +#include "KDChartLeveyJenningsDiagram.h" + +using namespace KDChart; + +#define d d_func() + +LeveyJenningsCoordinatePlane::Private::Private() + : CartesianCoordinatePlane::Private() +{ +} + +LeveyJenningsCoordinatePlane::LeveyJenningsCoordinatePlane( Chart* parent ) + : CartesianCoordinatePlane( new Private(), parent ) +{ +} + +LeveyJenningsCoordinatePlane::~LeveyJenningsCoordinatePlane() +{ +} + +void LeveyJenningsCoordinatePlane::init() +{ +} + +void LeveyJenningsCoordinatePlane::addDiagram( AbstractDiagram* diagram ) +{ + Q_ASSERT_X ( dynamic_cast( diagram ), + "LeveyJenningsCoordinatePlane::addDiagram", "Only Levey Jennings " + "diagrams can be added to a ternary coordinate plane!" ); + CartesianCoordinatePlane::addDiagram ( diagram ); +} + +LeveyJenningsGrid* LeveyJenningsCoordinatePlane::grid() const +{ + LeveyJenningsGrid* leveyJenningsGrid = static_cast( d->grid ); + Q_ASSERT( dynamic_cast( d->grid ) ); + return leveyJenningsGrid; +} + +LeveyJenningsGridAttributes LeveyJenningsCoordinatePlane::gridAttributes() const +{ + return d->gridAttributes; +} + +void LeveyJenningsCoordinatePlane::setGridAttributes( const LeveyJenningsGridAttributes& attr ) +{ + d->gridAttributes = attr; +} + +const QPointF LeveyJenningsCoordinatePlane::translateBack( const QPointF& screenPoint ) const +{ + return CartesianCoordinatePlane::translateBack( screenPoint ); +} + +#undef d diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.h new file mode 100644 index 00000000..f473ecd2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSCOORDINATEPLANE_H +#define KDCHARTLEVEYJENNINGSCOORDINATEPLANE_H + +#include "KDChartCartesianCoordinatePlane.h" + +#include "KDChartLeveyJenningsGridAttributes.h" + +namespace KDChart { + + class LeveyJenningsGrid; + + /** + * @brief Levey Jennings coordinate plane + * This is actually nothing real more than a plain cartesian + * coordinate plane. The difference is, that only Levey Jennings + * Diagrams can be added to it. + */ + class KDCHART_EXPORT LeveyJenningsCoordinatePlane + : public CartesianCoordinatePlane + { + Q_OBJECT + Q_DISABLE_COPY( LeveyJenningsCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LeveyJenningsCoordinatePlane, Chart* ) + + friend class LeveyJenningsGrid; + + public: + explicit LeveyJenningsCoordinatePlane( Chart* parent = 0 ); + ~LeveyJenningsCoordinatePlane(); + + void addDiagram( AbstractDiagram* diagram ); + + LeveyJenningsGridAttributes gridAttributes() const; + void setGridAttributes( const LeveyJenningsGridAttributes& attr ); + + protected: + const QPointF translateBack( const QPointF& screenPoint ) const; + + private: + LeveyJenningsGrid* grid() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane_p.h new file mode 100644 index 00000000..98d84d82 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsCoordinatePlane_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSCOORDINATEPLANE_P_H +#define KDCHARTLEVEYJENNINGSCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "KDChartLeveyJenningsGrid.h" +#include "KDChartCartesianCoordinatePlane_p.h" + +#include + +namespace KDChart { + + class CartesianAxis; + + /** + * \internal + */ + + class LeveyJenningsCoordinatePlane::Private : public CartesianCoordinatePlane::Private + { + friend class LeveyJenningsCoordinatePlane; + + public: + explicit Private(); + + virtual ~Private() { + // grid is delete in base class dtor + } + + virtual void initialize() + { + grid = new LeveyJenningsGrid(); + } + + LeveyJenningsGridAttributes gridAttributes; + }; + + KDCHART_IMPL_DERIVED_PLANE(LeveyJenningsCoordinatePlane, CartesianCoordinatePlane) +} + +#endif /* KDCHARTTERNARYCOORDINATEPLANE_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.cpp new file mode 100644 index 00000000..56824c54 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.cpp @@ -0,0 +1,737 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsDiagram.h" +#include "KDChartLeveyJenningsDiagram_p.h" + +#include "KDChartChart.h" +#include "KDChartTextAttributes.h" +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" + +#include +#include +#include +#include +#include + +#include + +using namespace KDChart; +using namespace std; + +LeveyJenningsDiagram::Private::Private() +{ +} + +LeveyJenningsDiagram::Private::~Private() {} + + +#define d d_func() + + +LeveyJenningsDiagram::LeveyJenningsDiagram( QWidget* parent, LeveyJenningsCoordinatePlane* plane ) + : LineDiagram( new Private(), parent, plane ) +{ + init(); +} + +void LeveyJenningsDiagram::init() +{ + d->lotChangedPosition = Qt::AlignTop; + d->fluidicsPackChangedPosition = Qt::AlignBottom; + d->sensorChangedPosition = Qt::AlignBottom; + + d->scanLinePen = QPen( Qt::blue ); + setPen( d->scanLinePen ); + + d->expectedMeanValue = 0.0; + d->expectedStandardDeviation = 0.0; + + d->diagram = this; + + d->icons[ LotChanged ] = QString::fromLatin1( ":/KDAB/kdchart/LeveyJennings/karo_black.svg" ); + d->icons[ SensorChanged ] = QString::fromLatin1( ":/KDAB/kdchart/LeveyJennings/karo_red.svg" ); + d->icons[ FluidicsPackChanged ] = QString::fromLatin1( ":/KDAB/kdchart/LeveyJennings/karo_blue.svg" ); + d->icons[ OkDataPoint ] = QString::fromLatin1( ":/KDAB/kdchart/LeveyJennings/circle_blue.svg" ); + d->icons[ NotOkDataPoint ] = QString::fromLatin1( ":/KDAB/kdchart/LeveyJennings/circle_blue_red.svg" ); + + setSelectionMode( QAbstractItemView::SingleSelection ); +} + +LeveyJenningsDiagram::~LeveyJenningsDiagram() +{ +} + +/** + * Creates an exact copy of this diagram. + */ +LineDiagram * LeveyJenningsDiagram::clone() const +{ + LeveyJenningsDiagram* newDiagram = new LeveyJenningsDiagram( new Private( *d ) ); + return newDiagram; +} + +bool LeveyJenningsDiagram::compare( const LeveyJenningsDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + return false; + } + /* + qDebug() <<"\n LineDiagram::compare():"; + // compare own properties + qDebug() << (type() == other->type()); + */ + return // compare the base class + ( static_cast(this)->compare( other ) ); +} + +/** + * Sets the position of the lot change symbol to \a pos. + * Valid values are: Qt::AlignTop (default), Qt::AlignBottom. + */ +void LeveyJenningsDiagram::setLotChangedSymbolPosition( Qt::Alignment pos ) +{ + if ( d->lotChangedPosition == pos ) + return; + + d->lotChangedPosition = pos; + update(); +} + +/** + * Returns the position of the lot change symbol. + */ +Qt::Alignment LeveyJenningsDiagram::lotChangedSymbolPosition() const +{ + return d->lotChangedPosition; +} + +/** + * Sets the position of the fluidics pack changed symbol to \a pos. + * Valid values are: Qt::AlignBottom (default), Qt::AlignTop. + */ +void LeveyJenningsDiagram::setFluidicsPackChangedSymbolPosition( Qt::Alignment pos ) +{ + if ( d->fluidicsPackChangedPosition == pos ) + return; + + d->fluidicsPackChangedPosition = pos; + update(); +} + +/** + * Returns the position of the fluidics pack changed symbol. + */ +Qt::Alignment LeveyJenningsDiagram::fluidicsPackChangedSymbolPosition() const +{ + return d->fluidicsPackChangedPosition; +} + +/** + * Sets the position of the sensor changed symbol to \a pos. + * Valid values are: Qt::AlignBottom (default), Qt::AlignTop. + */ +void LeveyJenningsDiagram::setSensorChangedSymbolPosition( Qt::Alignment pos ) +{ + if ( d->sensorChangedPosition == pos ) + return; + + d->sensorChangedPosition = pos; + update(); +} + +/** + * Returns the position of the sensor changed symbol. + */ +Qt::Alignment LeveyJenningsDiagram::sensorChangedSymbolPosition() const +{ + return d->sensorChangedPosition; +} + +/** + * Sets the date/time of all fluidics pack changes to \a changes. + */ +void LeveyJenningsDiagram::setFluidicsPackChanges( const QVector< QDateTime >& changes ) +{ + if ( d->fluidicsPackChanges == changes ) + return; + + d->fluidicsPackChanges = changes; + update(); +} + +/** + * Returns the list of all fluidics pack changes. + */ +QVector< QDateTime > LeveyJenningsDiagram::fluidicsPackChanges() const +{ + return d->fluidicsPackChanges; +} + +/** + * Sets the date/time of all sensor changes to \a changes. + */ +void LeveyJenningsDiagram::setSensorChanges( const QVector< QDateTime >& changes ) +{ + if ( d->sensorChanges == changes ) + return; + + d->sensorChanges = changes; + update(); +} + +/** + * Sets the pen used for drawing the scan line to \a pen + */ +void LeveyJenningsDiagram::setScanLinePen( const QPen& pen ) +{ + if ( d->scanLinePen == pen ) + return; + + d->scanLinePen = pen; + update(); +} + +/** + * Returns the pen being used for drawing the scan line. + */ +QPen LeveyJenningsDiagram::scanLinePen() const +{ + return d->scanLinePen; +} + +/** + * Returns the SVG file name usef for \a symbol + */ +QString LeveyJenningsDiagram::symbol( Symbol symbol ) const +{ + return d->icons[ symbol ]; +} + +/** + * Sets the symbol being used for \a symbol to a SVG file \a filename. + */ +void LeveyJenningsDiagram::setSymbol( Symbol symbol, const QString& filename ) +{ + if ( d->icons[ symbol ] == filename ) + return; + + delete d->iconRenderer[ symbol ]; + d->iconRenderer[ symbol ] = 0; + + d->icons[ symbol ] = filename; + + update(); +} + +/** + * Returns the list of all sensor changes. + */ +QVector< QDateTime > LeveyJenningsDiagram::sensorChanges() const +{ + return d->sensorChanges; +} + +/** + * Sets the expected mean value over all QC values to \a meanValue. + */ +void LeveyJenningsDiagram::setExpectedMeanValue( float meanValue ) +{ + if ( d->expectedMeanValue == meanValue ) + return; + + d->expectedMeanValue = meanValue; + d->setYAxisRange(); + update(); +} + +/** + * Returns the expected mean values over all QC values. + */ +float LeveyJenningsDiagram::expectedMeanValue() const +{ + return d->expectedMeanValue; +} + +/** + * Sets the expected standard deviaction over all QC values to \a sd. + */ +void LeveyJenningsDiagram::setExpectedStandardDeviation( float sd ) +{ + if ( d->expectedStandardDeviation == sd ) + return; + + d->expectedStandardDeviation = sd; + d->setYAxisRange(); + update(); +} + +/** + * Returns the expected standard deviation over all QC values. + */ +float LeveyJenningsDiagram::expectedStandardDeviation() const +{ + return d->expectedStandardDeviation; +} + +/** + * Returns the calculated mean values over all QC values. + */ +float LeveyJenningsDiagram::calculatedMeanValue() const +{ + return d->calculatedMeanValue; +} + +/** + * Returns the calculated standard deviation over all QC values. + */ +float LeveyJenningsDiagram::calculatedStandardDeviation() const +{ + return d->calculatedStandardDeviation; +} + +void LeveyJenningsDiagram::setModel( QAbstractItemModel* model ) +{ + if ( this->model() != 0 ) + { + disconnect( this->model(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex& ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( modelReset() ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + disconnect( this->model(), SIGNAL( layoutChanged() ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + } + LineDiagram::setModel( model ); + if ( this->model() != 0 ) + { + connect( this->model(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex& ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( modelReset() ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + connect( this->model(), SIGNAL( layoutChanged() ), + this, SLOT( calculateMeanAndStandardDeviation() ) ); + + calculateMeanAndStandardDeviation(); + } +} + +// TODO: This is the 'easy' solution +// evaluate whether this is enough or we need some better one or even boost here +void LeveyJenningsDiagram::calculateMeanAndStandardDeviation() const +{ + QVector< qreal > values; + // first fetch all values + const QAbstractItemModel& m = *model(); + const int rowCount = m.rowCount( rootIndex() ); + + for ( int row = 0; row < rowCount; ++row ) + { + const QVariant var = m.data( m.index( row, 1, rootIndex() ) ); + if ( !var.isValid() ) + continue; + const qreal value = var.toReal(); + if ( ISNAN( value ) ) + continue; + values << value; + } + + qreal sum = 0.0; + qreal sumSquares = 0.0; + KDAB_FOREACH( qreal value, values ) + { + sum += value; + sumSquares += value * value; + } + + const int N = values.count(); + + d->calculatedMeanValue = sum / N; + d->calculatedStandardDeviation = sqrt( ( static_cast< qreal >( N ) * sumSquares - sum * sum ) / ( N * ( N - 1 ) ) ); +} + +// calculates the largest QDate not greater than \a dt. +static QDate floorDay( const QDateTime& dt ) +{ + return dt.date(); +} + +// calculates the smallest QDate not less than \a dt. +static QDate ceilDay( const QDateTime& dt ) +{ + QDate result = dt.date(); + + if ( QDateTime( result, QTime() ) < dt ) + result = result.addDays( 1 ); + + return result; +} + +// calculates the largest QDateTime like xx:00 not greater than \a dt. +static QDateTime floorHour( const QDateTime& dt ) +{ + return QDateTime( dt.date(), QTime( dt.time().hour(), 0 ) ); +} + +// calculates the smallest QDateTime like xx:00 not less than \a dt. +static QDateTime ceilHour( const QDateTime& dt ) +{ + QDateTime result( dt.date(), QTime( dt.time().hour(), 0 ) ); + + if ( result < dt ) + result = result.addSecs( 3600 ); + + return result; +} + +/** \reimpl */ +const QPair LeveyJenningsDiagram::calculateDataBoundaries() const +{ + const qreal yMin = d->expectedMeanValue - 4 * d->expectedStandardDeviation; + const qreal yMax = d->expectedMeanValue + 4 * d->expectedStandardDeviation; + + d->setYAxisRange(); + + // rounded down/up to the prev/next midnight (at least that's the default) + const QPair< QDateTime, QDateTime > range = timeRange(); + const unsigned int minTime = range.first.toTime_t(); + const unsigned int maxTime = range.second.toTime_t(); + + const qreal xMin = minTime / static_cast< qreal >( 24 * 60 * 60 ); + const qreal xMax = maxTime / static_cast< qreal >( 24 * 60 * 60 ) - xMin; + + const QPointF bottomLeft( QPointF( 0, yMin ) ); + const QPointF topRight( QPointF( xMax, yMax ) ); + + return QPair< QPointF, QPointF >( bottomLeft, topRight ); +} + +/** + * Returns the timerange of the diagram's data. + */ +QPair< QDateTime, QDateTime > LeveyJenningsDiagram::timeRange() const +{ + if ( d->timeRange != QPair< QDateTime, QDateTime >() ) + return d->timeRange; + + const QAbstractItemModel& m = *model(); + const int rowCount = m.rowCount( rootIndex() ); + + const QDateTime begin = m.data( m.index( 0, 3, rootIndex() ) ).toDateTime(); + const QDateTime end = m.data( m.index( rowCount - 1, 3, rootIndex() ) ).toDateTime(); + + if ( begin.secsTo( end ) > 86400 ) + { + // if begin to end is more than 24h + // round down/up to the prev/next midnight + const QDate min = floorDay( begin ); + const QDate max = ceilDay( end ); + return QPair< QDateTime, QDateTime >( QDateTime( min ), QDateTime( max ) ); + } + else if ( begin.secsTo( end ) > 3600 ) + { + // more than 1h: rond down up to the prex/next hour + // if begin to end is more than 24h + const QDateTime min = floorHour( begin ); + const QDateTime max = ceilHour( end ); + return QPair< QDateTime, QDateTime >( min, max ); + } + return QPair< QDateTime, QDateTime >( begin, end ); +} + +/** + * Sets the \a timeRange visible on the x axis. Set it to QPair< QDateTime, QDateTime >() + * to use the default auto calculation. + */ +void LeveyJenningsDiagram::setTimeRange( const QPair< QDateTime, QDateTime >& timeRange ) +{ + if ( d->timeRange == timeRange ) + return; + + d->timeRange = timeRange; + update(); +} + +/** + * Draws the fluidics pack and sensor changed symbols. + */ +void LeveyJenningsDiagram::drawChanges( PaintContext* ctx ) +{ + const unsigned int minTime = timeRange().first.toTime_t(); + + KDAB_FOREACH( const QDateTime& dt, d->fluidicsPackChanges ) + { + const qreal xValue = ( dt.toTime_t() - minTime ) / static_cast< qreal >( 24 * 60 * 60 ); + const QPointF point( xValue, 0.0 ); + drawFluidicsPackChangedSymbol( ctx, point ); + } + + KDAB_FOREACH( const QDateTime& dt, d->sensorChanges ) + { + const qreal xValue = ( dt.toTime_t() - minTime ) / static_cast< qreal >( 24 * 60 * 60 ); + const QPointF point( xValue, 0.0 ); + drawSensorChangedSymbol( ctx, point ); + } +} + +/** \reimpl */ +void LeveyJenningsDiagram::paint( PaintContext* ctx ) +{ + d->reverseMapper.clear(); + + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants( true ) ) return; + if ( !AbstractGrid::isBoundariesValid(dataBoundaries()) ) return; + + QPainter* const painter = ctx->painter(); + const PainterSaver p( painter ); + if ( model()->rowCount( rootIndex() ) == 0 || model()->columnCount( rootIndex() ) < 4 ) + return; // nothing to paint for us + + AbstractCoordinatePlane* const plane = ctx->coordinatePlane(); + ctx->setCoordinatePlane( plane->sharedAxisMasterPlane( painter ) ); + + const QAbstractItemModel& m = *model(); + const int rowCount = m.rowCount( rootIndex() ); + + const unsigned int minTime = timeRange().first.toTime_t(); + + painter->setRenderHint( QPainter::Antialiasing, true ); + + int prevLot = -1; + QPointF prevPoint; + bool hadMissingValue = false; + + for ( int row = 0; row < rowCount; ++row ) + { + const QModelIndex lotIndex = m.index( row, 0, rootIndex() ); + const QModelIndex valueIndex = m.index( row, 1, rootIndex() ); + const QModelIndex okIndex = m.index( row, 2, rootIndex() ); + const QModelIndex timeIndex = m.index( row, 3, rootIndex() ); + const QModelIndex expectedMeanIndex = m.index( row, 4, rootIndex() ); + const QModelIndex expectedSDIndex = m.index( row, 5, rootIndex() ); + + painter->setPen( pen( lotIndex ) ); + + QVariant vValue = m.data( valueIndex ); + qreal value = vValue.toReal(); + const int lot = m.data( lotIndex ).toInt(); + const bool ok = m.data( okIndex ).toBool(); + const QDateTime time = m.data( timeIndex ).toDateTime(); + const qreal xValue = ( time.toTime_t() - minTime ) / static_cast< qreal >( 24 * 60 * 60 ); + + QVariant vExpectedMean = m.data( expectedMeanIndex ); + const qreal expectedMean = vExpectedMean.toReal(); + QVariant vExpectedSD = m.data( expectedSDIndex ); + const qreal expectedSD = vExpectedSD.toReal(); + + QPointF point = ctx->coordinatePlane()->translate( QPointF( xValue, value ) ); + + if ( vValue.isNull() ) + { + hadMissingValue = true; + } + else + { + if ( !vExpectedMean.isNull() && !vExpectedSD.isNull() ) + { + // this calculates the 'logical' value relative to the expected mean and SD of this point + value -= expectedMean; + value /= expectedSD; + value *= d->expectedStandardDeviation; + value += d->expectedMeanValue; + point = ctx->coordinatePlane()->translate( QPointF( xValue, value ) ); + } + + if ( prevLot == lot ) + { + const QPen pen = painter->pen(); + QPen newPen = pen; + + if ( hadMissingValue ) + { + newPen.setDashPattern( QVector< qreal >() << 4.0 << 4.0 ); + } + + painter->setPen( newPen ); + painter->drawLine( prevPoint, point ); + painter->setPen( pen ); + // d->reverseMapper.addLine( valueIndex.row(), valueIndex.column(), prevPoint, point ); + } + else if ( row > 0 ) + { + drawLotChangeSymbol( ctx, QPointF( xValue, value ) ); + } + + if ( value <= d->expectedMeanValue + 4 * d->expectedStandardDeviation && + value >= d->expectedMeanValue - 4 * d->expectedStandardDeviation ) + { + const QPointF location( xValue, value ); + drawDataPointSymbol( ctx, location, ok ); + d->reverseMapper.addCircle( valueIndex.row(), + valueIndex.column(), + ctx->coordinatePlane()->translate( location ), + iconRect().size() ); + } + prevLot = lot; + prevPoint = point; + hadMissingValue = false; + } + + const QModelIndex current = selectionModel()->currentIndex(); + if ( selectionModel()->rowIntersectsSelection( lotIndex.row(), lotIndex.parent() ) || current.sibling( current.row(), 0 ) == lotIndex ) + { + const QPen pen = ctx->painter()->pen(); + painter->setPen( d->scanLinePen ); + painter->drawLine( ctx->coordinatePlane()->translate( QPointF( xValue, d->expectedMeanValue - 4 * + d->expectedStandardDeviation ) ), + ctx->coordinatePlane()->translate( QPointF( xValue, d->expectedMeanValue + 4 * + d->expectedStandardDeviation ) ) ); + painter->setPen( pen ); + } + } + + drawChanges( ctx ); + + ctx->setCoordinatePlane( plane ); +} + +/** + * Draws a data point symbol for the data point at \a pos. + * @param ok True, when the data point is ok, false otherwise (different symbol) + * @param ctx The PaintContext being used + */ +void LeveyJenningsDiagram::drawDataPointSymbol( PaintContext* ctx, const QPointF& pos, bool ok ) +{ + const Symbol type = ok ? OkDataPoint : NotOkDataPoint; + + QPainter* const painter = ctx->painter(); + const PainterSaver ps( painter ); + const QPointF transPos = ctx->coordinatePlane()->translate( pos ).toPoint(); + painter->translate( transPos ); + + painter->setClipping( false ); + iconRenderer( type )->render( painter, iconRect() ); +} + +/** + * Draws a lot changed symbol for the data point at \a pos. + * @param ctx The PaintContext being used + * \sa lotChangedSymbolPosition + */ +void LeveyJenningsDiagram::drawLotChangeSymbol( PaintContext* ctx, const QPointF& pos ) +{ + const QPointF transPos = ctx->coordinatePlane()->translate( + QPointF( pos.x(), d->lotChangedPosition & Qt::AlignTop ? d->expectedMeanValue + + 4 * d->expectedStandardDeviation + : d->expectedMeanValue - + 4 * d->expectedStandardDeviation ) ); + + + QPainter* const painter = ctx->painter(); + const PainterSaver ps( painter ); + painter->setClipping( false ); + painter->translate( transPos ); + iconRenderer( LotChanged )->render( painter, iconRect() ); +} + +/** + * Draws a sensor changed symbol for the data point at \a pos. + * @param ctx The PaintContext being used + * \sa sensorChangedSymbolPosition + */ +void LeveyJenningsDiagram::drawSensorChangedSymbol( PaintContext* ctx, const QPointF& pos ) +{ + const QPointF transPos = ctx->coordinatePlane()->translate( + QPointF( pos.x(), d->sensorChangedPosition & Qt::AlignTop ? d->expectedMeanValue + + 4 * d->expectedStandardDeviation + : d->expectedMeanValue - + 4 * d->expectedStandardDeviation ) ); + + QPainter* const painter = ctx->painter(); + const PainterSaver ps( painter ); + painter->setClipping( false ); + painter->translate( transPos ); + iconRenderer( SensorChanged )->render( painter, iconRect() ); +} + +/** + * Draws a fluidics pack changed symbol for the data point at \a pos. + * @param ctx The PaintContext being used + * \sa fluidicsPackChangedSymbolPosition + */ +void LeveyJenningsDiagram::drawFluidicsPackChangedSymbol( PaintContext* ctx, const QPointF& pos ) +{ + const QPointF transPos = ctx->coordinatePlane()->translate( + QPointF( pos.x(), d->fluidicsPackChangedPosition & Qt::AlignTop ? d->expectedMeanValue + + 4 * d->expectedStandardDeviation + : d->expectedMeanValue - + 4 * d->expectedStandardDeviation ) ); + + QPainter* const painter = ctx->painter(); + const PainterSaver ps( painter ); + painter->setClipping( false ); + painter->translate( transPos ); + iconRenderer( FluidicsPackChanged )->render( painter, iconRect() ); +} + +/** + * Returns the rectangle being used for drawing the icons + */ +QRectF LeveyJenningsDiagram::iconRect() const +{ + const Measure m( 12.5, KDChartEnums::MeasureCalculationModeAuto, KDChartEnums::MeasureOrientationAuto ); + TextAttributes test; + test.setFontSize( m ); + const QFontMetrics fm( test.calculatedFont( coordinatePlane()->parent(), KDChartEnums::MeasureOrientationAuto ) ); + const qreal height = fm.height() / 1.2; + return QRectF( -height / 2.0, -height / 2.0, height, height ); +} + +/** + * Returns the SVG icon renderer for \a symbol + */ +QSvgRenderer* LeveyJenningsDiagram::iconRenderer( Symbol symbol ) +{ + if ( d->iconRenderer[ symbol ] == 0 ) + d->iconRenderer[ symbol ] = new QSvgRenderer( d->icons[ symbol ], this ); + + return d->iconRenderer[ symbol ]; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.h new file mode 100644 index 00000000..d85ceed6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSDIAGRAM_H +#define KDCHARTLEVEYJENNINGSDIAGRAM_H + +#include "KDChartLineDiagram.h" +#include "KDChartLeveyJenningsCoordinatePlane.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QPolygonF; +class QSvgRenderer; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief LeveyDiagram defines a Levey Jennings chart. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT LeveyJenningsDiagram : public LineDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( LeveyJenningsDiagram ) +// KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LineDiagram, CartesianCoordinatePlane * ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( LeveyJenningsDiagram, LeveyJenningsCoordinatePlane ) + + +public: + explicit LeveyJenningsDiagram( QWidget* parent = 0, LeveyJenningsCoordinatePlane* plane = 0 ); + virtual ~LeveyJenningsDiagram(); + + virtual LineDiagram * clone() const; + + enum Symbol + { + OkDataPoint, + NotOkDataPoint, + LotChanged, + SensorChanged, + FluidicsPackChanged + }; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const LeveyJenningsDiagram* other ) const; + + void setLotChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment lotChangedSymbolPosition() const; + + void setFluidicsPackChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment fluidicsPackChangedSymbolPosition() const; + + void setSensorChangedSymbolPosition( Qt::Alignment pos ); + Qt::Alignment sensorChangedSymbolPosition() const; + + void setExpectedMeanValue( float meanValue ); + float expectedMeanValue() const; + + void setExpectedStandardDeviation( float sd ); + float expectedStandardDeviation() const; + + float calculatedMeanValue() const; + float calculatedStandardDeviation() const; + + void setFluidicsPackChanges( const QVector< QDateTime >& changes ); + QVector< QDateTime > fluidicsPackChanges() const; + + void setSensorChanges( const QVector< QDateTime >& changes ); + QVector< QDateTime > sensorChanges() const; + + void setScanLinePen( const QPen& pen ); + QPen scanLinePen() const; + + void setSymbol( Symbol symbol, const QString& filename ); + QString symbol( Symbol symbol ) const; + + /* \reimpl */ + void setModel( QAbstractItemModel* model ); + + QPair< QDateTime, QDateTime > timeRange() const; + void setTimeRange( const QPair< QDateTime, QDateTime >& timeRange ); + +protected: + void paint( PaintContext* paintContext ); + void drawChanges( PaintContext* paintContext ); + + virtual void drawDataPointSymbol( PaintContext* paintContext, const QPointF& pos, bool ok ); + virtual void drawLotChangeSymbol( PaintContext* paintContext, const QPointF& pos ); + virtual void drawSensorChangedSymbol( PaintContext* paintContext, const QPointF& pos ); + virtual void drawFluidicsPackChangedSymbol( PaintContext* paintContext, const QPointF& pos ); + + virtual QRectF iconRect() const; + + QSvgRenderer* iconRenderer( Symbol symbol ); + + /** \reimpl */ + const QPair calculateDataBoundaries() const; + +protected Q_SLOTS: + void calculateMeanAndStandardDeviation() const; +}; // End of class KDChartLineDiagram + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.cpp new file mode 100644 index 00000000..dd874560 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsDiagram.h" +#include "KDChartDataValueAttributes.h" + +#include "KDChartLeveyJenningsDiagram_p.h" + +using namespace KDChart; + +LeveyJenningsDiagram::Private::Private( const Private& rhs ) + : LineDiagram::Private( rhs ), + lotChangedPosition( rhs.lotChangedPosition ), + fluidicsPackChangedPosition( rhs.fluidicsPackChangedPosition ), + sensorChangedPosition( rhs.sensorChangedPosition ), + fluidicsPackChanges( rhs.fluidicsPackChanges ), + sensorChanges( rhs.sensorChanges ), + scanLinePen( rhs.scanLinePen ), + icons( rhs.icons ), + expectedMeanValue( rhs.expectedMeanValue ), + expectedStandardDeviation( rhs.expectedStandardDeviation ) +{ +} + +void LeveyJenningsDiagram::Private::setYAxisRange() const +{ + CartesianCoordinatePlane* const plane = static_cast< CartesianCoordinatePlane* >( diagram->coordinatePlane() ); + if ( plane == 0 ) + return; + + plane->setVerticalRange( QPair< qreal, qreal >( expectedMeanValue - 4 * expectedStandardDeviation, + expectedMeanValue + 4 * expectedStandardDeviation ) ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.h new file mode 100644 index 00000000..440269d4 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsDiagram_p.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSDIAGRAM_P_H +#define KDCHARTLEVEYJENNINGSDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "KDChartThreeDLineAttributes.h" +#include "KDChartLineDiagram_p.h" + +#include + +QT_BEGIN_NAMESPACE +class QSvgRenderer; +QT_END_NAMESPACE + +namespace KDChart { + + class PaintContext; + +/** + * \internal + */ + class LeveyJenningsDiagram::Private : public LineDiagram::Private + { + friend class LeveyJenningsDiagram; + public: + Private(); + Private( const Private& rhs ); + ~Private(); + + void setYAxisRange() const; + + Qt::Alignment lotChangedPosition; + Qt::Alignment fluidicsPackChangedPosition; + Qt::Alignment sensorChangedPosition; + + QVector< QDateTime > fluidicsPackChanges; + QVector< QDateTime > sensorChanges; + + QPen scanLinePen; + + QMap< LeveyJenningsDiagram::Symbol, QString > icons; + QMap< LeveyJenningsDiagram::Symbol, QSvgRenderer* > iconRenderer; + + QPair< QDateTime, QDateTime > timeRange; + + float expectedMeanValue; + float expectedStandardDeviation; + + mutable float calculatedMeanValue; + mutable float calculatedStandardDeviation; + }; + + KDCHART_IMPL_DERIVED_DIAGRAM( LeveyJenningsDiagram, LineDiagram, LeveyJenningsCoordinatePlane ) +} + +#endif /* KDCHARTLINEDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.cpp new file mode 100644 index 00000000..35a70bbc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.cpp @@ -0,0 +1,369 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsGrid.h" +#include "KDChartLeveyJenningsDiagram.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartPrintingParameters.h" + +#include + +#include + + +using namespace KDChart; + +qreal fastPow10( int x ); + +DataDimensionsList LeveyJenningsGrid::calculateGrid( const DataDimensionsList& rawDataDimensions ) const +{ + Q_ASSERT_X ( rawDataDimensions.count() == 2, "CartesianGrid::calculateGrid", + "Error: calculateGrid() expects a list with exactly two entries." ); + + LeveyJenningsCoordinatePlane* plane = dynamic_cast< LeveyJenningsCoordinatePlane*>( mPlane ); + Q_ASSERT_X ( plane, "LeveyJenningsGrid::calculateGrid", + "Error: PaintContext::calculatePlane() called, but no cartesian plane set." ); + + DataDimensionsList l( rawDataDimensions ); + // rule: Returned list is either empty, or it is providing two + // valid dimensions, complete with two non-Zero step widths. + if ( isBoundariesValid( l ) ) { + const QPointF translatedBottomLeft( plane->translateBack( plane->geometry().bottomLeft() ) ); + const QPointF translatedTopRight( plane->translateBack( plane->geometry().topRight() ) ); + + if ( l.first().isCalculated + && plane->autoAdjustGridToZoom() + && plane->axesCalcModeX() == CartesianCoordinatePlane::Linear + && plane->zoomFactorX() > 1.0 ) + { + l.first().start = translatedBottomLeft.x(); + l.first().end = translatedTopRight.x(); + } + + const DataDimension dimX + = calculateGridXY( l.first(), Qt::Horizontal, false, false ); + if ( dimX.stepWidth ) { + // one time for the min/max value + const DataDimension minMaxY + = calculateGridXY( l.last(), Qt::Vertical, false, false ); + + if ( plane->autoAdjustGridToZoom() + && plane->axesCalcModeY() == CartesianCoordinatePlane::Linear + && plane->zoomFactorY() > 1.0 ) + { + l.last().start = translatedBottomLeft.y(); + l.last().end = translatedTopRight.y(); + } + // and one other time for the step width + const DataDimension dimY + = calculateGridXY( l.last(), Qt::Vertical, false, false ); + if ( dimY.stepWidth ) { + l.first().start = dimX.start; + l.first().end = dimX.end; + l.first().stepWidth = dimX.stepWidth; + l.first().subStepWidth = dimX.subStepWidth; + l.last().start = minMaxY.start; + l.last().end = minMaxY.end; + l.last().stepWidth = dimY.stepWidth; + //qDebug() << "CartesianGrid::calculateGrid() final grid y-range:" << l.last().end - l.last().start << " step width:" << l.last().stepWidth << endl; + // calculate some reasonable subSteps if the + // user did not set the sub grid but did set + // the stepWidth. + if ( dimY.subStepWidth == 0 ) + l.last().subStepWidth = dimY.stepWidth/2; + else + l.last().subStepWidth = dimY.subStepWidth; + } + } + } + //qDebug() << "CartesianGrid::calculateGrid() final grid Y-range:" << l.last().end - l.last().start << " step width:" << l.last().stepWidth; + //qDebug() << "CartesianGrid::calculateGrid() final grid X-range:" << l.first().end - l.first().start << " step width:" << l.first().stepWidth; + + return l; +} + +#if defined ( Q_WS_WIN) +#define trunc(x) ((int)(x)) +#endif + +DataDimension LeveyJenningsGrid::calculateGridXY( + const DataDimension& rawDataDimension, + Qt::Orientation orientation, + bool adjustLower, bool adjustUpper ) const +{ + DataDimension dim( rawDataDimension ); + if ( dim.isCalculated && dim.start != dim.end ) { + // linear ( == not-logarithmic) calculation + if ( dim.stepWidth == 0.0 ) { + QList granularities; + switch ( dim.sequence ) { + case KDChartEnums::GranularitySequence_10_20: + granularities << 1.0 << 2.0; + break; + case KDChartEnums::GranularitySequence_10_50: + granularities << 1.0 << 5.0; + break; + case KDChartEnums::GranularitySequence_25_50: + granularities << 2.5 << 5.0; + break; + case KDChartEnums::GranularitySequence_125_25: + granularities << 1.25 << 2.5; + break; + case KDChartEnums::GranularitySequenceIrregular: + granularities << 1.0 << 1.25 << 2.0 << 2.5 << 5.0; + break; + } + //qDebug("CartesianGrid::calculateGridXY() dim.start: %f dim.end: %f", dim.start, dim.end); + calculateStepWidth( + dim.start, dim.end, granularities, orientation, + dim.stepWidth, dim.subStepWidth, + adjustLower, adjustUpper ); + } + } else { + //qDebug() << "CartesianGrid::calculateGridXY() returns stepWidth 1.0 !!"; + // Do not ignore the user configuration + dim.stepWidth = dim.stepWidth ? dim.stepWidth : 1.0; + } + return dim; +} + +static void calculateSteps( + qreal start_, qreal end_, const QList& list, + int minSteps, int maxSteps, + int power, + qreal& steps, qreal& stepWidth, + bool adjustLower, bool adjustUpper ) +{ + //qDebug("-----------------------------------\nstart: %f end: %f power-of-ten: %i", start_, end_, power); + + qreal distance = 0.0; + steps = 0.0; + + const int lastIdx = list.count()-1; + for ( int i = 0; i <= lastIdx; ++i ) { + const qreal testStepWidth = list.at(lastIdx - i) * fastPow10( power ); + //qDebug( "testing step width: %f", testStepWidth); + qreal start = qMin( start_, end_ ); + qreal end = qMax( start_, end_ ); + //qDebug("pre adjusting start: %f end: %f", start, end); + AbstractGrid::adjustLowerUpperRange( start, end, testStepWidth, adjustLower, adjustUpper ); + //qDebug("post adjusting start: %f end: %f", start, end); + + const qreal testDistance = qAbs(end - start); + const qreal testSteps = testDistance / testStepWidth; + + //qDebug() << "testDistance:" << testDistance << " distance:" << distance; + if ( (minSteps <= testSteps) && (testSteps <= maxSteps) + && ( (steps == 0.0) || (testDistance <= distance) ) ) { + steps = testSteps; + stepWidth = testStepWidth; + distance = testDistance; + //qDebug( "start: %f end: %f step width: %f steps: %f distance: %f", start, end, stepWidth, steps, distance); + } + } +} + +void LeveyJenningsGrid::calculateStepWidth( + qreal start_, qreal end_, + const QList& granularities, + Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, + bool adjustLower, bool adjustUpper ) const +{ + Q_UNUSED( orientation ); + + Q_ASSERT_X ( granularities.count(), "CartesianGrid::calculateStepWidth", + "Error: The list of GranularitySequence values is empty." ); + QList list( granularities ); + qSort( list ); + + const qreal start = qMin( start_, end_); + const qreal end = qMax( start_, end_); + const qreal distance = end - start; + //qDebug( "raw data start: %f end: %f", start, end); + + //FIXME(khz): make minSteps and maxSteps configurable by the user. + const int minSteps = 2; + const int maxSteps = 12; + + qreal steps; + int power = 0; + while ( list.last() * fastPow10( power ) < distance ) { + ++power; + }; + // We have the sequence *two* times in the calculation test list, + // so we will be sure to find the best match: + const int count = list.count(); + QList testList; + for ( int i = 0; i < count; ++i ) + testList << list.at(i) * 0.1; + testList << list; + do{ + //qDebug() << "list:" << testList; + //qDebug( "calculating steps: power: %i", power); + calculateSteps( start, end, testList, minSteps, maxSteps, power, + steps, stepWidth, + adjustLower, adjustUpper ); + --power; + }while ( steps == 0.0 ); + ++power; + //qDebug( "steps calculated: stepWidth: %f steps: %f", stepWidth, steps); + + // find the matching sub-grid line width in case it is + // not set by the user + + if ( subStepWidth == 0.0 ) { + if ( stepWidth == list.first() * fastPow10( power ) ) { + subStepWidth = list.last() * fastPow10( power-1 ); + //qDebug("A"); + } else if ( stepWidth == list.first() * fastPow10( power-1 ) ) { + subStepWidth = list.last() * fastPow10( power-2 ); + //qDebug("B"); + } else { + qreal smallerStepWidth = list.first(); + for ( int i = 1; i < list.count(); ++i ) { + if ( stepWidth == list.at( i ) * fastPow10( power ) ) { + subStepWidth = smallerStepWidth * fastPow10( power ); + break; + } + if ( stepWidth == list.at( i ) * fastPow10( power-1 ) ) { + subStepWidth = smallerStepWidth * fastPow10( power-1 ); + break; + } + smallerStepWidth = list.at( i ); + } + + //qDebug("C"); + } + } + //qDebug("LeveyJenningsGrid::calculateStepWidth() found stepWidth %f (%f steps) and sub-stepWidth %f", stepWidth, steps, subStepWidth); +} + +void LeveyJenningsGrid::drawGrid( PaintContext* context ) +{ + // This plane is used for tranlating the coordinates - not for the data boundaries + PainterSaver p( context->painter() ); + LeveyJenningsCoordinatePlane* plane = qobject_cast< LeveyJenningsCoordinatePlane* >( + mPlane->sharedAxisMasterPlane( context->painter() ) ); + Q_ASSERT_X ( plane, "LeveyJenningsGrid::drawGrid", + "Bad function call: PaintContext::coodinatePlane() NOT a Levey Jennings plane." ); + + LeveyJenningsDiagram* diag = qobject_cast< LeveyJenningsDiagram* >( plane->diagram() ); + if ( !diag ) { + return; + } + + const LeveyJenningsGridAttributes gridAttrs( plane->gridAttributes() ); + + // update the calculated mDataDimensions before using them + updateData( context->coordinatePlane() ); + + // test for programming errors: critical + Q_ASSERT_X ( mDataDimensions.count() == 2, "CartesianGrid::drawGrid", + "Error: updateData did not return exactly two dimensions." ); + + // test for invalid boundaries: non-critical + if ( !isBoundariesValid( mDataDimensions ) ) { + return; + } + //qDebug() << "B"; + + DataDimension dimX = mDataDimensions.first(); + // this happens if there's only one data point + if ( dimX.start == 0.0 && dimX.end == 0.0 ) + dimX.end += plane->geometry().width(); + + // first we draw the expected lines + // draw the "mean" line + const float meanValue = diag->expectedMeanValue(); + const float standardDeviation = diag->expectedStandardDeviation(); + + // then the calculated ones + const float calcMeanValue = diag->calculatedMeanValue(); + const float calcStandardDeviation = diag->calculatedStandardDeviation(); + + + // draw the normal range + QPointF topLeft = plane->translate( QPointF( dimX.start, meanValue - 2 * standardDeviation ) ); + QPointF bottomRight = plane->translate( QPointF( dimX.end, meanValue + 2 * standardDeviation ) ); + context->painter()->fillRect( QRectF( topLeft, QSizeF( bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y() ) ), + gridAttrs.rangeBrush( LeveyJenningsGridAttributes::NormalRange ) ); + + // draw the critical range + topLeft = plane->translate( QPointF( dimX.start, meanValue + 2 * standardDeviation ) ); + bottomRight = plane->translate( QPointF( dimX.end, meanValue + 3 * standardDeviation ) ); + context->painter()->fillRect( QRectF( topLeft, QSizeF( bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y() ) ), + gridAttrs.rangeBrush( LeveyJenningsGridAttributes::CriticalRange ) ); + + topLeft = plane->translate( QPointF( dimX.start, meanValue - 2 * standardDeviation ) ); + bottomRight = plane->translate( QPointF( dimX.end, meanValue - 3 * standardDeviation ) ); + context->painter()->fillRect( QRectF( topLeft, QSizeF( bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y() ) ), + gridAttrs.rangeBrush( LeveyJenningsGridAttributes::CriticalRange ) ); + + // draw the "out of range" range + topLeft = plane->translate( QPointF( dimX.start, meanValue + 3 * standardDeviation ) ); + bottomRight = plane->translate( QPointF( dimX.end, meanValue + 4 * standardDeviation ) ); + context->painter()->fillRect( QRectF( topLeft, QSizeF( bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y() ) ), + gridAttrs.rangeBrush( LeveyJenningsGridAttributes::OutOfRange ) ); + + topLeft = plane->translate( QPointF( dimX.start, meanValue - 3 * standardDeviation ) ); + bottomRight = plane->translate( QPointF( dimX.end, meanValue - 4 * standardDeviation ) ); + context->painter()->fillRect( QRectF( topLeft, QSizeF( bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y() ) ), + gridAttrs.rangeBrush( LeveyJenningsGridAttributes::OutOfRange ) ); + + // the "expected" grid + if ( gridAttrs.isGridVisible( LeveyJenningsGridAttributes::Expected ) ) + { + context->painter()->setPen( gridAttrs.gridPen( LeveyJenningsGridAttributes::Expected ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue ) ), + plane->translate( QPointF( dimX.end, meanValue ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue + 2 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue + 2 * standardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue + 3 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue + 3 * standardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue + 4 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue + 4 * standardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue - 2 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue - 2 * standardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue - 3 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue - 3 * standardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, meanValue - 4 * standardDeviation ) ), + plane->translate( QPointF( dimX.end, meanValue - 4 * standardDeviation ) ) ); + } + + // the "calculated" grid + if ( gridAttrs.isGridVisible( LeveyJenningsGridAttributes::Calculated ) ) + { + context->painter()->setPen( gridAttrs.gridPen( LeveyJenningsGridAttributes::Calculated ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, calcMeanValue ) ), + plane->translate( QPointF( dimX.end, calcMeanValue ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, calcMeanValue + 2 * calcStandardDeviation ) ), + plane->translate( QPointF( dimX.end, calcMeanValue + 2 * calcStandardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, calcMeanValue + 3 * calcStandardDeviation ) ), + plane->translate( QPointF( dimX.end, calcMeanValue + 3 * calcStandardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, calcMeanValue - 2 * calcStandardDeviation ) ), + plane->translate( QPointF( dimX.end, calcMeanValue - 2 * calcStandardDeviation ) ) ); + context->painter()->drawLine( plane->translate( QPointF( dimX.start, calcMeanValue - 3 * calcStandardDeviation ) ), + plane->translate( QPointF( dimX.end, calcMeanValue - 3 * calcStandardDeviation ) ) ); + } +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.h new file mode 100644 index 00000000..daad7de4 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGrid.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSGRID_H +#define KDCHARTLEVEYJENNINGSGRID_H + +#include "KDChartCartesianGrid.h" + +namespace KDChart { + + class PaintContext; + + /** + * \internal + * + * \brief Class for the grid in a Levey Jennings plane. + * + * The LeveyJenningsGrid interface is used + * for calculating and for drawing + * the horizonal grid lines, and the vertical grid lines + * of a Levey Jennings coordinate plane. + */ + class LeveyJenningsGrid : public CartesianGrid + { + public: + LeveyJenningsGrid() : CartesianGrid() {} + virtual ~LeveyJenningsGrid() {} + + void drawGrid( PaintContext* context ); + + private: + DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const; + DataDimension calculateGridXY( const DataDimension& rawDataDimension, + Qt::Orientation orientation, bool adjustLower, bool adjustUpper ) const; + void calculateStepWidth( qreal start_, qreal end_, const QList& granularities, Qt::Orientation orientation, + qreal& stepWidth, qreal& subStepWidth, bool adjustLower, bool adjustUpper ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.cpp new file mode 100644 index 00000000..64a9b073 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.cpp @@ -0,0 +1,126 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLeveyJenningsGridAttributes.h" + +#include +#include +#include + +#include + +#define d d_func() + +using namespace KDChart; + +class LeveyJenningsGridAttributes::Private +{ + friend class LeveyJenningsGridAttributes; +public: + Private(); +private: + QMap< GridType, bool > visible; + QMap< GridType, QPen > pens; + QMap< LeveyJenningsGridAttributes::Range, QBrush > rangeBrushes; +}; + +LeveyJenningsGridAttributes::Private::Private() +{ + pens[ Calculated ].setCapStyle( Qt::FlatCap ); + pens[ Calculated ].setColor( Qt::blue ); + pens[ Expected ].setCapStyle( Qt::FlatCap ); + pens[ Expected ].setColor( Qt::black ); + + visible[ Calculated ] = true; + visible[ Expected ] = true; + + rangeBrushes[ LeveyJenningsGridAttributes::CriticalRange ] = QBrush( QColor( 255, 255, 192 ) ); + rangeBrushes[ LeveyJenningsGridAttributes::OutOfRange ] = QBrush( QColor( 255, 128, 128 ) ); +} + + +LeveyJenningsGridAttributes::LeveyJenningsGridAttributes() + : _d( new Private() ) +{ + // this bloc left empty intentionally +} + +LeveyJenningsGridAttributes::LeveyJenningsGridAttributes( const LeveyJenningsGridAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +LeveyJenningsGridAttributes & LeveyJenningsGridAttributes::operator=( const LeveyJenningsGridAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +LeveyJenningsGridAttributes::~LeveyJenningsGridAttributes() +{ + delete _d; _d = 0; +} + + +bool LeveyJenningsGridAttributes::operator==( const LeveyJenningsGridAttributes& r ) const +{ + return isGridVisible( Expected ) == r.isGridVisible( Expected ) && + isGridVisible( Calculated ) == r.isGridVisible( Calculated ) && + gridPen( Expected ) == r.gridPen( Expected ) && + gridPen( Calculated ) == r.gridPen( Calculated ); +} + +void LeveyJenningsGridAttributes::setRangeBrush( Range range, const QBrush& brush ) +{ + d->rangeBrushes[ range ] = brush; +} + +QBrush LeveyJenningsGridAttributes::rangeBrush( Range range ) const +{ + return d->rangeBrushes[ range ]; +} + + +void LeveyJenningsGridAttributes::setGridVisible( GridType type, bool visible ) +{ + d->visible[ type ] = visible; +} + +bool LeveyJenningsGridAttributes::isGridVisible( GridType type ) const +{ + return d->visible[ type ]; +} + +void LeveyJenningsGridAttributes::setGridPen( GridType type, const QPen& pen ) +{ + d->pens[ type ] = pen; + d->pens[ type ].setCapStyle( Qt::FlatCap ); +} + +QPen LeveyJenningsGridAttributes::gridPen( GridType type ) const +{ + return d->pens[ type ]; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.h new file mode 100644 index 00000000..951b5498 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLeveyJenningsGridAttributes.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H +#define KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H + +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of grids + */ +class KDCHART_EXPORT LeveyJenningsGridAttributes +{ +public: + LeveyJenningsGridAttributes(); + LeveyJenningsGridAttributes( const LeveyJenningsGridAttributes& ); + LeveyJenningsGridAttributes &operator= ( const LeveyJenningsGridAttributes& ); + + ~LeveyJenningsGridAttributes(); + + enum GridType + { + Expected, + Calculated + }; + + enum Range + { + NormalRange, + CriticalRange, + OutOfRange + }; + + void setGridVisible( GridType type, bool visible ); + bool isGridVisible( GridType type ) const; + + void setGridPen( GridType type, const QPen& pen ); + QPen gridPen( GridType type ) const; + + void setRangeBrush( Range range, const QBrush& brush ); + QBrush rangeBrush( Range range ) const; + + bool operator==( const LeveyJenningsGridAttributes& ) const; + inline bool operator!=( const LeveyJenningsGridAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( LeveyJenningsGridAttributes ) +}; // End of class GridAttributes + +} + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::LeveyJenningsGridAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::LeveyJenningsGridAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::LeveyJenningsGridAttributes ) + +#endif // KDCHARTLEVEYJENNINGSGRIDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.cpp new file mode 100644 index 00000000..38cea7e6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.cpp @@ -0,0 +1,437 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLineDiagram.h" +#include "KDChartLineDiagram_p.h" + +#include "KDChartBarDiagram.h" +#include "KDChartPalette.h" +#include "KDChartAttributesModel.h" +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" + +#include + +#include "KDChartNormalLineDiagram_p.h" +#include "KDChartStackedLineDiagram_p.h" +#include "KDChartPercentLineDiagram_p.h" + +#include +#include +#include +#include +#include +#include + +using namespace KDChart; + +LineDiagram::Private::Private() +{ +} + +LineDiagram::Private::~Private() {} + + +#define d d_func() + + +LineDiagram::LineDiagram( QWidget* parent, CartesianCoordinatePlane* plane ) : + AbstractCartesianDiagram( new Private(), parent, plane ) +{ + init(); +} + +void LineDiagram::init() +{ + d->normalDiagram = new NormalLineDiagram( this ); + d->stackedDiagram = new StackedLineDiagram( this ); + d->percentDiagram = new PercentLineDiagram( this ); + d->implementor = d->normalDiagram; + d->centerDataPoints = false; + d->reverseDatasetOrder = false; +} + +LineDiagram::~LineDiagram() +{ + delete d->normalDiagram; + delete d->stackedDiagram; + delete d->percentDiagram; +} + +/** + * Creates an exact copy of this diagram. + */ +LineDiagram * LineDiagram::clone() const +{ + LineDiagram* newDiagram = new LineDiagram( new Private( *d ) ); + newDiagram->setType( type() ); + return newDiagram; +} + + +bool LineDiagram::compare( const LineDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + return false; + } + return // compare the base class + ( static_cast(this)->compare( other ) ) && + // compare own properties + (type() == other->type()) && + (centerDataPoints() == other->centerDataPoints()) && + (reverseDatasetOrder() == other->reverseDatasetOrder()); +} + +/** + * Sets the line diagram's type to \a type + * \sa LineDiagram::LineType + */ +void LineDiagram::setType( const LineType type ) +{ + if ( d->implementor->type() == type ) return; + if ( type != LineDiagram::Normal && datasetDimension() > 1 ) { + Q_ASSERT_X ( false, "setType()", + "This line chart type can't be used with multi-dimensional data." ); + return; + } + switch ( type ) { + case Normal: + d->implementor = d->normalDiagram; + break; + case Stacked: + d->implementor = d->stackedDiagram; + break; + case Percent: + d->implementor = d->percentDiagram; + break; + default: + Q_ASSERT_X( false, "LineDiagram::setType", "unknown diagram subtype" ); + }; + + // d->lineType = type; + Q_ASSERT( d->implementor->type() == type ); + + // AbstractAxis settings - see AbstractDiagram and CartesianAxis + setPercentMode( type == LineDiagram::Percent ); + setDataBoundariesDirty(); + emit layoutChanged( this ); + emit propertiesChanged(); +} + +/** + * @return the type of the line diagram + */ +LineDiagram::LineType LineDiagram::type() const +{ + return d->implementor->type(); +} + +void LineDiagram::setCenterDataPoints( bool center ) +{ + if ( d->centerDataPoints == center ) { + return; + } + + d->centerDataPoints = center; + // The actual data boundaries haven't changed, but the axis will have one more or less tick + // A B =\ A B + // 1......2 =/ 1......2......3 + setDataBoundariesDirty(); + emit layoutChanged( this ); + emit propertiesChanged(); +} + +bool LineDiagram::centerDataPoints() const +{ + return d->centerDataPoints; +} + +void LineDiagram::setReverseDatasetOrder( bool reverse ) +{ + d->reverseDatasetOrder = reverse; +} + +bool LineDiagram::reverseDatasetOrder() const +{ + return d->reverseDatasetOrder; +} + +/** + * Sets the global line attributes to \a la + */ +void LineDiagram::setLineAttributes( const LineAttributes& la ) +{ + d->attributesModel->setModelData( + qVariantFromValue( la ), + LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the line attributes of data set \a column to \a la + */ +void LineDiagram::setLineAttributes( + int column, + const LineAttributes& la ) +{ + d->setDatasetAttrs( column, qVariantFromValue( la ), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Resets the line attributes of data set \a column + */ +void LineDiagram::resetLineAttributes( int column ) +{ + d->resetDatasetAttrs( column, LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the line attributes for the model index \a index to \a la + */ +void LineDiagram::setLineAttributes( + const QModelIndex& index, + const LineAttributes& la ) +{ + d->attributesModel->setData( + d->attributesModel->mapFromSource(index), + qVariantFromValue( la ), + LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Remove any explicit line attributes settings that might have been specified before. + */ +void LineDiagram::resetLineAttributes( const QModelIndex & index ) +{ + d->attributesModel->resetData( + d->attributesModel->mapFromSource(index), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * @return the global line attribute set + */ +LineAttributes LineDiagram::lineAttributes() const +{ + return d->attributesModel->data( KDChart::LineAttributesRole ).value(); +} + +/** + * @return the line attribute set of data set \a column + */ +LineAttributes LineDiagram::lineAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, LineAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value(); + return lineAttributes(); +} + +/** + * @return the line attribute set of the model index \a index + */ +LineAttributes LineDiagram::lineAttributes( + const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource(index), + KDChart::LineAttributesRole ).value(); +} + +/** + * Sets the global 3D line attributes to \a la + */ +void LineDiagram::setThreeDLineAttributes( + const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->attributesModel->setModelData( + qVariantFromValue( la ), + ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the 3D line attributes of data set \a column to \a ta + */ +void LineDiagram::setThreeDLineAttributes( + int column, + const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->setDatasetAttrs( column, qVariantFromValue( la ), ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the 3D line attributes of model index \a index to \a la + */ +void LineDiagram::setThreeDLineAttributes( + const QModelIndex & index, + const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->attributesModel->setData( + d->attributesModel->mapFromSource(index), + qVariantFromValue( la ), + ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * @return the global 3D line attributes + */ +ThreeDLineAttributes LineDiagram::threeDLineAttributes() const +{ + return d->attributesModel->data( KDChart::ThreeDLineAttributesRole ).value(); +} + +/** + * @return the 3D line attributes of data set \a column + */ +ThreeDLineAttributes LineDiagram::threeDLineAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, ThreeDLineAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value(); + return threeDLineAttributes(); +} + +/** + * @return the 3D line attributes of the model index \a index + */ +ThreeDLineAttributes LineDiagram::threeDLineAttributes( const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), + KDChart::ThreeDLineAttributesRole ).value(); +} + +qreal LineDiagram::threeDItemDepth( const QModelIndex& index ) const +{ + return threeDLineAttributes( index ).validDepth(); +} + +qreal LineDiagram::threeDItemDepth( int column ) const +{ + return threeDLineAttributes( column ).validDepth(); +} + +/** + * Sets the value tracker attributes of the model index \a index to \a va + */ +void LineDiagram::setValueTrackerAttributes( const QModelIndex & index, + const ValueTrackerAttributes & va ) +{ + d->attributesModel->setData( d->attributesModel->mapFromSource(index), + qVariantFromValue( va ), + KDChart::ValueTrackerAttributesRole ); + emit propertiesChanged(); +} + +/** + * Returns the value tracker attributes of the model index \a index + */ +ValueTrackerAttributes LineDiagram::valueTrackerAttributes( + const QModelIndex & index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), + KDChart::ValueTrackerAttributesRole ).value(); +} + +void LineDiagram::resizeEvent ( QResizeEvent* ) +{ +} + +const QPair LineDiagram::calculateDataBoundaries() const +{ + d->compressor.setResolution( static_cast( this->size().width() * coordinatePlane()->zoomFactorX() ), + static_cast( this->size().height() * coordinatePlane()->zoomFactorY() ) ); + + if ( !checkInvariants( true ) ) return QPair( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + + // note: calculateDataBoundaries() is ignoring the hidden flags. + // That's not a bug but a feature: Hiding data does not mean removing them. + // For totally removing data from KD Chart's view people can use e.g. a proxy model ... + + // calculate boundaries for different line types Normal - Stacked - Percent - Default Normal + return d->implementor->calculateDataBoundaries(); +} + + +void LineDiagram::paintEvent ( QPaintEvent*) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle ( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void LineDiagram::paint( PaintContext* ctx ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants( true ) ) return; + if ( !AbstractGrid::isBoundariesValid(dataBoundaries()) ) return; + const PainterSaver p( ctx->painter() ); + if ( model()->rowCount( rootIndex() ) == 0 || model()->columnCount( rootIndex() ) == 0 ) + return; // nothing to paint for us + + AbstractCoordinatePlane* const plane = ctx->coordinatePlane(); + ctx->setCoordinatePlane( plane->sharedAxisMasterPlane( ctx->painter() ) ); + + + // paint different line types Normal - Stacked - Percent - Default Normal + d->implementor->paint( ctx ); + + ctx->setCoordinatePlane( plane ); +} + +void LineDiagram::resize ( const QSizeF& size ) +{ + d->compressor.setResolution( static_cast( size.width() * coordinatePlane()->zoomFactorX() ), + static_cast( size.height() * coordinatePlane()->zoomFactorY() ) ); + setDataBoundariesDirty(); + QAbstractItemView::resize( size.toSize() ); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int LineDiagram::numberOfAbscissaSegments () const +{ + return d->attributesModel->rowCount(attributesModelRootIndex()); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int LineDiagram::numberOfOrdinateSegments () const +{ + return d->attributesModel->columnCount(attributesModelRootIndex()); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.h new file mode 100644 index 00000000..395436c9 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLINEDIAGRAM_H +#define KDCHARTLINEDIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartLineAttributes.h" +#include "KDChartValueTrackerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief LineDiagram defines a common line diagram. + * + * It provides different subtypes which are set using \a setType. + */ +class KDCHART_EXPORT LineDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( LineDiagram ) +// KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( LineDiagram, CartesianCoordinatePlane * ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( LineDiagram, CartesianCoordinatePlane ) + + +public: + class LineDiagramType; + friend class LineDiagramType; + + explicit LineDiagram( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~LineDiagram(); + + virtual LineDiagram * clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const LineDiagram* other ) const; + + enum LineType { + Normal = 0, + Stacked = 1, + Percent = 2 + }; + + + void setType( const LineType type ); + LineType type() const; + + /** If centerDataPoints() is true, all data points are moved by an + * offset of 0.5 to the right. This is useful in conjunction with + * bar diagrams, since data points are then centered just like bars. + * + * \sa centerDataPoints() + */ + void setCenterDataPoints( bool center ); + /** @return option set by setCenterDataPoints() */ + bool centerDataPoints() const; + + /** With this property set to true, data sets in a normal line diagram + * are drawn in reversed order. More clearly, the first (top-most) data set + * in the source model will then appear in front. This is mostly due to + * historical reasons. + */ + void setReverseDatasetOrder( bool reverse ); + /** \see setReverseDatasetOrder */ + bool reverseDatasetOrder() const; + + void setLineAttributes( const LineAttributes & a ); + void setLineAttributes( int column, const LineAttributes & a ); + void setLineAttributes( const QModelIndex & index, const LineAttributes & a ); + void resetLineAttributes( int column ); + void resetLineAttributes( const QModelIndex & index ); + LineAttributes lineAttributes() const; + LineAttributes lineAttributes( int column ) const; + LineAttributes lineAttributes( const QModelIndex & index ) const; + + void setThreeDLineAttributes( const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( const QModelIndex & index, + const ThreeDLineAttributes & a ); + + ThreeDLineAttributes threeDLineAttributes() const; + ThreeDLineAttributes threeDLineAttributes( int column ) const; + ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const; + + void setValueTrackerAttributes( const QModelIndex & index, + const ValueTrackerAttributes & a ); + ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /* reimpl */ + const int numberOfAbscissaSegments () const; + /* reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /* reimpl */ + int numberOfAbscissaSegments () const; + /* reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +}; // End of class KDChartLineDiagram + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.cpp new file mode 100644 index 00000000..b60465ec --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.cpp @@ -0,0 +1,106 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLineDiagram.h" +#include "KDChartDataValueAttributes.h" + +#include "KDChartLineDiagram_p.h" +#include "KDChartPainterSaver_p.h" +#include "PaintingHelpers_p.h" + +using namespace KDChart; +using namespace std; + +LineDiagram::Private::Private( const Private& rhs ) + : AbstractCartesianDiagram::Private( rhs ) +{ +} + +AttributesModel* LineDiagram::LineDiagramType::attributesModel() const +{ + return m_private->attributesModel; +} + +QModelIndex LineDiagram::LineDiagramType::attributesModelRootIndex() const +{ + return diagram()->attributesModelRootIndex(); +} + +int LineDiagram::LineDiagramType::datasetDimension() const +{ + return m_private->datasetDimension; +} + +ReverseMapper& LineDiagram::LineDiagramType::reverseMapper() +{ + return m_private->reverseMapper; +} + +LineDiagram* LineDiagram::LineDiagramType::diagram() const +{ + return static_cast< LineDiagram* >( m_private->diagram ); +} + +qreal LineDiagram::LineDiagramType::valueForCell( int row, int column ) const +{ + return diagram()->valueForCell( row, column ); +} + +CartesianDiagramDataCompressor& LineDiagram::LineDiagramType::compressor() const +{ + return m_private->compressor; +} + +qreal LineDiagram::LineDiagramType::interpolateMissingValue( const CartesianDiagramDataCompressor::CachePosition& pos ) const +{ + qreal leftValue = std::numeric_limits< qreal >::quiet_NaN(); + qreal rightValue = std::numeric_limits< qreal >::quiet_NaN(); + int missingCount = 1; + + const int column = pos.column; + const int row = pos.row; + const int rowCount = compressor().modelDataRows(); + + // iterate back and forth to find valid values + for ( int r1 = row - 1; r1 > 0; --r1 ) + { + const CartesianDiagramDataCompressor::CachePosition position( r1, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + leftValue = point.value; + if ( !ISNAN( point.value ) ) + break; + ++missingCount; + } + for ( int r2 = row + 1; r2 < rowCount; ++r2 ) + { + const CartesianDiagramDataCompressor::CachePosition position( r2, column ); + const CartesianDiagramDataCompressor::DataPoint point = compressor().data( position ); + rightValue = point.value; + if ( !ISNAN( point.value ) ) + break; + ++missingCount; + } + if ( !ISNAN( leftValue ) && !ISNAN( rightValue ) ) + return leftValue + ( rightValue - leftValue ) / ( missingCount + 1 ); + else + return std::numeric_limits< qreal >::quiet_NaN(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.h new file mode 100644 index 00000000..c3f81110 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartLineDiagram_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLINEDIAGRAM_P_H +#define KDCHARTLINEDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartLineDiagram.h" + +#include + +#include "KDChartThreeDLineAttributes.h" +#include "KDChartAbstractCartesianDiagram_p.h" +#include "KDChartCartesianDiagramDataCompressor_p.h" + +#include + + +namespace KDChart { + + class PaintContext; + +/** + * \internal + */ + class LineDiagram::Private : public AbstractCartesianDiagram::Private + { + friend class LineDiagram; + friend class LineDiagramType; + + public: + Private(); + Private( const Private& rhs ); + ~Private(); + + LineDiagramType* implementor; // the current type + LineDiagramType* normalDiagram; + LineDiagramType* stackedDiagram; + LineDiagramType* percentDiagram; + bool centerDataPoints; + bool reverseDatasetOrder; + }; + + KDCHART_IMPL_DERIVED_DIAGRAM( LineDiagram, AbstractCartesianDiagram, CartesianCoordinatePlane ) + + class LineDiagram::LineDiagramType + { + public: + explicit LineDiagramType( LineDiagram* d ) + : m_private( d->d_func() ) + { + } + virtual ~LineDiagramType() {} + virtual LineDiagram::LineType type() const = 0; + virtual const QPair calculateDataBoundaries() const = 0; + virtual void paint( PaintContext* ctx ) = 0; + LineDiagram* diagram() const; + + protected: + // make some elements of m_private available to derived classes: + AttributesModel* attributesModel() const; + QModelIndex attributesModelRootIndex() const; + ReverseMapper& reverseMapper(); + CartesianDiagramDataCompressor& compressor() const; + + qreal interpolateMissingValue( const CartesianDiagramDataCompressor::CachePosition& pos ) const; + + int datasetDimension() const; + + qreal valueForCell( int row, int column ) const; + + LineDiagram::Private* m_private; + }; +} + +#endif /* KDCHARTLINEDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.cpp new file mode 100644 index 00000000..b1c6ec6e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.cpp @@ -0,0 +1,491 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPlotter.h" +#include "KDChartPlotter_p.h" + +#include "KDChartAbstractGrid.h" +#include "KDChartPainterSaver_p.h" + +#include + +#include "KDChartNormalPlotter_p.h" +#include "KDChartPercentPlotter_p.h" +#include "KDChartStackedPlotter_p.h" + +using namespace KDChart; + +Plotter::Private::Private() + : implementor( 0 ) + , normalPlotter( 0 ) + , percentPlotter( 0 ) + , stackedPlotter( 0 ) +{ +} + +Plotter::Private::~Private() +{ + delete normalPlotter; + delete percentPlotter; +} + + +#define d d_func() + + +Plotter::Plotter( QWidget* parent, CartesianCoordinatePlane* plane ) : + AbstractCartesianDiagram( new Private(), parent, plane ) +{ + init(); +} + +void Plotter::init() +{ + d->diagram = this; + d->normalPlotter = new NormalPlotter( this ); + d->percentPlotter = new PercentPlotter( this ); + d->stackedPlotter = new StackedPlotter( this ); + d->implementor = d->normalPlotter; + QObject* test = d->implementor->plotterPrivate(); + connect( this, SIGNAL( boundariesChanged() ), test, SLOT( changedProperties() ) ); + // The signal is connected to the superclass's slot at this point because the connection happened + // in its constructor when "its type was not Plotter yet". + disconnect( this, SIGNAL( attributesModelAboutToChange( AttributesModel*, AttributesModel* ) ), + this, SLOT( connectAttributesModel( AttributesModel* ) ) ); + connect( this, SIGNAL( attributesModelAboutToChange( AttributesModel*, AttributesModel* ) ), + this, SLOT( connectAttributesModel( AttributesModel* ) ) ); + setDatasetDimensionInternal( 2 ); +} + +Plotter::~Plotter() +{ +} + +/** + * Creates an exact copy of this diagram. + */ +Plotter* Plotter::clone() const +{ + Plotter* newDiagram = new Plotter( new Private( *d ) ); + newDiagram->setType( type() ); + return newDiagram; +} + +bool Plotter::compare( const Plotter* other ) const +{ + if ( other == this ) + return true; + if ( other == 0 ) + return false; + return // compare the base class + ( static_cast< const AbstractCartesianDiagram* >( this )->compare( other ) ) && + // compare own properties + ( type() == other->type() ); +} + +void Plotter::connectAttributesModel( AttributesModel* newModel ) +{ + // Order of setting the AttributesModel in compressor and diagram is very important due to slot + // invocation order. Refer to the longer comment in + // AbstractCartesianDiagram::connectAttributesModel() for details. + + if ( useDataCompression() == Plotter::NONE ) + { + d->plotterCompressor.setModel( 0 ); + AbstractCartesianDiagram::connectAttributesModel( newModel ); + } + else + { + d->compressor.setModel( 0 ); + if ( attributesModel() != d->plotterCompressor.model() ) + { + d->plotterCompressor.setModel( attributesModel() ); + connect( &d->plotterCompressor, SIGNAL( boundariesChanged() ), this, SLOT(setDataBoundariesDirty() ) ); + if ( useDataCompression() != Plotter::SLOPE ) + { + connect( coordinatePlane(), SIGNAL( internal_geometryChanged( QRect,QRect ) ), + this, SLOT( setDataBoundariesDirty() ) ); + connect( coordinatePlane(), SIGNAL( geometryChanged( QRect,QRect ) ), + this, SLOT( setDataBoundariesDirty() ) ); + calcMergeRadius(); + } + } + } +} + +Plotter::CompressionMode Plotter::useDataCompression() const +{ + return d->implementor->useCompression(); +} + +void Plotter::setUseDataCompression( Plotter::CompressionMode value ) +{ + if ( useDataCompression() != value ) + { + d->implementor->setUseCompression( value ); + if ( useDataCompression() != Plotter::NONE ) + { + d->compressor.setModel( NULL ); + if ( attributesModel() != d->plotterCompressor.model() ) + d->plotterCompressor.setModel( attributesModel() ); + } + } +} + +qreal Plotter::maxSlopeChange() const +{ + return d->plotterCompressor.maxSlopeChange(); +} + +void Plotter::setMaxSlopeChange( qreal value ) +{ + d->plotterCompressor.setMaxSlopeChange( value ); +} + +qreal Plotter::mergeRadiusPercentage() const +{ + return d->mergeRadiusPercentage; +} + +void Plotter::setMergeRadiusPercentage( qreal value ) +{ + if ( d->mergeRadiusPercentage != value ) + { + d->mergeRadiusPercentage = value; + //d->plotterCompressor.setMergeRadiusPercentage( value ); + //update(); + } +} + +/** + * Sets the plotter's type to \a type + */ +void Plotter::setType( const PlotType type ) +{ + if ( d->implementor->type() == type ) { + return; + } + if ( datasetDimension() != 2 ) { + Q_ASSERT_X ( false, "setType()", + "This line chart type can only be used with two-dimensional data." ); + return; + } + switch ( type ) { + case Normal: + d->implementor = d->normalPlotter; + break; + case Percent: + d->implementor = d->percentPlotter; + break; + case Stacked: + d->implementor = d->stackedPlotter; + break; + default: + Q_ASSERT_X( false, "Plotter::setType", "unknown plotter subtype" ); + } + bool connection = connect( this, SIGNAL( boundariesChanged() ), + d->implementor->plotterPrivate(), SLOT( changedProperties() ) ); + Q_ASSERT( connection ); + Q_UNUSED( connection ); + + // d->lineType = type; + Q_ASSERT( d->implementor->type() == type ); + + setDataBoundariesDirty(); + emit layoutChanged( this ); + emit propertiesChanged(); +} + +/** + * @return the type of the plotter + */ +Plotter::PlotType Plotter::type() const +{ + return d->implementor->type(); +} + +/** + * Sets the global line attributes to \a la + */ +void Plotter::setLineAttributes( const LineAttributes& la ) +{ + d->attributesModel->setModelData( qVariantFromValue( la ), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the line attributes of data set \a column to \a la + */ +void Plotter::setLineAttributes( int column, const LineAttributes& la ) +{ + d->setDatasetAttrs( column, qVariantFromValue( la ), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Resets the line attributes of data set \a column + */ +void Plotter::resetLineAttributes( int column ) +{ + d->resetDatasetAttrs( column, LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the line attributes for the model index \a index to \a la + */ +void Plotter::setLineAttributes( const QModelIndex & index, const LineAttributes& la ) +{ + d->attributesModel->setData( d->attributesModel->mapFromSource( index ), + qVariantFromValue( la ), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Remove any explicit line attributes settings that might have been specified before. + */ +void Plotter::resetLineAttributes( const QModelIndex & index ) +{ + d->attributesModel->resetData( + d->attributesModel->mapFromSource(index), LineAttributesRole ); + emit propertiesChanged(); +} + +/** + * @return the global line attribute set + */ +LineAttributes Plotter::lineAttributes() const +{ + return d->attributesModel->data( KDChart::LineAttributesRole ).value(); +} + +/** + * @return the line attribute set of data set \a column + */ +LineAttributes Plotter::lineAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, LineAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value(); + return lineAttributes(); +} + +/** + * @return the line attribute set of the model index \a index + */ +LineAttributes Plotter::lineAttributes( const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), KDChart::LineAttributesRole ).value(); +} + +/** + * Sets the global 3D line attributes to \a la + */ +void Plotter::setThreeDLineAttributes( const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->attributesModel->setModelData( qVariantFromValue( la ), ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the 3D line attributes of data set \a column to \a la + */ +void Plotter::setThreeDLineAttributes( int column, const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->setDatasetAttrs( column, qVariantFromValue( la ), ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * Sets the 3D line attributes of model index \a index to \a la + */ +void Plotter::setThreeDLineAttributes( const QModelIndex& index, const ThreeDLineAttributes& la ) +{ + setDataBoundariesDirty(); + d->attributesModel->setData( d->attributesModel->mapFromSource( index ), qVariantFromValue( la ), + ThreeDLineAttributesRole ); + emit propertiesChanged(); +} + +/** + * @return the global 3D line attributes + */ +ThreeDLineAttributes Plotter::threeDLineAttributes() const +{ + return d->attributesModel->data( KDChart::ThreeDLineAttributesRole ).value(); +} + +/** + * @return the 3D line attributes of data set \a column + */ +ThreeDLineAttributes Plotter::threeDLineAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, ThreeDLineAttributesRole ) ); + if ( attrs.isValid() ) { + return attrs.value(); + } + return threeDLineAttributes(); +} + +/** + * @return the 3D line attributes of the model index \a index + */ +ThreeDLineAttributes Plotter::threeDLineAttributes( const QModelIndex& index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), KDChart::ThreeDLineAttributesRole ).value(); +} + +qreal Plotter::threeDItemDepth( const QModelIndex & index ) const +{ + return threeDLineAttributes( index ).validDepth(); +} + +qreal Plotter::threeDItemDepth( int column ) const +{ + return threeDLineAttributes( column ).validDepth(); +} + +/** + * Sets the value tracker attributes of the model index \a index to \a va + */ +void Plotter::setValueTrackerAttributes( const QModelIndex & index, const ValueTrackerAttributes & va ) +{ + d->attributesModel->setData( d->attributesModel->mapFromSource( index ), + qVariantFromValue( va ), KDChart::ValueTrackerAttributesRole ); + emit propertiesChanged(); +} + +/** + * Returns the value tracker attributes of the model index \a index + */ +ValueTrackerAttributes Plotter::valueTrackerAttributes( const QModelIndex & index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), KDChart::ValueTrackerAttributesRole ).value(); +} + +void Plotter::resizeEvent ( QResizeEvent* ) +{ +} + +const QPair< QPointF, QPointF > Plotter::calculateDataBoundaries() const +{ + if ( !checkInvariants( true ) ) + return QPair< QPointF, QPointF >( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + + // note: calculateDataBoundaries() is ignoring the hidden flags. + // That's not a bug but a feature: Hiding data does not mean removing them. + // For totally removing data from KD Chart's view people can use e.g. a proxy model ... + + // calculate boundaries for different line types Normal - Stacked - Percent - Default Normal + return d->implementor->calculateDataBoundaries(); +} + + +void Plotter::paintEvent ( QPaintEvent*) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle ( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void Plotter::paint( PaintContext* ctx ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants( true ) ) return; + + AbstractCoordinatePlane* const plane = ctx->coordinatePlane(); + if ( ! plane ) return; + d->setCompressorResolution( size(), plane ); + + if ( !AbstractGrid::isBoundariesValid(dataBoundaries()) ) return; + + const PainterSaver p( ctx->painter() ); + if ( model()->rowCount( rootIndex() ) == 0 || model()->columnCount( rootIndex() ) == 0 ) + return; // nothing to paint for us + + ctx->setCoordinatePlane( plane->sharedAxisMasterPlane( ctx->painter() ) ); + + // paint different line types Normal - Stacked - Percent - Default Normal + d->implementor->paint( ctx ); + + ctx->setCoordinatePlane( plane ); +} + +void Plotter::resize ( const QSizeF& size ) +{ + d->setCompressorResolution( size, coordinatePlane() ); + if ( useDataCompression() == Plotter::BOTH || useDataCompression() == Plotter::DISTANCE ) + { + d->plotterCompressor.cleanCache(); + calcMergeRadius(); + } + setDataBoundariesDirty(); + QAbstractItemView::resize( size.toSize() ); +} + +void Plotter::setDataBoundariesDirty() +{ + AbstractCartesianDiagram::setDataBoundariesDirty(); + if ( useDataCompression() == Plotter::DISTANCE || useDataCompression() == Plotter::BOTH ) + { + calcMergeRadius(); + //d->plotterCompressor.setMergeRadiusPercentage( d->mergeRadiusPercentage ); + } +} + +void Plotter::calcMergeRadius() +{ + CartesianCoordinatePlane *plane = dynamic_cast< CartesianCoordinatePlane* >( coordinatePlane() ); + Q_ASSERT( plane ); + //Q_ASSERT( plane->translate( plane->translateBack( plane->visibleDiagramArea().topLeft() ) ) == plane->visibleDiagramArea().topLeft() ); + QRectF range = plane->visibleDataRange(); + //qDebug() << range; + const qreal radius = std::sqrt( ( range.x() + range.width() ) * ( range.y() + range.height() ) ); + //qDebug() << radius; + //qDebug() << radius * d->mergeRadiusPercentage; + //qDebug() << d->mergeRadiusPercentage; + d->plotterCompressor.setMergeRadius( radius * d->mergeRadiusPercentage ); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int Plotter::numberOfAbscissaSegments () const +{ + return d->attributesModel->rowCount( attributesModelRootIndex() ); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int Plotter::numberOfOrdinateSegments () const +{ + return d->attributesModel->columnCount( attributesModelRootIndex() ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.h new file mode 100644 index 00000000..15d7606a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter.h @@ -0,0 +1,144 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPLOTTER_H +#define KDCHARTPLOTTER_H + +#include "KDChartAbstractCartesianDiagram.h" + +#include "KDChartLineAttributes.h" +#include "KDChartValueTrackerAttributes.h" + +namespace KDChart { + + class ThreeDLineAttributes; + +/** + * @brief Plotter defines a diagram type plotting two-dimensional data. + */ +class KDCHART_EXPORT Plotter : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( Plotter ) + Q_ENUMS( CompressionMode ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( Plotter, CartesianCoordinatePlane ) + Q_PROPERTY( CompressionMode useDataCompression READ useDataCompression WRITE setUseDataCompression ) + Q_PROPERTY( qreal mergeRadiusPercentage READ mergeRadiusPercentage WRITE setMergeRadiusPercentage ) + +public: + // SLOPE enables a compression based on minmal slope changes + // DISTANCE is still buggy and can fail, same for BOTH, NONE is the default mode + enum CompressionMode{ SLOPE, DISTANCE, BOTH, NONE }; + class PlotterType; + friend class PlotterType; + + explicit Plotter( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); + virtual ~Plotter(); + + virtual Plotter* clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const Plotter* other ) const; + + enum PlotType { + Normal = 0, + Percent, + Stacked + }; + + + void setType( const PlotType type ); + PlotType type() const; + + void setLineAttributes( const LineAttributes & a ); + void setLineAttributes( int column, const LineAttributes & a ); + void setLineAttributes( const QModelIndex & index, const LineAttributes & a ); + void resetLineAttributes( int column ); + void resetLineAttributes( const QModelIndex & index ); + LineAttributes lineAttributes() const; + LineAttributes lineAttributes( int column ) const; + LineAttributes lineAttributes( const QModelIndex & index ) const; + + void setThreeDLineAttributes( const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a ); + void setThreeDLineAttributes( const QModelIndex & index, + const ThreeDLineAttributes & a ); + + ThreeDLineAttributes threeDLineAttributes() const; + ThreeDLineAttributes threeDLineAttributes( int column ) const; + ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const; + + void setValueTrackerAttributes( const QModelIndex & index, + const ValueTrackerAttributes & a ); + ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const; + + CompressionMode useDataCompression() const; + void setUseDataCompression( CompressionMode value ); + + qreal maxSlopeChange() const; + void setMaxSlopeChange( qreal value ); + + qreal mergeRadiusPercentage() const; + void setMergeRadiusPercentage( qreal value ); + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + // implement AbstractCartesianDiagram + /* reimpl */ + const int numberOfAbscissaSegments () const; + /* reimpl */ + const int numberOfOrdinateSegments () const; +#else + // implement AbstractCartesianDiagram + /* reimpl */ + int numberOfAbscissaSegments () const; + /* reimpl */ + int numberOfOrdinateSegments () const; +#endif + +protected Q_SLOTS: + void connectAttributesModel( AttributesModel* ); + +protected: + void paint ( PaintContext* paintContext ); + +public: + void resize ( const QSizeF& area ); + +protected: + virtual qreal threeDItemDepth( const QModelIndex & index ) const; + virtual qreal threeDItemDepth( int column ) const; + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); +protected Q_SLOTS: + void setDataBoundariesDirty(); + void calcMergeRadius(); +}; // End of class KDChart::Plotter + +} + +#endif // KDCHARTLINEDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.cpp new file mode 100644 index 00000000..fb6dd4ba --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.cpp @@ -0,0 +1,937 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPlotterDiagramCompressor.h" + +#include "KDChartPlotterDiagramCompressor_p.h" +#include + +#include +#include + +using namespace KDChart; + +qreal calculateSlope( const PlotterDiagramCompressor::DataPoint &lhs, const PlotterDiagramCompressor::DataPoint & rhs ) +{ + return ( rhs.value - lhs.value ) / ( rhs.key - lhs.key ); +} + +PlotterDiagramCompressor::Iterator::Iterator( int dataSet, PlotterDiagramCompressor *parent ) + : m_parent( parent ) + , m_index( 0 ) + , m_dataset( dataSet ) + , m_bufferIndex( 0 ) + , m_rebuffer( true ) +{ + if ( m_parent ) + { + if ( parent->rowCount() > m_dataset && parent->rowCount() > 0 ) + { + m_buffer.append( parent->data( CachePosition( m_index, m_dataset ) ) ); + } + } + else + { + m_dataset = - 1; + m_index = - 1; + } +} + +PlotterDiagramCompressor::Iterator::Iterator( int dataSet, PlotterDiagramCompressor *parent, QVector< DataPoint > buffer ) + : m_parent( parent ) + , m_buffer( buffer ) + , m_index( 0 ) + , m_dataset( dataSet ) + , m_bufferIndex( 0 ) + , m_rebuffer( false ) + , m_timeOfCreation( QDateTime::currentDateTime() ) +{ + if ( !m_parent ) + { + m_dataset = -1 ; + m_index = - 1; + } + else + { + // buffer needs to be filled + if ( parent->datasetCount() > m_dataset && parent->rowCount() > 0 && m_buffer.isEmpty() ) + { + m_buffer.append( parent->data( CachePosition( m_index, m_dataset ) ) ); + m_rebuffer = true; + } + } +} + +PlotterDiagramCompressor::Iterator::~Iterator() +{ + if ( m_parent ) + { + if ( m_parent.data()->d->m_timeOfLastInvalidation < m_timeOfCreation ) + m_parent.data()->d->m_bufferlist[ m_dataset ] = m_buffer; + } +} + +bool PlotterDiagramCompressor::Iterator::isValid() const +{ + if ( m_parent == 0 ) + return false; + return m_dataset >= 0 && m_index >= 0 && m_parent.data()->rowCount() > m_index; +} + +//PlotterDiagramCompressor::Iterator& PlotterDiagramCompressor::Iterator::operator++() +//{ +// ++m_index; + +// ++m_bufferIndex; +// // the version that checks dataBoundaries is seperated here, this is to avoid the runtime cost +// // of checking everytime the boundaries if thats not necessary +// if ( m_parent.data()->d->forcedBoundaries( Qt::Vertical ) || m_parent.data()->d->forcedBoundaries( Qt::Vertical ) ) +// { +// if ( m_bufferIndex >= m_buffer.count() && m_rebuffer ) +// { +// if ( m_index < m_parent.data()->rowCount() ) +// { +// PlotterDiagramCompressor::DataPoint dp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// if ( m_parent.data()->d->inBoundaries( Qt::Vertical, dp ) && m_parent.data()->d->inBoundaries( Qt::Horizontal, dp ) ) +// { +// m_buffer.append( dp ); +// } +// else +// { +// if ( m_index + 1 < m_parent.data()->rowCount() ) +// { +// PlotterDiagramCompressor::DataPoint dp1 = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// if ( m_parent.data()->d->inBoundaries( Qt::Vertical, dp1 ) && m_parent.data()->d->inBoundaries( Qt::Horizontal, dp1 ) ) +// { +// m_buffer.append( dp ); +// } +// } +// } +// } +// } +// else +// { +// if ( m_bufferIndex == m_buffer.count() ) +// m_index = - 1; +// return *this; +// } +// PlotterDiagramCompressor::DataPoint dp; +// if ( isValid() ) +// dp = m_parent.data()->data( CachePosition( m_index - 1, m_dataset ) ); +// if ( m_parent ) +// { +// if ( m_index >= m_parent.data()->rowCount() ) +// m_index = -1; +// else +// { +// const qreal mergeRadius = m_parent.data()->d->m_mergeRadius; +// PlotterDiagramCompressor::DataPoint newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// while ( dp.distance( newdp ) <= mergeRadius +// || !( m_parent.data()->d->inBoundaries( Qt::Vertical, dp ) || m_parent.data()->d->inBoundaries( Qt::Horizontal, dp ) ) ) +// { +// ++m_index; +// if ( m_index >= m_parent.data()->rowCount() ) +// { +// m_index = - 1; +// break; +// } +// newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// } +// } +// } +// } +// else +// { +// // we have a new point in the buffer +// if ( m_bufferIndex >= m_buffer.count() && m_rebuffer ) +// { +// if ( m_index < m_parent.data()->rowCount() ) +// m_buffer.append( m_parent.data()->data( CachePosition( m_index, m_dataset ) ) ); +// } +// else +// { +// if ( m_bufferIndex == m_buffer.count() ) +// m_index = - 1; +// return *this; +// } +// PlotterDiagramCompressor::DataPoint dp; +// if ( isValid() ) +// dp = m_parent.data()->data( CachePosition( m_index - 1, m_dataset ) ); +// // make sure we switch to the next point which would be in the buffer +// if ( m_parent ) +// { +// PlotterDiagramCompressor *parent = m_parent.data(); +// if ( m_index >= parent->rowCount() ) +// m_index = -1; +// else +// { +// switch ( parent->d->m_mode ) +// { +// case( PlotterDiagramCompressor::DISTANCE ): +// { +// const qreal mergeRadius = m_parent.data()->d->m_mergeRadius; +// PlotterDiagramCompressor::DataPoint newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// while ( dp.distance( newdp ) <= mergeRadius ) +// { +// ++m_index; +// if ( m_index >= m_parent.data()->rowCount() ) +// { +// m_index = - 1; +// break; +// } +// newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// } +// } +// break; +// case( PlotterDiagramCompressor::BOTH ): +// { +// const qreal mergeRadius = m_parent.data()->d->m_mergeRadius; +// PlotterDiagramCompressor::DataPoint newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// while ( dp.distance( newdp ) <= mergeRadius ) +// { +// ++m_index; +// if ( m_index >= m_parent.data()->rowCount() ) +// { +// m_index = - 1; +// break; +// } +// newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// } +// } +// break; +// case ( PlotterDiagramCompressor::SLOPE ): +// { +// const qreal mergedist = parent->d->m_maxSlopeRadius; +// qreal oldSlope = 0; +// qreal newSlope = 0; + +// PlotterDiagramCompressor::DataPoint newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// PlotterDiagramCompressor::DataPoint olddp = PlotterDiagramCompressor::DataPoint(); +// if ( m_bufferIndex > 1 ) +// { +// oldSlope = calculateSlope( m_buffer[ m_bufferIndex - 2 ], m_buffer[ m_bufferIndex - 1 ] ); +// newSlope = calculateSlope( m_buffer[ m_bufferIndex - 1 ], newdp ); +// } +// bool first = true; +// while ( qAbs( newSlope - oldSlope ) < mergedist ) +// { +// ++m_index; +// if ( m_index >= m_parent.data()->rowCount() ) +// { +// m_index = - 1; +// break; +// } +// if ( first ) +// { +// oldSlope = newSlope; +// first = false; +// } +// olddp = newdp; +// newdp = m_parent.data()->data( CachePosition( m_index, m_dataset ) ); +// newSlope = calculateSlope( olddp, newdp ); +// } +// } +// break; +// default: +// Q_ASSERT( false ); +// } +// } +// } +// } +// return *this; +//} + +void PlotterDiagramCompressor::Iterator::handleSlopeForward( const DataPoint &dp ) +{ + PlotterDiagramCompressor* parent = m_parent.data(); + const qreal mergedist = parent->d->m_maxSlopeRadius; + qreal oldSlope = 0; + qreal newSlope = 0; + + PlotterDiagramCompressor::DataPoint newdp = dp; + PlotterDiagramCompressor::DataPoint olddp = PlotterDiagramCompressor::DataPoint(); + if ( m_bufferIndex > 1 ) + { + //oldSlope = calculateSlope( m_buffer[ m_bufferIndex - 2 ], m_buffer[ m_bufferIndex - 1 ] ); + //newSlope = calculateSlope( m_buffer[ m_bufferIndex - 1 ], newdp ); + oldSlope = calculateSlope( parent->data( CachePosition( m_index - 2, m_dataset ) ) , parent->data( CachePosition( m_index - 1, m_dataset ) ) ); + newSlope = calculateSlope( parent->data( CachePosition( m_index - 1, m_dataset ) ), newdp ); + qreal accumulatedDist = qAbs( newSlope - oldSlope ); + qreal olddist = accumulatedDist; + qreal newdist; + int counter = 0; + while ( accumulatedDist < mergedist ) + { + ++m_index; + if ( m_index >= m_parent.data()->rowCount() ) + { + m_index = - 1; + if ( m_buffer.last() != parent->data( CachePosition( parent->rowCount() -1, m_dataset ) ) ) + m_index = parent->rowCount(); + break; + } + oldSlope = newSlope; + olddp = newdp; + newdp = parent->data( CachePosition( m_index, m_dataset ) ); + newSlope = calculateSlope( olddp, newdp ); + newdist = qAbs( newSlope - oldSlope ); + if ( olddist == newdist ) + { + ++counter; + } + else + { + if ( counter > 10 ) + break; + } + accumulatedDist += newdist; + olddist = newdist; + } + m_buffer.append( newdp ); + } + else + m_buffer.append( dp ); +} + +PlotterDiagramCompressor::Iterator& PlotterDiagramCompressor::Iterator::operator++() +{ + PlotterDiagramCompressor* parent = m_parent.data(); + Q_ASSERT( parent ); + const int count = parent->rowCount(); + //increment the indexes + ++m_index; + ++m_bufferIndex; + //if the index reached the end of the datamodel make this iterator an enditerator + //and make sure the buffer was not already build, if thats the case its not necessary + //to rebuild it and it would be hard to extend it as we had to know where m_index was + if ( m_index >= count || ( !m_rebuffer && m_bufferIndex == m_buffer.count() ) ) + { + if ( m_bufferIndex == m_buffer.count() ) + { + if ( m_buffer.last() != parent->data( CachePosition( parent->rowCount() -1, m_dataset ) ) ) + m_index = parent->rowCount(); + else + m_index = - 1; + ++m_bufferIndex; + } + else + m_index = -1; + } + //if we reached the end of the buffer continue filling the buffer + if ( m_bufferIndex == m_buffer.count() && m_index >= 0 && m_rebuffer ) + { + PlotterDiagramCompressor::DataPoint dp = parent->data( CachePosition( m_index, m_dataset ) ); + if ( parent->d->inBoundaries( Qt::Vertical, dp ) && parent->d->inBoundaries( Qt::Horizontal, dp ) ) + { + if ( parent->d->m_mode == PlotterDiagramCompressor::SLOPE ) + handleSlopeForward( dp ); + } + else + { + m_index = -1; + } + } + return *this; +} + +PlotterDiagramCompressor::Iterator PlotterDiagramCompressor::Iterator::operator++( int ) +{ + Iterator result = *this; + ++result; + return result; +} + +PlotterDiagramCompressor::Iterator& PlotterDiagramCompressor::Iterator::operator += ( int value ) +{ + for ( int index = m_index; index + value != m_index; ++( *this ) ) {}; + return *this; +} + +PlotterDiagramCompressor::Iterator& PlotterDiagramCompressor::Iterator::operator--() +{ + --m_index; + --m_bufferIndex; + return *this; +} + +PlotterDiagramCompressor::Iterator PlotterDiagramCompressor::Iterator::operator--( int ) +{ + Iterator result = *this; + --result; + return result; +} + +PlotterDiagramCompressor::Iterator& PlotterDiagramCompressor::Iterator::operator-=( int value ) +{ + m_index -= value; + return *this; +} + +PlotterDiagramCompressor::DataPoint PlotterDiagramCompressor::Iterator::operator*() +{ + if ( !m_parent ) + return PlotterDiagramCompressor::DataPoint(); + Q_ASSERT( m_parent ); + if ( m_index == m_parent.data()->rowCount() ) + return m_parent.data()->data( CachePosition( m_parent.data()->rowCount() - 1 , m_dataset ) ); + return m_buffer[ m_bufferIndex ]; +} + +bool PlotterDiagramCompressor::Iterator::operator==( const PlotterDiagramCompressor::Iterator &other ) const +{ + return m_parent.data() == other.m_parent.data() && m_index == other.m_index && m_dataset == other.m_dataset; +} + +bool PlotterDiagramCompressor::Iterator::operator!=( const PlotterDiagramCompressor::Iterator &other ) const +{ + return ! ( *this == other ); +} + +void PlotterDiagramCompressor::Iterator::invalidate() +{ + m_dataset = - 1; +} + +PlotterDiagramCompressor::Private::Private( PlotterDiagramCompressor *parent ) + : m_parent( parent ) + , m_model( 0 ) + , m_mergeRadius( 0.1 ) + , m_maxSlopeRadius( 0.1 ) + , m_boundary( qMakePair( QPointF( std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN() ) + , QPointF( std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN() ) ) ) + , m_forcedXBoundaries( qMakePair( std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN() ) ) + , m_forcedYBoundaries( qMakePair( std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN() ) ) + , m_mode( PlotterDiagramCompressor::SLOPE ) +{ + +} + +void PlotterDiagramCompressor::Private::setModelToZero() +{ + m_model = 0; +} + +inline bool inBoundary( const QPair< qreal, qreal > &bounds, qreal value ) +{ + return bounds.first <= value && value <= bounds.second; +} + +bool PlotterDiagramCompressor::Private::inBoundaries( Qt::Orientation orient, const PlotterDiagramCompressor::DataPoint &dp ) const +{ + if ( orient == Qt::Vertical && forcedBoundaries( Qt::Vertical ) ) + { + return inBoundary( m_forcedYBoundaries, dp.value ); + } + else if ( forcedBoundaries( Qt::Horizontal ) ) + { + return inBoundary( m_forcedXBoundaries, dp.key ); + } + return true; +} + +//// TODO this is not threadsafe do never try to invoke the painting in a different thread than this +//// method +//void PlotterDiagramCompressor::Private::rowsInserted( const QModelIndex& /*parent*/, int start, int end ) +//{ + +// if ( m_bufferlist.count() > 0 && !m_bufferlist[ 0 ].isEmpty() && start < m_bufferlist[ 0 ].count() ) +// { +// calculateDataBoundaries(); +// clearBuffer(); +// return; +// } +// // we are handling appends only here, a prepend might be added, insert is expensive if not needed +// qreal minX = std::numeric_limits< qreal >::max(); +// qreal minY = std::numeric_limits< qreal >::max(); +// qreal maxX = std::numeric_limits< qreal >::min(); +// qreal maxY = std::numeric_limits< qreal >::min(); +// for ( int dataset = 0; dataset < m_bufferlist.size(); ++dataset ) +// { +// PlotterDiagramCompressor::DataPoint predecessor = m_bufferlist[ dataset ].isEmpty() ? DataPoint() : m_bufferlist[ dataset ].last(); + +// qreal oldSlope = 0; +// qreal newSlope = 0; +// PlotterDiagramCompressor::DataPoint newdp = m_parent->data( CachePosition( start, dataset ) ); +// PlotterDiagramCompressor::DataPoint olddp = PlotterDiagramCompressor::DataPoint(); +// const int datacount = m_bufferlist[ dataset ].count(); +// if ( m_mode != PlotterDiagramCompressor::DISTANCE && m_bufferlist[ dataset ].count() > 1 ) +// { +// oldSlope = calculateSlope( m_bufferlist[ dataset ][ datacount - 2 ], m_bufferlist[ dataset ][ datacount - 1 ] ); +// newSlope = calculateSlope( m_bufferlist[ dataset ][ datacount - 1 ], newdp ); +// } +// bool first = true; +// for ( int row = start; row <= end; ++row ) +// { +// PlotterDiagramCompressor::DataPoint curdp = m_parent->data( CachePosition( row, dataset ) ); +// const bool checkcur = inBoundaries( Qt::Vertical, curdp ) && inBoundaries( Qt::Horizontal, curdp ); +// const bool checkpred = inBoundaries( Qt::Vertical, predecessor ) && inBoundaries( Qt::Horizontal, predecessor ); +// const bool check = checkcur || checkpred; +// switch ( m_mode ) +// { +// case( PlotterDiagramCompressor::BOTH ): +// { +// if ( predecessor.distance( curdp ) > m_mergeRadius && check ) +// { +// if ( start > m_bufferlist[ dataset ].count() && !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].append( curdp ); +// } +// else if ( !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].insert( row, curdp ); +// } +// predecessor = curdp; +// minX = qMin( curdp.key, m_boundary.first.x() ); +// minY = qMin( curdp.value, m_boundary.first.y() ); +// maxX = qMax( curdp.key, m_boundary.second.x() ); +// maxY = qMax( curdp.value, m_boundary.second.y() ); +// } +// } +// break; +// case ( PlotterDiagramCompressor::DISTANCE ): +// { +// if ( predecessor.distance( curdp ) > m_mergeRadius && check ) +// { +// if ( start > m_bufferlist[ dataset ].count() && !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].append( curdp ); +// } +// else if ( !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].insert( row, curdp ); +// } +// predecessor = curdp; +// minX = qMin( curdp.key, m_boundary.first.x() ); +// minY = qMin( curdp.value, m_boundary.first.y() ); +// maxX = qMax( curdp.key, m_boundary.second.x() ); +// maxY = qMax( curdp.value, m_boundary.second.y() ); +// } +// } +// break; +// case( PlotterDiagramCompressor::SLOPE ): +// { +// if ( check && qAbs( newSlope - oldSlope ) >= m_maxSlopeRadius ) +// { +// if ( start > m_bufferlist[ dataset ].count() && !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].append( curdp ); +// oldSlope = newSlope; +// } +// else if ( !m_bufferlist[ dataset ].isEmpty() ) +// { +// m_bufferlist[ dataset ].insert( row, curdp ); +// oldSlope = newSlope; +// } + +// predecessor = curdp; +// minX = qMin( curdp.key, m_boundary.first.x() ); +// minY = qMin( curdp.value, m_boundary.first.y() ); +// maxX = qMax( curdp.key, m_boundary.second.x() ); +// maxY = qMax( curdp.value, m_boundary.second.y() ); + +// if ( first ) +// { +// oldSlope = newSlope; +// first = false; +// } +// olddp = newdp; +// newdp = m_parent->data( CachePosition( row, dataset ) ); +// newSlope = calculateSlope( olddp, newdp ); +// } +// } +// break; +// } +// } +// } +// setBoundaries( qMakePair( QPointF( minX, minY ), QPointF( maxX, maxY ) ) ); +// emit m_parent->rowCountChanged(); +//} +#include +// TODO this is not threadsafe do never try to invoke the painting in a different thread than this +// method +void PlotterDiagramCompressor::Private::rowsInserted( const QModelIndex& /*parent*/, int start, int end ) +{ + + //Q_ASSERT( std::numeric_limits::quiet_NaN() < 5 || std::numeric_limits::quiet_NaN() > 5 ); + //Q_ASSERT( 5 == qMin( std::numeric_limits::quiet_NaN(), 5.0 ) ); + //Q_ASSERT( 5 == qMax( 5.0, std::numeric_limits::quiet_NaN() ) ); + if ( m_bufferlist.count() > 0 && !m_bufferlist[ 0 ].isEmpty() && start < m_bufferlist[ 0 ].count() ) + { + calculateDataBoundaries(); + clearBuffer(); + return; + } + + // we are handling appends only here, a prepend might be added, insert is expensive if not needed + qreal minX = m_boundary.first.x(); + qreal minY = m_boundary.first.y(); + qreal maxX = m_boundary.second.x(); + qreal maxY = m_boundary.second.y(); + for ( int dataset = 0; dataset < m_bufferlist.size(); ++dataset ) + { + if ( m_mode == PlotterDiagramCompressor::SLOPE ) + { + PlotterDiagramCompressor::DataPoint predecessor = m_bufferlist[ dataset ].isEmpty() ? DataPoint() : m_bufferlist[ dataset ].last(); + qreal oldSlope = 0; + qreal newSlope = 0; + int counter = 0; + + PlotterDiagramCompressor::DataPoint newdp = m_parent->data( CachePosition( start, dataset ) ); + PlotterDiagramCompressor::DataPoint olddp = PlotterDiagramCompressor::DataPoint(); + if ( start > 1 ) + { + oldSlope = calculateSlope( m_parent->data( CachePosition( start - 2, dataset ) ), m_parent->data( CachePosition( start - 1, dataset ) ) ); + olddp = m_parent->data( CachePosition( start - 1, dataset ) ); + } + else + { + m_bufferlist[ dataset ].append( newdp ); + minX = qMin( minX, newdp.key ); + minY = qMin( minY, newdp.value ); + maxX = qMax( newdp.key, maxX ); + maxY = qMax( newdp.value, maxY ); + continue; + } + + qreal olddist = 0; + qreal newdist = 0; + for ( int row = start; row <= end; ++row ) + { + PlotterDiagramCompressor::DataPoint curdp = m_parent->data( CachePosition( row, dataset ) ); + newdp = curdp; + newSlope = calculateSlope( olddp, newdp ); + olddist = newdist; + newdist = qAbs( newSlope - oldSlope ); + m_accumulatedDistances[ dataset ] += newdist; + const bool checkcur = inBoundaries( Qt::Vertical, curdp ) && inBoundaries( Qt::Horizontal, curdp ); + const bool checkpred = inBoundaries( Qt::Vertical, predecessor ) && inBoundaries( Qt::Horizontal, predecessor ); + const bool check = checkcur || checkpred; + + if ( m_accumulatedDistances[ dataset ] >= m_maxSlopeRadius && check ) + { + if ( start > m_bufferlist[ dataset ].count() && !m_bufferlist[ dataset ].isEmpty() ) + { + m_bufferlist[ dataset ].append( curdp ); + } + else if ( !m_bufferlist[ dataset ].isEmpty() ) + { + m_bufferlist[ dataset ].insert( row, curdp ); + } + predecessor = curdp; + m_accumulatedDistances[ dataset ] = 0; + } + minX = qMin( minX, curdp.key ); + minY = qMin( minY, curdp.value ); + maxX = qMax( curdp.key, maxX ); + maxY = qMax( curdp.value, maxY ); + + oldSlope = newSlope; + olddp = newdp; + if ( olddist == newdist ) + { + ++counter; + } + else + { + if ( counter > 10 ) + { + m_bufferlist[ dataset ].append( curdp ); + predecessor = curdp; + m_accumulatedDistances[ dataset ] = 0; + } + } + } + setBoundaries( qMakePair( QPointF( minX, minY ), QPointF( maxX, maxY ) ) ); + } + else + { + PlotterDiagramCompressor::DataPoint predecessor = m_bufferlist[ dataset ].isEmpty() ? DataPoint() : m_bufferlist[ dataset ].last(); + + for ( int row = start; row <= end; ++row ) + { + PlotterDiagramCompressor::DataPoint curdp = m_parent->data( CachePosition( row, dataset ) ); + const bool checkcur = inBoundaries( Qt::Vertical, curdp ) && inBoundaries( Qt::Horizontal, curdp ); + const bool checkpred = inBoundaries( Qt::Vertical, predecessor ) && inBoundaries( Qt::Horizontal, predecessor ); + const bool check = checkcur || checkpred; + if ( predecessor.distance( curdp ) > m_mergeRadius && check ) + { + if ( start > m_bufferlist[ dataset ].count() && !m_bufferlist[ dataset ].isEmpty() ) + { + m_bufferlist[ dataset ].append( curdp ); + } + else if ( !m_bufferlist[ dataset ].isEmpty() ) + { + m_bufferlist[ dataset ].insert( row, curdp ); + } + predecessor = curdp; + qreal minX = qMin( curdp.key, m_boundary.first.x() ); + qreal minY = qMin( curdp.value, m_boundary.first.y() ); + qreal maxX = qMax( curdp.key, m_boundary.second.x() ); + qreal maxY = qMax( curdp.value, m_boundary.second.y() ); + setBoundaries( qMakePair( QPointF( minX, minY ), QPointF( maxX, maxY ) ) ); + } + } + } + } + emit m_parent->rowCountChanged(); +} + + +void PlotterDiagramCompressor::setCompressionModel( CompressionMode value ) +{ + Q_ASSERT( d ); + if ( d->m_mode != value ) + { + d->m_mode = value; + d->clearBuffer(); + emit rowCountChanged(); + } +} + +void PlotterDiagramCompressor::Private::setBoundaries( const Boundaries & bound ) +{ + if ( bound != m_boundary ) + { + m_boundary = bound; + emit m_parent->boundariesChanged(); + } +} + +void PlotterDiagramCompressor::Private::calculateDataBoundaries() +{ + if ( !forcedBoundaries( Qt::Vertical ) || !forcedBoundaries( Qt::Horizontal ) ) + { + qreal minX = std::numeric_limits::quiet_NaN(); + qreal minY = std::numeric_limits::quiet_NaN(); + qreal maxX = std::numeric_limits::quiet_NaN(); + qreal maxY = std::numeric_limits::quiet_NaN(); + for ( int dataset = 0; dataset < m_parent->datasetCount(); ++dataset ) + { + for ( int row = 0; row < m_parent->rowCount(); ++ row ) + { + PlotterDiagramCompressor::DataPoint dp = m_parent->data( CachePosition( row, dataset ) ); + minX = qMin( minX, dp.key ); + minY = qMin( minY, dp.value ); + maxX = qMax( dp.key, maxX ); + maxY = qMax( dp.value, maxY ); + Q_ASSERT( !ISNAN( minX ) ); + Q_ASSERT( !ISNAN( minY ) ); + Q_ASSERT( !ISNAN( maxX ) ); + Q_ASSERT( !ISNAN( maxY ) ); + } + } + if ( forcedBoundaries( Qt::Vertical ) ) + { + minY = m_forcedYBoundaries.first; + maxY = m_forcedYBoundaries.second; + } + if ( forcedBoundaries( Qt::Horizontal ) ) + { + minX = m_forcedXBoundaries.first; + maxX = m_forcedXBoundaries.second; + } + setBoundaries( qMakePair( QPointF( minX, minY ), QPointF( maxX, maxY ) ) ); + } +} + +QModelIndexList PlotterDiagramCompressor::Private::mapToModel( const CachePosition &pos ) +{ + QModelIndexList indexes; + QModelIndex index; + index = m_model->index( pos.first, pos.second * 2, QModelIndex() ); + Q_ASSERT( index.isValid() ); + indexes << index; + index = m_model->index( pos.first, pos.second * 2 + 1, QModelIndex() ); + Q_ASSERT( index.isValid() ); + indexes << index; + return indexes; +} + +bool PlotterDiagramCompressor::Private::forcedBoundaries( Qt::Orientation orient ) const +{ + if ( orient == Qt::Vertical ) + return !ISNAN( m_forcedYBoundaries.first ) && !ISNAN( m_forcedYBoundaries.second ); + else + return !ISNAN( m_forcedXBoundaries.first ) && !ISNAN( m_forcedXBoundaries.second ); +} + +void PlotterDiagramCompressor::Private::clearBuffer() +{ + //TODO all iterator have to be invalid after this operation + //TODO make sure there are no regressions, the timeOfLastInvalidation should stop iterators from + // corrupting the cache + m_bufferlist.clear(); + m_bufferlist.resize( m_parent->datasetCount() ); + m_accumulatedDistances.clear(); + m_accumulatedDistances.resize( m_parent->datasetCount() ); + m_timeOfLastInvalidation = QDateTime::currentDateTime(); +} + +PlotterDiagramCompressor::PlotterDiagramCompressor(QObject *parent) + : QObject(parent) + , d( new Private( this ) ) +{ +} + +PlotterDiagramCompressor::~PlotterDiagramCompressor() +{ + delete d; + d = 0; +} + +void PlotterDiagramCompressor::setForcedDataBoundaries( const QPair< qreal, qreal > &bounds, Qt::Orientation direction ) +{ + if ( direction == Qt::Vertical ) + { + d->m_forcedYBoundaries = bounds; + } + else + { + d->m_forcedXBoundaries = bounds; + } + d->clearBuffer(); + emit boundariesChanged(); +} + +QAbstractItemModel* PlotterDiagramCompressor::model() const +{ + Q_ASSERT( d ); + return d->m_model; +} + +void PlotterDiagramCompressor::setModel( QAbstractItemModel *model ) +{ + Q_ASSERT( d ); + if ( d->m_model ) + { + d->m_model->disconnect( this ); + d->m_model->disconnect( d ); + } + d->m_model = model; + if ( d->m_model) + { + d->m_bufferlist.resize( datasetCount() ); + d->m_accumulatedDistances.resize( datasetCount() ); + d->calculateDataBoundaries(); + connect( d->m_model, SIGNAL( rowsInserted ( QModelIndex, int, int ) ), d, SLOT( rowsInserted( QModelIndex, int, int ) ) ); + connect( d->m_model, SIGNAL( modelReset() ), d, SLOT( clearBuffer() ) ); + connect( d->m_model, SIGNAL( destroyed( QObject* ) ), d, SLOT( setModelToZero() ) ); + } +} + +PlotterDiagramCompressor::DataPoint PlotterDiagramCompressor::data( const CachePosition& pos ) const +{ + DataPoint point; + QModelIndexList indexes = d->mapToModel( pos ); + Q_ASSERT( indexes.count() == 2 ); + QVariant yValue = d->m_model->data( indexes.last() ); + QVariant xValue = d->m_model->data( indexes.first() ); + Q_ASSERT( xValue.isValid() ); + Q_ASSERT( yValue.isValid() ); + bool ok = false; + point.key = xValue.toReal( &ok ); + Q_ASSERT( ok ); + ok = false; + point.value = yValue.toReal( &ok ); + Q_ASSERT( ok ); + point.index = indexes.first(); + return point; +} + +void PlotterDiagramCompressor::setMergeRadius( qreal radius ) +{ + if ( d->m_mergeRadius != radius ) + { + d->m_mergeRadius = radius; + if ( d->m_mode != PlotterDiagramCompressor::SLOPE ) + emit rowCountChanged(); + } +} + +void PlotterDiagramCompressor::setMaxSlopeChange( qreal value ) +{ + if ( d->m_maxSlopeRadius != value ) + { + d->m_maxSlopeRadius = value; + emit boundariesChanged(); + } +} + +qreal PlotterDiagramCompressor::maxSlopeChange() const +{ + return d->m_maxSlopeRadius; +} + +void PlotterDiagramCompressor::setMergeRadiusPercentage( qreal radius ) +{ + Boundaries bounds = dataBoundaries(); + const qreal width = radius * ( bounds.second.x() - bounds.first.x() ); + const qreal height = radius * ( bounds.second.y() - bounds.first.y() ); + const qreal realRadius = std::sqrt( width * height ); + setMergeRadius( realRadius ); +} + +int PlotterDiagramCompressor::rowCount() const +{ + return d->m_model ? d->m_model->rowCount() : 0; +} + +void PlotterDiagramCompressor::cleanCache() +{ + d->clearBuffer(); +} + +int PlotterDiagramCompressor::datasetCount() const +{ + if ( d->m_model && d->m_model->columnCount() == 0 ) + return 0; + return d->m_model ? ( d->m_model->columnCount() + 1 ) / 2 : 0; +} + +QPair< QPointF, QPointF > PlotterDiagramCompressor::dataBoundaries() const +{ + Boundaries bounds = d->m_boundary; + if ( d->forcedBoundaries( Qt::Vertical ) ) + { + bounds.first.setY( d->m_forcedYBoundaries.first ); + bounds.second.setY( d->m_forcedYBoundaries.second ); + } + if ( d->forcedBoundaries( Qt::Horizontal ) ) + { + bounds.first.setX( d->m_forcedXBoundaries.first ); + bounds.second.setX( d->m_forcedXBoundaries.second ); + } + return bounds; +} + +PlotterDiagramCompressor::Iterator PlotterDiagramCompressor::begin( int dataSet ) +{ + Q_ASSERT( dataSet >= 0 && dataSet < d->m_bufferlist.count() ); + return Iterator( dataSet, this, d->m_bufferlist[ dataSet ] ); +} + +PlotterDiagramCompressor::Iterator PlotterDiagramCompressor::end( int dataSet ) +{ + Iterator it( dataSet, this ); + it.m_index = -1; + return it; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.h new file mode 100644 index 00000000..9b75213d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor.h @@ -0,0 +1,162 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PLOTTERDIAGRAMCOMPRESSOR_H +#define PLOTTERDIAGRAMCOMPRESSOR_H + +#include +#include +#if QT_VERSION < 0x050000 +#include +#else +#include +#endif +#include +#include + +#include +#include + +namespace KDChart +{ + + +class PlotterDiagramCompressor : public QObject +{ + Q_OBJECT + Q_ENUMS( CompressionMode ) +public: + + enum CompressionMode{ SLOPE = 0, DISTANCE, BOTH }; + class DataPoint { + public: + DataPoint() + : key( std::numeric_limits< qreal >::quiet_NaN() ), + value( std::numeric_limits< qreal >::quiet_NaN() ), + hidden( false ) + {} + inline qreal distance( const DataPoint &other ) + { + const qreal dx = key - other.key; + const qreal dy = value - other.value; + return std::sqrt( dx * dx + dy * dy ); + } + + inline bool operator==( const DataPoint &other ) + { + return key == other.key && value == other.value; + } + + inline bool operator!=( const DataPoint &other ) + { + return !( *this == other ); + } + + qreal key; + qreal value; + bool hidden; + QModelIndex index; + }; + + class Iterator + { + friend class PlotterDiagramCompressor; + public: + Iterator( int dataSet, PlotterDiagramCompressor *parent ); + ~Iterator(); + bool isValid() const; + Iterator& operator++(); + Iterator operator++( int ); + Iterator& operator += ( int value ); + Iterator& operator--(); + Iterator operator--( int ); + Iterator& operator-=( int value ); + DataPoint operator*(); + bool operator==( const Iterator &other ) const; + bool operator!=( const Iterator &other ) const; + void invalidate(); + protected: + Iterator( int dataSet, PlotterDiagramCompressor *parent, QVector< DataPoint > buffer ); + private: + void handleSlopeForward( const DataPoint &dp ); +#if QT_VERSION < 0x050000 + QWeakPointer< PlotterDiagramCompressor > m_parent; +#else + QPointer< PlotterDiagramCompressor > m_parent; +#endif + QVector< DataPoint > m_buffer; + int m_index; + int m_dataset; + int m_bufferIndex; + int m_rebuffer; + QDateTime m_timeOfCreation; + }; + + typedef QVector DataPointVector; + class CachePosition { + public: + CachePosition() + : first( -1 ), + second( -1 ) + {} + CachePosition( int first, int second ) + : first( first ), + second( second ) + {} + int first; + int second; + + bool operator==( const CachePosition& rhs ) const + { + return first == rhs.first && + second == rhs.second; + } + }; + explicit PlotterDiagramCompressor(QObject *parent = 0); + ~PlotterDiagramCompressor(); + Iterator begin( int dataSet ); + Iterator end( int dataSet ); + void setMergeRadius( qreal radius ); + void setMergeRadiusPercentage( qreal radius ); + void setModel( QAbstractItemModel *model ); + QAbstractItemModel* model() const; + DataPoint data( const CachePosition& pos ) const; + int rowCount() const; + int datasetCount() const; + void setCompressionModel( CompressionMode value ); + void setMaxSlopeChange( qreal value ); + qreal maxSlopeChange() const; + void cleanCache(); + QPair< QPointF, QPointF > dataBoundaries() const; + void setForcedDataBoundaries( const QPair< qreal, qreal > &bounds, Qt::Orientation direction ); +Q_SIGNALS: + void boundariesChanged(); + void rowCountChanged(); + +private: + class Private; + Private *d; +}; + +} + +#endif // PLOTTERDIAGRAMCOMPRESSOR_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor_p.h new file mode 100644 index 00000000..405ecc39 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotterDiagramCompressor_p.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PLOTTERDIAGRAMCOMPRESSOR_P_H +#define PLOTTERDIAGRAMCOMPRESSOR_P_H + +#include "KDChartPlotterDiagramCompressor.h" + +#include +#include + +typedef QPair< QPointF, QPointF > Boundaries; + +namespace KDChart +{ + +class PlotterDiagramCompressor::Private : public QObject +{ + Q_OBJECT +public: + Private( PlotterDiagramCompressor *parent ); + QModelIndexList mapToModel( const CachePosition& pos ); + void calculateDataBoundaries(); + void setBoundaries( const Boundaries &bound ); + bool forcedBoundaries( Qt::Orientation orient ) const; + bool inBoundaries( Qt::Orientation orient, const PlotterDiagramCompressor::DataPoint &dp ) const; + PlotterDiagramCompressor *m_parent; + QAbstractItemModel *m_model; + qreal m_mergeRadius; + qreal m_maxSlopeRadius; + QVector< QVector< DataPoint > > m_bufferlist; + Boundaries m_boundary; + QPair< qreal, qreal > m_forcedXBoundaries; + QPair< qreal, qreal > m_forcedYBoundaries; + QDateTime m_timeOfLastInvalidation; + PlotterDiagramCompressor::CompressionMode m_mode; + QVector< qreal > m_accumulatedDistances; + //QVector< PlotterDiagramCompressor::Iterator > exisitingIterators; +public Q_SLOTS: + void rowsInserted( const QModelIndex& parent, int start, int end ); + void clearBuffer(); + void setModelToZero(); +}; + +} + +#endif // PLOTTERDIAGRAMCOMPRESSOR_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.cpp new file mode 100644 index 00000000..7afbbe09 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.cpp @@ -0,0 +1,99 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPlotter_p.h" +#include "KDChartPlotter.h" + +#include "KDChartPainterSaver_p.h" +#include "KDChartValueTrackerAttributes.h" +#include "PaintingHelpers_p.h" + +using namespace KDChart; + +Plotter::Private::Private( const Private& rhs ) + : QObject() + , AbstractCartesianDiagram::Private( rhs ) + , useCompression( rhs.useCompression ) +{ +} + +void Plotter::Private::init() +{ + AbstractCartesianDiagram::Private::init(); + useCompression = Plotter::NONE; +} + +void Plotter::Private::setCompressorResolution( + const QSizeF& size, + const AbstractCoordinatePlane* plane ) +{ + compressor.setResolution( static_cast( size.width() * plane->zoomFactorX() ), + static_cast( size.height() * plane->zoomFactorY() ) ); +} + +void Plotter::Private::changedProperties() +{ + if ( CartesianCoordinatePlane* plane = dynamic_cast< CartesianCoordinatePlane* > ( diagram->coordinatePlane() ) ) + { + QPair< qreal, qreal > verticalRange = plane->verticalRange(); + if ( verticalRange.first != verticalRange.second ) + implementor->plotterCompressor().setForcedDataBoundaries( verticalRange, Qt::Vertical ); + QPair< qreal, qreal > horizontalRange = plane->horizontalRange(); + if ( verticalRange.first != horizontalRange.second ) + implementor->plotterCompressor().setForcedDataBoundaries( horizontalRange, Qt::Horizontal ); + } +} + +AttributesModel* Plotter::PlotterType::attributesModel() const +{ + return m_private->attributesModel; +} + +ReverseMapper& Plotter::PlotterType::reverseMapper() +{ + return m_private->reverseMapper; +} + +Plotter* Plotter::PlotterType::diagram() const +{ + return static_cast< Plotter* >( m_private->diagram ); +} + +CartesianDiagramDataCompressor& Plotter::PlotterType::compressor() const +{ + return m_private->compressor; +} + +PlotterDiagramCompressor& Plotter::PlotterType::plotterCompressor() const +{ + return m_private->plotterCompressor; +} + +Plotter::CompressionMode Plotter::PlotterType::useCompression() const +{ + return m_private->useCompression; +} + +void Plotter::PlotterType::setUseCompression( Plotter::CompressionMode value ) +{ + m_private->useCompression = value; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.h new file mode 100644 index 00000000..ad1e8d18 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartPlotter_p.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPLOTTER_P_H +#define KDCHARTPLOTTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartPlotter.h" + +#include + +#include "KDChartThreeDLineAttributes.h" +#include "KDChartAbstractCartesianDiagram_p.h" +#include "KDChartCartesianDiagramDataCompressor_p.h" +#include "KDChartPlotterDiagramCompressor.h" + +#include + + +namespace KDChart { + + class PaintContext; + +/** + * \internal + */ + class Plotter::Private : public QObject, public AbstractCartesianDiagram::Private + { + Q_OBJECT + friend class Plotter; + friend class PlotterType; + + public: + Private(); + Private( const Private& rhs ); + ~Private(); + + void setCompressorResolution( + const QSizeF& size, + const AbstractCoordinatePlane* plane ); + + PlotterType* implementor; // the current type + PlotterType* normalPlotter; + PlotterType* percentPlotter; + PlotterType* stackedPlotter; + PlotterDiagramCompressor plotterCompressor; + Plotter::CompressionMode useCompression; + qreal mergeRadiusPercentage; + protected: + void init(); + public Q_SLOTS: + void changedProperties(); + }; + + KDCHART_IMPL_DERIVED_DIAGRAM( Plotter, AbstractCartesianDiagram, CartesianCoordinatePlane ) + + class Plotter::PlotterType + { + public: + explicit PlotterType( Plotter* d ) + : m_private( d->d_func() ) + { + m_private->init(); + } + virtual ~PlotterType() {} + virtual Plotter::PlotType type() const = 0; + virtual const QPair calculateDataBoundaries() const = 0; + virtual void paint( PaintContext* ctx ) = 0; + Plotter* diagram() const; + + Plotter::CompressionMode useCompression() const; + void setUseCompression( Plotter::CompressionMode value ); + PlotterDiagramCompressor& plotterCompressor() const; + + Plotter::Private* plotterPrivate() const { return m_private; } + + protected: + // make some elements of m_private available to derived classes: + AttributesModel* attributesModel() const; + QModelIndex attributesModelRootIndex() const; + ReverseMapper& reverseMapper(); + CartesianDiagramDataCompressor& compressor() const; + + int datasetDimension() const; + + Plotter::Private* m_private; + // TODO: do we need them or not? (currently unused, but maybe there are supposed to be several + // compressors + PlotterDiagramCompressor m_plotterCompressor; + Plotter::CompressionMode m_useCompression; + }; +} + +#endif /* KDCHARTLINEDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.cpp new file mode 100644 index 00000000..b502e1a4 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartStockBarAttributes.h" + +#define d d_func() + +using namespace KDChart; + +class StockBarAttributes::Private { +public: + Private(); + + qreal candlestickWidth; + qreal tickLength; +}; + +StockBarAttributes::Private::Private() + : candlestickWidth( 0.3 ) + , tickLength( 0.15 ) +{ +} + +StockBarAttributes::StockBarAttributes() + : _d( new Private ) +{ +} + +StockBarAttributes::StockBarAttributes( const StockBarAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +StockBarAttributes &StockBarAttributes::operator= ( const StockBarAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +StockBarAttributes::~StockBarAttributes() +{ + delete _d; +} + +/** + * Sets the width of a candlestick + * + * @param width The width of a candlestick + */ +void StockBarAttributes::setCandlestickWidth( qreal width ) +{ + d->candlestickWidth = width; +} +/** + * @return the width of a candlestick + */ +qreal StockBarAttributes::candlestickWidth() const +{ + return d->candlestickWidth; +} + +/** + * Sets the tick length of both the open and close marker + * + * @param length the tick length + */ +void StockBarAttributes::setTickLength( qreal length ) +{ + d->tickLength = length; +} + +/** + * @return the tick length used for both the open and close marker + */ +qreal StockBarAttributes::tickLength() const +{ + return d->tickLength; +} + +bool StockBarAttributes::operator==( const StockBarAttributes& r ) const +{ + return candlestickWidth() == r.candlestickWidth() && + tickLength() == r.tickLength(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.h new file mode 100644 index 00000000..3ea4f41a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockBarAttributes.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSTOCKBARATTRIBUTES_H +#define KDCHARTSTOCKBARATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Attributes to customize the appearance of a column in a stock chart + */ +class KDCHART_EXPORT StockBarAttributes +{ +public: + StockBarAttributes(); + StockBarAttributes( const StockBarAttributes& ); + StockBarAttributes &operator= ( const StockBarAttributes& ); + + ~StockBarAttributes(); + + void setCandlestickWidth( qreal width ); + qreal candlestickWidth() const; + + void setTickLength( qreal length ); + qreal tickLength() const; + + bool operator==( const StockBarAttributes& ) const; + inline bool operator!=( const StockBarAttributes& other ) const { return !operator==(other); } + +private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } +}; + +} + +Q_DECLARE_METATYPE( KDChart::StockBarAttributes ) + +#endif // KDCHARTSTOCKBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.cpp new file mode 100644 index 00000000..b209761f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.cpp @@ -0,0 +1,381 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartStockDiagram.h" +#include "KDChartStockDiagram_p.h" + +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" + +using namespace KDChart; + +#define d d_func() + +StockDiagram::StockDiagram( QWidget *parent, CartesianCoordinatePlane *plane ) + : AbstractCartesianDiagram( new Private(), parent, plane ) +{ + init(); +} + +StockDiagram::~StockDiagram() +{ +} + +/** + * Initializes the diagram + */ +void StockDiagram::init() +{ + d->diagram = this; + d->compressor.setModel( attributesModel() ); + + // Set properties to defaults + d->type = HighLowClose; + d->upTrendCandlestickBrush = QBrush( Qt::white ); + d->downTrendCandlestickBrush = QBrush( Qt::black ); + d->upTrendCandlestickPen = QPen( Qt::black ); + d->downTrendCandlestickPen = QPen( Qt::black ); + + d->lowHighLinePen = QPen( Qt::black ); + setDatasetDimensionInternal( 3 ); + //setDatasetDimension( 3 ); + + setPen( QPen( Qt::black ) ); +} + +/** + * Switches between the supported types of stock charts, + * depending on \a type + */ +void StockDiagram::setType( Type type ) +{ + d->type = type; + emit propertiesChanged(); +} + +/** + * @return the type of this diagram + */ +StockDiagram::Type StockDiagram::type() const +{ + return d->type; +} + +void StockDiagram::setStockBarAttributes( const StockBarAttributes &attr ) +{ + attributesModel()->setModelData( + qVariantFromValue( attr ), + StockBarAttributesRole ); + emit propertiesChanged(); +} + +StockBarAttributes StockDiagram::stockBarAttributes() const +{ + return attributesModel()->modelData( StockBarAttributesRole ).value(); +} + +void StockDiagram::setStockBarAttributes( int column, const StockBarAttributes &attr ) +{ + d->setDatasetAttrs( column, qVariantFromValue( attr ), StockBarAttributesRole ); + emit propertiesChanged(); +} + +StockBarAttributes StockDiagram::stockBarAttributes( int column ) const +{ + const QVariant attr( d->datasetAttrs( column, StockBarAttributesRole ) ); + if ( attr.isValid() ) + return attr.value(); + return stockBarAttributes(); +} + +/** + * Sets the 3D attributes for all bars (i.e. candlesticks) + * + * @param attr The 3D attributes to set + */ +void StockDiagram::setThreeDBarAttributes( const ThreeDBarAttributes &attr ) +{ + attributesModel()->setModelData( + qVariantFromValue( attr ), + ThreeDBarAttributesRole ); + emit propertiesChanged(); +} + +/** + * Returns the 3D attributes for all bars (i.e. candlesticks) + * + * @return the 3D bar attributes + */ +ThreeDBarAttributes StockDiagram::threeDBarAttributes() const +{ + return attributesModel()->modelData( ThreeDBarAttributesRole ).value(); +} + +/** + * Sets the 3D attributes for the bar (i.e. candlestick) in certain column + * of the diagram + * + * Note: Every column in a StockDiagram is represented by a row in the model + * + * @param column The column to set the 3D bar attributes for + * @param attr The 3D attributes to set + */ +void StockDiagram::setThreeDBarAttributes( int column, const ThreeDBarAttributes &attr ) +{ + d->setDatasetAttrs( column, qVariantFromValue( attr ), StockBarAttributesRole ); + emit propertiesChanged(); +} + +/** + * Returns the 3D attributes for a bars (i.e. candlestick) in a certain column + * of the diagram + * + * Note: Every column in a StockDiagram is represented by a row in the model + * + * @param column The column to get the 3D bar attributes for + * @return The 3D attributes for the specified column + */ +ThreeDBarAttributes StockDiagram::threeDBarAttributes( int column ) const +{ + const QVariant attr( d->datasetAttrs( column, ThreeDBarAttributesRole ) ); + if ( attr.isValid() ) + return attr.value(); + return threeDBarAttributes(); +} + + +void StockDiagram::setLowHighLinePen( const QPen &pen ) +{ + d->lowHighLinePen = pen; +} + +QPen StockDiagram::lowHighLinePen() const +{ + return d->lowHighLinePen; +} + +void StockDiagram::setLowHighLinePen( int column, const QPen &pen ) +{ + d->lowHighLinePens[column] = pen; +} + +QPen StockDiagram::lowHighLinePen( int column ) const +{ + if ( d->lowHighLinePens.contains( column ) ) + return d->lowHighLinePens[column]; + return d->lowHighLinePen; +} + +void StockDiagram::setUpTrendCandlestickBrush( const QBrush &brush ) +{ + d->upTrendCandlestickBrush = brush; +} + +QBrush StockDiagram::upTrendCandlestickBrush() const +{ + return d->upTrendCandlestickBrush; +} + +void StockDiagram::setDownTrendCandlestickBrush( const QBrush &brush ) +{ + d->downTrendCandlestickBrush = brush; +} + +QBrush StockDiagram::downTrendCandlestickBrush() const +{ + return d->downTrendCandlestickBrush; +} + +void StockDiagram::setUpTrendCandlestickBrush( int column, const QBrush &brush ) +{ + d->upTrendCandlestickBrushes[column] = brush; +} + +QBrush StockDiagram::upTrendCandlestickBrush( int column ) const +{ + if ( d->upTrendCandlestickBrushes.contains( column ) ) + return d->upTrendCandlestickBrushes[column]; + return d->upTrendCandlestickBrush; +} + +void StockDiagram::setDownTrendCandlestickBrush( int column, const QBrush &brush ) +{ + d->downTrendCandlestickBrushes[column] = brush; +} + +QBrush StockDiagram::downTrendCandlestickBrush( int column ) const +{ + if ( d->downTrendCandlestickBrushes.contains( column ) ) + return d->downTrendCandlestickBrushes[column]; + return d->downTrendCandlestickBrush; +} + + +void StockDiagram::setUpTrendCandlestickPen( const QPen &pen ) +{ + d->upTrendCandlestickPen = pen; +} + +QPen StockDiagram::upTrendCandlestickPen() const +{ + return d->upTrendCandlestickPen; +} + +void StockDiagram::setDownTrendCandlestickPen( const QPen &pen ) +{ + d->downTrendCandlestickPen = pen; +} + +QPen StockDiagram::downTrendCandlestickPen() const +{ + return d->downTrendCandlestickPen; +} + +void StockDiagram::setUpTrendCandlestickPen( int column, const QPen &pen ) +{ + d->upTrendCandlestickPens[column] = pen; +} + +QPen StockDiagram::upTrendCandlestickPen( int column ) const +{ + if ( d->upTrendCandlestickPens.contains( column ) ) + return d->upTrendCandlestickPens[column]; + return d->upTrendCandlestickPen; +} + +void StockDiagram::setDownTrendCandlestickPen( int column, const QPen &pen ) +{ + d->downTrendCandlestickPens[column] = pen; +} + +QPen StockDiagram::downTrendCandlestickPen( int column ) const +{ + if ( d->downTrendCandlestickPens.contains( column ) ) + return d->downTrendCandlestickPens[column]; + return d->downTrendCandlestickPen; +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int StockDiagram::numberOfAbscissaSegments() const { return 1; } + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +int StockDiagram::numberOfOrdinateSegments() const { return 1; } + +void StockDiagram::paint( PaintContext *context ) +{ + // Clear old reverse mapping data and create new + // reverse mapping scene + d->reverseMapper.clear(); + + PainterSaver painterSaver( context->painter() ); + const int rowCount = attributesModel()->rowCount( attributesModelRootIndex() ); + const int divisor = ( d->type == OpenHighLowClose || d->type == Candlestick ) ? 4 : 3; + const int colCount = attributesModel()->columnCount( attributesModelRootIndex() ) / divisor; + for ( int col = 0; col < colCount; ++col ) + { + for ( int row = 0; row < rowCount; row++ ) { + CartesianDiagramDataCompressor::DataPoint low; + CartesianDiagramDataCompressor::DataPoint high; + CartesianDiagramDataCompressor::DataPoint open; + CartesianDiagramDataCompressor::DataPoint close; + CartesianDiagramDataCompressor::DataPoint volume; + + if ( d->type == HighLowClose ) { + const CartesianDiagramDataCompressor::CachePosition highPos( row, col * divisor ); + const CartesianDiagramDataCompressor::CachePosition lowPos( row, col * divisor + 1 ); + const CartesianDiagramDataCompressor::CachePosition closePos( row, col * divisor + 2 ); + low = d->compressor.data( lowPos ); + high = d->compressor.data( highPos ); + close = d->compressor.data( closePos ); + } else if ( d->type == OpenHighLowClose || d->type == Candlestick ) { + const CartesianDiagramDataCompressor::CachePosition openPos( row, col * divisor ); + const CartesianDiagramDataCompressor::CachePosition highPos( row, col * divisor + 1 ); + const CartesianDiagramDataCompressor::CachePosition lowPos( row, col * divisor + 2 ); + const CartesianDiagramDataCompressor::CachePosition closePos( row, col * divisor + 3 ); + open = d->compressor.data( openPos ); + low = d->compressor.data( lowPos ); + high = d->compressor.data( highPos ); + close = d->compressor.data( closePos ); + } + + + switch ( d->type ) { + case HighLowClose: + open.hidden = true; + // Fall-through intended! + case OpenHighLowClose: + if ( close.index.isValid() && low.index.isValid() && high.index.isValid() ) + d->drawOHLCBar( col, open, high, low, close, context ); + break; + case Candlestick: + d->drawCandlestick( col, open, high, low, close, context ); + break; + } + } + } +} + +void StockDiagram::resize( const QSizeF &size ) +{ + d->compressor.setResolution( static_cast< int >( size.width() * coordinatePlane()->zoomFactorX() ), + static_cast< int >( size.height() * coordinatePlane()->zoomFactorY() ) ); + setDataBoundariesDirty(); + QAbstractItemView::resize( size.toSize() ); +} + +qreal StockDiagram::threeDItemDepth( int column ) const +{ + Q_UNUSED( column ); + //FIXME: Implement threeD functionality + return 1.0; +} + +qreal StockDiagram::threeDItemDepth( const QModelIndex &index ) const +{ + Q_UNUSED( index ); + //FIXME: Implement threeD functionality + return 1.0; +} + +const QPair StockDiagram::calculateDataBoundaries() const +{ + const int rowCount = attributesModel()->rowCount( attributesModelRootIndex() ); + const int colCount = attributesModel()->columnCount( attributesModelRootIndex() ); + qreal xMin = 0.0; + qreal xMax = rowCount; + qreal yMin = 0.0; + qreal yMax = 0.0; + for ( int row = 0; row < rowCount; row++ ) { + for ( int col = 0; col < colCount; col++ ) { + const CartesianDiagramDataCompressor::CachePosition pos( row, col ); + const CartesianDiagramDataCompressor::DataPoint point = d->compressor.data( pos ); + yMax = qMax( yMax, point.value ); + yMin = qMin( yMin, point.value ); // FIXME: Can stock charts really have negative values? + } + } + return QPair( QPointF( xMin, yMin ), QPointF( xMax, yMax ) ); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.h new file mode 100644 index 00000000..ffeb07d2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_STOCK_DIAGRAM_H +#define KDCHART_STOCK_DIAGRAM_H + +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartStockBarAttributes.h" +#include "KDChartThreeDBarAttributes.h" + +namespace KDChart { + class PaintContext; + +class KDCHART_EXPORT StockDiagram : public AbstractCartesianDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( StockDiagram ) + + KDCHART_DECLARE_DERIVED_DIAGRAM( StockDiagram, CartesianCoordinatePlane ) + +public: + enum Type { + HighLowClose, + OpenHighLowClose, + Candlestick + }; + + explicit StockDiagram( QWidget *parent = 0, CartesianCoordinatePlane *plane = 0 ); + ~StockDiagram(); + + void setType( Type type ); + Type type() const; + + void setStockBarAttributes( const StockBarAttributes &attr ); + StockBarAttributes stockBarAttributes() const; + + void setStockBarAttributes( int column, const StockBarAttributes &attr ); + StockBarAttributes stockBarAttributes( int column ) const; + + void setThreeDBarAttributes( const ThreeDBarAttributes &attr ); + ThreeDBarAttributes threeDBarAttributes() const; + + void setThreeDBarAttributes( int column, const ThreeDBarAttributes &attr ); + ThreeDBarAttributes threeDBarAttributes( int column ) const; + + void setLowHighLinePen( const QPen &pen ); + QPen lowHighLinePen() const; + + void setLowHighLinePen( int column, const QPen &pen ); + QPen lowHighLinePen( int column ) const; + + void setUpTrendCandlestickBrush( const QBrush &brush ); + QBrush upTrendCandlestickBrush() const; + + void setDownTrendCandlestickBrush( const QBrush &brush ); + QBrush downTrendCandlestickBrush() const; + + void setUpTrendCandlestickBrush( int column, const QBrush &brush ); + QBrush upTrendCandlestickBrush( int column ) const; + + void setDownTrendCandlestickBrush( int column, const QBrush &brush ); + QBrush downTrendCandlestickBrush( int column ) const; + + void setUpTrendCandlestickPen( const QPen &pen ); + QPen upTrendCandlestickPen() const; + + void setDownTrendCandlestickPen( const QPen &pen ); + QPen downTrendCandlestickPen() const; + + void setUpTrendCandlestickPen( int column, const QPen &pen ); + QPen upTrendCandlestickPen( int column ) const; + + void setDownTrendCandlestickPen( int column, const QPen &pen ); + QPen downTrendCandlestickPen( int column ) const; + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + virtual const int numberOfAbscissaSegments() const; + virtual const int numberOfOrdinateSegments() const; +#else + virtual int numberOfAbscissaSegments() const; + virtual int numberOfOrdinateSegments() const; +#endif + + virtual void paint( PaintContext *paintContext ); + + virtual void resize( const QSizeF &size ); + + virtual qreal threeDItemDepth( int column ) const; + virtual qreal threeDItemDepth( const QModelIndex &index ) const; + +protected: + virtual const QPair calculateDataBoundaries() const; +}; + +} // Namespace KDChart + +#endif // KDCHART_STOCK_DIAGRAM_H + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.cpp new file mode 100644 index 00000000..21cd8116 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.cpp @@ -0,0 +1,540 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartStockDiagram_p.h" + +#include "KDChartPainterSaver_p.h" + +using namespace KDChart; + + +class StockDiagram::Private::ThreeDPainter +{ +public: + struct ThreeDProperties { + qreal depth; + qreal angle; + bool useShadowColors; + }; + + ThreeDPainter( QPainter *p ) + : painter( p ) {}; + + QPolygonF drawTwoDLine( const QLineF &line, const QPen &pen, + const ThreeDProperties &props ); + QPolygonF drawThreeDLine( const QLineF &line, const QBrush &brush, + const QPen &pen, const ThreeDProperties &props ); + QPolygonF drawThreeDRect( const QRectF &rect, const QBrush &brush, + const QPen &pen, const ThreeDProperties &props ); + +private: + QPointF projectPoint( const QPointF &point, qreal depth, qreal angle ) const; + QColor calcShadowColor( const QColor &color, qreal angle ) const; + + QPainter *painter; +}; + +/** + * Projects a point in 3D space + * + * @param depth The distance from the point and the projected point + * @param angle The angle the projected point is rotated by around the original point + */ +QPointF StockDiagram::Private::ThreeDPainter::projectPoint( const QPointF &point, qreal depth, qreal angle ) const +{ + const qreal angleInRad = DEGTORAD( angle ); + const qreal distX = depth * cos( angleInRad ); + // Y coordinates are reversed on our coordinate plane + const qreal distY = depth * -sin( angleInRad ); + + return QPointF( point.x() + distX, point.y() + distY ); +} + +/** + * Returns the shadow color for a given color, depending on the angle of rotation + * + * @param color The color to calculate the shadow color for + * @param angle The angle that the colored area is rotated by + */ +QColor StockDiagram::Private::ThreeDPainter::calcShadowColor( const QColor &color, qreal angle ) const +{ + // The shadow factor determines to how many percent the brightness + // of the color can be reduced. That is, the darkest shadow color + // is color * shadowFactor. + const qreal shadowFactor = 0.5; + const qreal sinAngle = 1.0 - qAbs( sin( DEGTORAD( angle ) ) ) * shadowFactor; + return QColor( qRound( color.red() * sinAngle ), + qRound( color.green() * sinAngle ), + qRound( color.blue() * sinAngle ) ); +} + +/** + * Draws a 2D line in 3D space by painting it with a z-coordinate of props.depth / 2.0 + * + * @param line The line to draw + * @param pen The pen to use to draw the line + * @param props The 3D properties to draw the line with + * @return The drawn line, but with a width of 2px, as a polygon + */ +QPolygonF StockDiagram::Private::ThreeDPainter::drawTwoDLine( const QLineF &line, const QPen &pen, + const ThreeDProperties &props ) +{ + // Restores the painting properties when destroyed + PainterSaver painterSaver( painter ); + + // The z coordinate to use (i.e., at what depth to draw the line) + const qreal z = props.depth / 2.0; + + // Projec the 2D points of the line in 3D + const QPointF deepP1 = projectPoint( line.p1(), z, props.angle ); + const QPointF deepP2 = projectPoint( line.p2(), z, props.angle ); + + // The drawn line with a width of 2px + QPolygonF threeDArea; + // The offset of the line "borders" from the center to each side + const QPointF offset( 0.0, 1.0 ); + threeDArea << deepP1 - offset << deepP2 - offset + << deepP1 + offset << deepP2 + offset << deepP1 - offset; + + painter->setPen( pen ); + painter->drawLine( QLineF( deepP1, deepP2 ) ); + + return threeDArea; +} + +/** + * Draws an ordinary line in 3D by expanding it in the z-axis by the given depth. + * + * @param line The line to draw + * @param brush The brush to fill the resulting polygon with + * @param pen The pen to paint the borders of the resulting polygon with + * @param props The 3D properties to draw the line with + * @return The 3D shape drawn + */ +QPolygonF StockDiagram::Private::ThreeDPainter::drawThreeDLine( const QLineF &line, const QBrush &brush, + const QPen &pen, const ThreeDProperties &props ) +{ + // Restores the painting properties when destroyed + PainterSaver painterSaver( painter ); + + const QPointF p1 = line.p1(); + const QPointF p2 = line.p2(); + + // Project the 2D points of the line in 3D + const QPointF deepP1 = projectPoint( p1, props.depth, props.angle ); + const QPointF deepP2 = projectPoint( p2, props.depth, props.angle ); + + // The result is a 3D representation of the 2D line + QPolygonF threeDArea; + threeDArea << p1 << p2 << deepP2 << deepP1 << p1; + + // Use shadow colors if ThreeDProperties::useShadowColors is set + // Note: Setting a new color on a brush or pen does not effect gradients or textures + if ( props.useShadowColors ) { + QBrush shadowBrush( brush ); + QPen shadowPen( pen ); + shadowBrush.setColor( calcShadowColor( brush.color(), props.angle ) ); + shadowPen.setColor( calcShadowColor( pen.color(), props.angle ) ); + painter->setBrush( shadowBrush ); + painter->setPen( shadowPen ); + } else { + painter->setBrush( brush ); + painter->setPen( pen ); + } + + painter->drawPolygon( threeDArea ); + + return threeDArea; +} + +/** + * Draws a 3D cuboid by extending a 2D rectangle in the z-axis + * + * @param rect The rectangle to draw + * @param brush The brush fill the surfaces of the cuboid with + * @param pen The pen to draw the edges with + * @param props The 3D properties to use for drawing the cuboid + * @return The drawn cuboid as a polygon + */ +QPolygonF StockDiagram::Private::ThreeDPainter::drawThreeDRect( const QRectF &rect, const QBrush &brush, + const QPen &pen, const ThreeDProperties &props ) +{ + // Restores the painting properties when destroyed + PainterSaver painterSaver( painter ); + + // Make sure that the top really is the top + const QRectF normalizedRect = rect.normalized(); + + // Calculate all the four sides of the rectangle + const QLineF topSide = QLineF( normalizedRect.topLeft(), normalizedRect.topRight() ); + const QLineF bottomSide = QLineF( normalizedRect.bottomLeft(), normalizedRect.bottomRight() ); + const QLineF leftSide = QLineF( normalizedRect.topLeft(), normalizedRect.bottomLeft() ); + const QLineF rightSide = QLineF( normalizedRect.topRight(), normalizedRect.bottomRight() ); + + QPolygonF drawnPolygon; + + // Shorter names are easier on the eyes + const qreal angle = props.angle; + + // Only top and right side is visible + if ( angle >= 0.0 && angle < 90.0 ) { + drawnPolygon = drawnPolygon.united( drawThreeDLine( topSide, brush, pen, props ) ); + drawnPolygon = drawnPolygon.united( drawThreeDLine( rightSide, brush, pen, props ) ); + // Only top and left side is visible + } else if ( angle >= 90.0 && angle < 180.0 ) { + drawnPolygon = drawnPolygon.united( drawThreeDLine( topSide, brush, pen, props ) ); + drawnPolygon = drawnPolygon.united( drawThreeDLine( leftSide, brush, pen, props ) ); + // Only bottom and left side is visible + } else if ( angle >= 180.0 && angle < 270.0 ) { + drawnPolygon = drawnPolygon.united( drawThreeDLine( bottomSide, brush, pen, props ) ); + drawnPolygon = drawnPolygon.united( drawThreeDLine( leftSide, brush, pen, props ) ); + // Only bottom and right side is visible + } else if ( angle >= 270.0 && angle <= 360.0 ) { + drawnPolygon = drawnPolygon.united( drawThreeDLine( bottomSide, brush, pen, props ) ); + drawnPolygon = drawnPolygon.united( drawThreeDLine( rightSide, brush, pen, props ) ); + } + + // Draw the front side + painter->setPen( pen ); + painter->setBrush( brush ); + painter->drawRect( normalizedRect ); + + return drawnPolygon; +} + + +StockDiagram::Private::Private() + : AbstractCartesianDiagram::Private() +{ +} + +StockDiagram::Private::Private( const Private& r ) + : AbstractCartesianDiagram::Private( r ) +{ +} + +StockDiagram::Private::~Private() +{ +} + +/** + * Projects a point onto the coordinate plane + * + * @param context The context to paint the point in + * @point The point to project onto the coordinate plane + * @return The projected point + */ +QPointF StockDiagram::Private::projectPoint( PaintContext *context, const QPointF &point ) const +{ + return context->coordinatePlane()->translate( QPointF( point.x() + 0.5, point.y() ) ); +} + +/** + * Projects a candlestick onto the coordinate plane + * + * @param context The context to paint the candlestick in + * @param low The + */ +QRectF StockDiagram::Private::projectCandlestick( PaintContext *context, const QPointF &open, const QPointF &close, qreal width ) const +{ + const QPointF leftHighPoint = context->coordinatePlane()->translate( QPointF( close.x() + 0.5 - width / 2.0, close.y() ) ); + const QPointF rightLowPoint = context->coordinatePlane()->translate( QPointF( open.x() + 0.5 + width / 2.0, open.y() ) ); + const QPointF rightHighPoint = context->coordinatePlane()->translate( QPointF( close.x() + 0.5 + width / 2.0, close.y() ) ); + + return QRectF( leftHighPoint, QSizeF( rightHighPoint.x() - leftHighPoint.x(), + rightLowPoint.y() - leftHighPoint.y() ) ); +} + +void StockDiagram::Private::drawOHLCBar( int dataset, const CartesianDiagramDataCompressor::DataPoint &open, + const CartesianDiagramDataCompressor::DataPoint &high, + const CartesianDiagramDataCompressor::DataPoint &low, + const CartesianDiagramDataCompressor::DataPoint &close, + PaintContext *context ) +{ + // Note: A row in the model is a column in a StockDiagram + const int col = low.index.row(); + + StockBarAttributes attr = stockDiagram()->stockBarAttributes( col ); + ThreeDBarAttributes threeDAttr = stockDiagram()->threeDBarAttributes( col ); + const qreal tickLength = attr.tickLength(); + + const QPointF leftOpenPoint( open.key + 0.5 - tickLength, open.value ); + const QPointF rightOpenPoint( open.key + 0.5, open.value ); + const QPointF highPoint( high.key + 0.5, high.value ); + const QPointF lowPoint( low.key + 0.5, low.value ); + const QPointF leftClosePoint( close.key + 0.5, close.value ); + const QPointF rightClosePoint( close.key + 0.5 + tickLength, close.value ); + + bool reversedOrder = false; + // If 3D mode is enabled, we have to make sure the z-order is right + if ( threeDAttr.isEnabled() ) { + const int angle = threeDAttr.angle(); + // Z-order is from right to left + if ( ( angle >= 0 && angle < 90 ) || ( angle >= 180 && angle < 270 ) ) + reversedOrder = true; + // Z-order is from left to right + if ( ( angle >= 90 && angle < 180 ) || ( angle >= 270 && angle < 360 ) ) + reversedOrder = false; + } + + if ( reversedOrder ) { + if ( !open.hidden ) + drawLine( dataset, col, leftOpenPoint, rightOpenPoint, context ); // Open marker + if ( !low.hidden && !high.hidden ) + drawLine( dataset, col, lowPoint, highPoint, context ); // Low-High line + if ( !close.hidden ) + drawLine( dataset, col, leftClosePoint, rightClosePoint, context ); // Close marker + } else { + if ( !close.hidden ) + drawLine( dataset, col, leftClosePoint, rightClosePoint, context ); // Close marker + if ( !low.hidden && !high.hidden ) + drawLine( dataset, col, lowPoint, highPoint, context ); // Low-High line + if ( !open.hidden ) + drawLine( dataset, col, leftOpenPoint, rightOpenPoint, context ); // Open marker + } + + LabelPaintCache lpc; + if ( !open.hidden ) { + addLabel( &lpc, diagram->attributesModel()->mapToSource( open.index ), 0, + PositionPoints( leftOpenPoint ), Position::South, Position::South, open.value ); + } + if ( !high.hidden ) { + addLabel( &lpc, diagram->attributesModel()->mapToSource( high.index ), 0, + PositionPoints( highPoint ), Position::South, Position::South, high.value ); + } + if ( !low.hidden ) { + addLabel( &lpc, diagram->attributesModel()->mapToSource( low.index ), 0, + PositionPoints( lowPoint ), Position::South, Position::South, low.value ); + } + if ( !close.hidden ) { + addLabel( &lpc, diagram->attributesModel()->mapToSource( close.index ), 0, + PositionPoints( rightClosePoint ), Position::South, Position::South, close.value ); + } + paintDataValueTextsAndMarkers( context, lpc, false ); +} + +/** + * Draws a line connecting the low and the high value of an OHLC chart + * + * @param low The low data point + * @param high The high data point + * @param context The context to draw the candlestick in + */ +void StockDiagram::Private::drawCandlestick( int /*dataset*/, const CartesianDiagramDataCompressor::DataPoint &open, + const CartesianDiagramDataCompressor::DataPoint &high, + const CartesianDiagramDataCompressor::DataPoint &low, + const CartesianDiagramDataCompressor::DataPoint &close, + PaintContext *context ) +{ + PainterSaver painterSaver( context->painter() ); + + // Note: A row in the model is a column in a StockDiagram, and the other way around + const int row = low.index.row(); + const int col = low.index.column(); + + QPointF bottomCandlestickPoint; + QPointF topCandlestickPoint; + QBrush brush; + QPen pen; + bool drawLowerLine; + bool drawCandlestick = !open.hidden && !close.hidden; + bool drawUpperLine; + + // Find out if we need to paint a down-trend or up-trend candlestick + // and set brush and pen accordingly + // Also, determine what the top and bottom points of the candlestick are + if ( open.value <= close.value ) { + pen = stockDiagram()->upTrendCandlestickPen( row ); + brush = stockDiagram()->upTrendCandlestickBrush( row ); + bottomCandlestickPoint = QPointF( open.key, open.value ); + topCandlestickPoint = QPointF( close.key, close.value ); + drawLowerLine = !low.hidden && !open.hidden; + drawUpperLine = !low.hidden && !close.hidden; + } else { + pen = stockDiagram()->downTrendCandlestickPen( row ); + brush = stockDiagram()->downTrendCandlestickBrush( row ); + bottomCandlestickPoint = QPointF( close.key, close.value ); + topCandlestickPoint = QPointF( open.key, open.value ); + drawLowerLine = !low.hidden && !close.hidden; + drawUpperLine = !low.hidden && !open.hidden; + } + + StockBarAttributes attr = stockDiagram()->stockBarAttributes( col ); + ThreeDBarAttributes threeDAttr = stockDiagram()->threeDBarAttributes( col ); + + const QPointF lowPoint = projectPoint( context, QPointF( low.key, low.value ) ); + const QPointF highPoint = projectPoint( context, QPointF( high.key, high.value ) ); + const QLineF lowerLine = QLineF( lowPoint, projectPoint( context, bottomCandlestickPoint ) ); + const QLineF upperLine = QLineF( projectPoint( context, topCandlestickPoint ), highPoint ); + + // Convert the data point into coordinates on the coordinate plane + QRectF candlestick = projectCandlestick( context, bottomCandlestickPoint, + topCandlestickPoint, attr.candlestickWidth() ); + + // Remember the drawn polygon to add it to the ReverseMapper later + QPolygonF drawnPolygon; + + // Use the ThreeDPainter class to draw a 3D candlestick + if ( threeDAttr.isEnabled() ) { + ThreeDPainter threeDPainter( context->painter() ); + + ThreeDPainter::ThreeDProperties threeDProps; + threeDProps.depth = threeDAttr.depth(); + threeDProps.angle = threeDAttr.angle(); + threeDProps.useShadowColors = threeDAttr.useShadowColors(); + + // If the perspective angle is within [0,180], we paint from bottom to top, + // otherwise from top to bottom to ensure the correct z order + if ( threeDProps.angle > 0.0 && threeDProps.angle < 180.0 ) { + if ( drawLowerLine ) + drawnPolygon = threeDPainter.drawTwoDLine( lowerLine, pen, threeDProps ); + if ( drawCandlestick ) + drawnPolygon = threeDPainter.drawThreeDRect( candlestick, brush, pen, threeDProps ); + if ( drawUpperLine ) + drawnPolygon = threeDPainter.drawTwoDLine( upperLine, pen, threeDProps ); + } else { + if ( drawUpperLine ) + drawnPolygon = threeDPainter.drawTwoDLine( upperLine, pen, threeDProps ); + if ( drawCandlestick ) + drawnPolygon = threeDPainter.drawThreeDRect( candlestick, brush, pen, threeDProps ); + if ( drawLowerLine ) + drawnPolygon = threeDPainter.drawTwoDLine( lowerLine, pen, threeDProps ); + } + } else { + QPainter *const painter = context->painter(); + painter->setBrush( brush ); + painter->setPen( pen ); + if ( drawLowerLine ) + painter->drawLine( lowerLine ); + if ( drawUpperLine ) + painter->drawLine( upperLine ); + if ( drawCandlestick ) + painter->drawRect( candlestick ); + + // The 2D representation is the projected candlestick itself + drawnPolygon = candlestick; + + // FIXME: Add lower and upper line to reverse mapper + } + + LabelPaintCache lpc; + if ( !low.hidden ) + addLabel( &lpc, diagram->attributesModel()->mapToSource( low.index ), 0, + PositionPoints( lowPoint ), Position::South, Position::South, low.value ); + if ( drawCandlestick ) { + // Both, the open as well as the close value are represented by this candlestick + reverseMapper.addPolygon( row, openValueColumn(), drawnPolygon ); + reverseMapper.addPolygon( row, closeValueColumn(), drawnPolygon ); + + addLabel( &lpc, diagram->attributesModel()->mapToSource( open.index ), 0, + PositionPoints( candlestick.bottomRight() ), Position::South, Position::South, open.value ); + addLabel( &lpc, diagram->attributesModel()->mapToSource( close.index ), 0, + PositionPoints( candlestick.topRight() ), Position::South, Position::South, close.value ); + } + if ( !high.hidden ) + addLabel( &lpc, diagram->attributesModel()->mapToSource( high.index ), 0, + PositionPoints( highPoint ), Position::South, Position::South, high.value ); + + paintDataValueTextsAndMarkers( context, lpc, false ); +} + +/** + * Draws a line connecting two points + * + * @param col The column of the diagram to paint the line in + * @param point1 The first point + * @param point2 The second point + * @param context The context to draw the low-high line in + */ +void StockDiagram::Private::drawLine( int dataset, int col, const QPointF &point1, const QPointF &point2, PaintContext *context ) +{ + PainterSaver painterSaver( context->painter() ); + + // A row in the model is a column in the diagram + const int modelRow = col; + const int modelCol = 0; + + const QPen pen = diagram->pen( dataset ); + const QBrush brush = diagram->brush( dataset ); + const ThreeDBarAttributes threeDBarAttr = stockDiagram()->threeDBarAttributes( col ); + + QPointF transP1 = context->coordinatePlane()->translate( point1 ); + QPointF transP2 = context->coordinatePlane()->translate( point2 ); + QLineF line = QLineF( transP1, transP2 ); + + if ( threeDBarAttr.isEnabled() ) { + ThreeDPainter::ThreeDProperties threeDProps; + threeDProps.angle = threeDBarAttr.angle(); + threeDProps.depth = threeDBarAttr.depth(); + threeDProps.useShadowColors = threeDBarAttr.useShadowColors(); + + ThreeDPainter painter( context->painter() ); + reverseMapper.addPolygon( modelCol, modelRow, painter.drawThreeDLine( line, brush, pen, threeDProps ) ); + } else { + context->painter()->setPen( pen ); + //context->painter()->setBrush( brush ); + reverseMapper.addLine( modelCol, modelRow, transP1, transP2 ); + context->painter()->drawLine( line ); + } +} + +/** + * Returns the column of the open value in the model + * + * @return The column of the open value + */ +int StockDiagram::Private::openValueColumn() const +{ + // Return an invalid column if diagram has no open values + return type == HighLowClose ? -1 : 0; +} + +/** + * Returns the column of the high value in the model + * + * @return The column of the high value + */ +int StockDiagram::Private::highValueColumn() const +{ + return type == HighLowClose ? 0 : 1; +} + +/** + * Returns the column of the low value in the model + * + * @return The column of the low value + */ +int StockDiagram::Private::lowValueColumn() const +{ + return type == HighLowClose ? 1 : 2; +} + +/** + * Returns the column of the close value in the model + * + * @return The column of the close value + */ +int StockDiagram::Private::closeValueColumn() const +{ + return type == HighLowClose ? 2 : 3; +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.h new file mode 100644 index 00000000..8a6d10c8 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartStockDiagram_p.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_STOCK_DIAGRAM_P_H +#define KDCHART_STOCK_DIAGRAM_P_H + +#include "KDChartStockDiagram.h" +#include "KDChartAbstractCartesianDiagram_p.h" +#include "KDChartCartesianDiagramDataCompressor_p.h" +#include "KDChartPaintContext.h" + +namespace KDChart { + +class StockDiagram::Private : public AbstractCartesianDiagram::Private +{ + friend class StockDiagram; + +public: + Private(); + Private( const Private& r ); + ~Private(); + + Type type; + StockDiagram* stockDiagram() { return static_cast< StockDiagram* >( diagram ); } + + QBrush upTrendCandlestickBrush; + QBrush downTrendCandlestickBrush; + QPen upTrendCandlestickPen; + QPen downTrendCandlestickPen; + + QMap upTrendCandlestickBrushes; + QMap downTrendCandlestickBrushes; + QMap upTrendCandlestickPens; + QMap downTrendCandlestickPens; + + QPen lowHighLinePen; + QMap lowHighLinePens; + + + void drawOHLCBar( int dataset, const CartesianDiagramDataCompressor::DataPoint &open, + const CartesianDiagramDataCompressor::DataPoint &high, + const CartesianDiagramDataCompressor::DataPoint &low, + const CartesianDiagramDataCompressor::DataPoint &close, + PaintContext *context ); + void drawHLCBar( int dataset, const CartesianDiagramDataCompressor::DataPoint &high, + const CartesianDiagramDataCompressor::DataPoint &low, + const CartesianDiagramDataCompressor::DataPoint &close, + PaintContext *context ); + void drawCandlestick( int dataset, const CartesianDiagramDataCompressor::DataPoint &open, + const CartesianDiagramDataCompressor::DataPoint &high, + const CartesianDiagramDataCompressor::DataPoint &low, + const CartesianDiagramDataCompressor::DataPoint &close, + PaintContext *context ); + +private: + void drawLine( int dataset, int col, const QPointF &point1, const QPointF &p2, PaintContext *context ); + QPointF projectPoint( PaintContext *context, const QPointF &point ) const; + QRectF projectCandlestick( PaintContext *context, const QPointF &open, const QPointF &close, qreal width ) const; + int openValueColumn() const; + int highValueColumn() const; + int lowValueColumn() const; + int closeValueColumn() const; + + class ThreeDPainter; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( StockDiagram, AbstractCartesianDiagram, CartesianCoordinatePlane ) + +} + +#endif // KDCHART_STOCK_DIAGRAM_P_H + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.cpp new file mode 100644 index 00000000..399123d3 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.cpp @@ -0,0 +1,112 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartThreeDBarAttributes.h" +#include "KDChartThreeDBarAttributes_p.h" + +#include + +#include + +#define d d_func() + +using namespace KDChart; + +ThreeDBarAttributes::Private::Private() + : useShadowColors( true ), + angle( 45 ) +{ +} + + +ThreeDBarAttributes::ThreeDBarAttributes() + : AbstractThreeDAttributes( new Private() ) +{ + +} + +ThreeDBarAttributes::ThreeDBarAttributes( const ThreeDBarAttributes& r ) + : AbstractThreeDAttributes( new Private( *r.d) ) +{ +} + +ThreeDBarAttributes& ThreeDBarAttributes::operator= ( const ThreeDBarAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +ThreeDBarAttributes::~ThreeDBarAttributes() +{ +} + +void ThreeDBarAttributes::init() +{ +} + + +bool ThreeDBarAttributes::operator==( const ThreeDBarAttributes& r ) const +{ + return ( useShadowColors() == r.useShadowColors() && + angle() == r.angle() && + AbstractThreeDAttributes::operator==(r)); +} + + + +void ThreeDBarAttributes::setUseShadowColors( bool shadowColors ) +{ + d->useShadowColors = shadowColors; +} + +bool ThreeDBarAttributes::useShadowColors() const +{ + return d->useShadowColors; +} + +void ThreeDBarAttributes::setAngle( uint threeDAngle ) +{ + d->angle = threeDAngle; +} + +uint ThreeDBarAttributes::angle() const +{ + return d->angle; +} + + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::ThreeDBarAttributes& a) +{ + dbg << "KDChart::ThreeDBarAttributes("; + dbg = operator <<( dbg, static_cast(a) ); + dbg << "useShadowColors="<< a.useShadowColors() + << "angle=" << a.angle() << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ + + diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.h new file mode 100644 index 00000000..99241242 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDBARATTRIBUTES_H +#define KDCHARTTHREEDBARATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D bar attributes + */ + class KDCHART_EXPORT ThreeDBarAttributes : public AbstractThreeDAttributes + { + public: + ThreeDBarAttributes(); + ThreeDBarAttributes( const ThreeDBarAttributes& ); + ThreeDBarAttributes &operator= ( const ThreeDBarAttributes& ); + + ~ThreeDBarAttributes(); + + /* threeD Bars specific */ + void setUseShadowColors( bool useShadowColors ); + bool useShadowColors() const; + + //Pending Michel I am not sure this will be used + void setAngle( uint threeDAngle ); + uint angle() const; + + bool operator==( const ThreeDBarAttributes& ) const; + inline bool operator!=( const ThreeDBarAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDBarAttributes) + + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDBarAttributes) + + }; // End of class ThreeDBarAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDBarAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDBarAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDBarAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDBarAttributes ) + +#endif // KDCHARTTHREEDBARATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes_p.h new file mode 100644 index 00000000..c31b11a7 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/KDChartThreeDBarAttributes_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDBARATTRIBUTES_P_H +#define KDCHARTTHREEDBARATTRIBUTES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + + +namespace KDChart { + +/** + * \internal + */ +class ThreeDBarAttributes::Private : public AbstractThreeDAttributes::Private +{ + friend class ThreeDBarAttributes; +public: + Private(); + +private: + bool useShadowColors; + uint angle; +}; + +KDCHART_DERIVED_PRIVATE_FOOTER(ThreeDBarAttributes, AbstractThreeDAttributes) + +} + + +#endif // KDCHARTTHREEDBARATTRIBUTES_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.cpp b/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.cpp new file mode 100644 index 00000000..2e4adf12 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.cpp @@ -0,0 +1,296 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "PaintingHelpers_p.h" + +#include "KDChartGlobal.h" + +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractDiagram_p.h" +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartLineDiagram.h" +#include "KDChartValueTrackerAttributes.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartPlotter.h" +#include "KDChartPrintingParameters.h" +#include "KDChartThreeDLineAttributes.h" +#include "ReverseMapper.h" + +namespace KDChart { +namespace PaintingHelpers { + +/*! + Projects a point in a space defined by its x, y, and z coordinates + into a point on a plane, given two rotation angles around the x + resp. y axis. +*/ +const QPointF project( const QPointF& point, const ThreeDLineAttributes& tdAttributes ) +{ + //Pending Michel FIXME - the rotation does not work as expected atm + qreal xrad = DEGTORAD( tdAttributes.lineXRotation() ); + qreal yrad = DEGTORAD( tdAttributes.lineYRotation() ); + return QPointF( point.x() * cos( yrad ) + tdAttributes.depth() * sin( yrad ), + point.y() * cos( xrad ) - tdAttributes.depth() * sin( xrad ) ); +} + +void paintPolyline( PaintContext* ctx, const QBrush& brush, const QPen& pen, const QPolygonF& points ) +{ + ctx->painter()->setBrush( brush ); + ctx->painter()->setPen( PrintingParameters::scalePen( + QPen( pen.color(), pen.width(), pen.style(), Qt::FlatCap, Qt::MiterJoin ) ) ); +#if QT_VERSION > 0x040299 + ctx->painter()->drawPolyline( points ); +#else + // FIXME (Mirko) verify, this sounds reverse-logical + // For Qt versions older than 4.3 drawPolyline is VERY slow + // so we use traditional line segments drawing instead then. + for ( int i = 0; i < points.size()-1; ++i ) { + ctx->painter()->drawLine( points.at( i ), points.at( i + 1 ) ); + } +#endif +} + +void paintThreeDLines( PaintContext* ctx, AbstractDiagram *diagram, const QModelIndex& index, + const QPointF& from, const QPointF& to, const ThreeDLineAttributes& tdAttributes, + ReverseMapper* reverseMapper ) +{ + const QPointF topLeft = project( from, tdAttributes ); + const QPointF topRight = project ( to, tdAttributes ); + const QPolygonF segment = QPolygonF() << from << topLeft << topRight << to; + + QBrush indexBrush( diagram->brush( index ) ); + indexBrush = tdAttributes.threeDBrush( indexBrush, QRectF(topLeft, topRight) ); + + const PainterSaver painterSaver( ctx->painter() ); + + ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram->antiAliasing() ); + ctx->painter()->setBrush( indexBrush ); + ctx->painter()->setPen( PrintingParameters::scalePen( diagram->pen( index ) ) ); + + reverseMapper->addPolygon( index.row(), index.column(), segment ); + ctx->painter()->drawPolygon( segment ); +} + +void paintValueTracker( PaintContext* ctx, const ValueTrackerAttributes& vt, const QPointF& at ) +{ + CartesianCoordinatePlane* plane = qobject_cast( ctx->coordinatePlane() ); + if ( !plane ) + return; + + DataDimensionsList gridDimensions = ctx->coordinatePlane()->gridDimensionsList(); + const QPointF bottomLeft( ctx->coordinatePlane()->translate( + QPointF( plane->isHorizontalRangeReversed() ? + gridDimensions.at( 0 ).end : + gridDimensions.at( 0 ).start, + plane->isVerticalRangeReversed() ? + gridDimensions.at( 1 ).end : + gridDimensions.at( 1 ).start ) ) ); + const QPointF topRight( ctx->coordinatePlane()->translate( + QPointF( plane->isHorizontalRangeReversed() ? + gridDimensions.at( 0 ).start : + gridDimensions.at( 0 ).end, + plane->isVerticalRangeReversed() ? + gridDimensions.at( 1 ).start : + gridDimensions.at( 1 ).end ) ) ); + const QPointF markerPoint = at; + + QPointF startPoint; + if ( vt.orientations() & Qt::Horizontal ) { + startPoint = QPointF( bottomLeft.x(), at.y() ); + } else { + startPoint = QPointF( at.x(), topRight.y() ); + } + + QPointF endPoint; + if ( vt.orientations() & Qt::Vertical ) { + endPoint = QPointF( at.x(), bottomLeft.y() ); + } else { + endPoint = QPointF( topRight.x(), at.y() ); + } + + const QSizeF markerSize = vt.markerSize(); + const QRectF ellipseMarker = QRectF( at.x() - markerSize.width() / 2, + at.y() - markerSize.height() / 2, + markerSize.width(), markerSize.height() ); + + QPointF startMarker[3]; + if ( vt.orientations() & Qt::Horizontal ) { + startMarker[0] = startPoint + QPointF( 0, markerSize.height() / 2 ); + startMarker[1] = startPoint + QPointF( markerSize.width() / 2, 0 ); + startMarker[2] = startPoint - QPointF( 0, markerSize.height() / 2 ); + } else { + startMarker[0] = startPoint + QPointF( 0, markerSize.height() / 2 ); + startMarker[1] = startPoint + QPointF( markerSize.width() / 2, 0 ); + startMarker[2] = startPoint - QPointF( markerSize.width() / 2, 0 ); + } + + QPointF endMarker[3]; + + if ( vt.orientations() & Qt::Vertical ) { + endMarker[0] = endPoint + QPointF( markerSize.width() / 2, 0 ); + endMarker[1] = endPoint - QPointF( 0, markerSize.height() / 2 ); + endMarker[2] = endPoint - QPointF( markerSize.width() / 2, 0 ); + } else { + endMarker[0] = endPoint + QPointF( 0, markerSize.width() / 2 ); + endMarker[1] = endPoint - QPointF( 0, markerSize.height() / 2 ); + endMarker[2] = endPoint - QPointF( markerSize.width() / 2, 0 ); + } + + QPointF topLeft = startPoint; + QPointF bottomRightOffset = endPoint - topLeft; + QSizeF size( bottomRightOffset.x(), bottomRightOffset.y() ); + QRectF area( topLeft, size ); + + PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setPen( PrintingParameters::scalePen( vt.linePen() ) ); + ctx->painter()->setBrush( QBrush() ); + ctx->painter()->drawLine( markerPoint, startPoint ); + ctx->painter()->drawLine( markerPoint, endPoint ); + + ctx->painter()->fillRect( area, vt.areaBrush() ); + + ctx->painter()->setPen( PrintingParameters::scalePen( vt.markerPen() ) ); + ctx->painter()->setBrush( vt.markerBrush() ); + ctx->painter()->drawEllipse( ellipseMarker ); + + ctx->painter()->setPen( PrintingParameters::scalePen( vt.arrowBrush().color() ) ); + ctx->painter()->setBrush( vt.arrowBrush() ); + ctx->painter()->drawPolygon( startMarker, 3 ); + ctx->painter()->drawPolygon( endMarker, 3 ); +} + +// ### for BC reasons we cannot insert a common interface for LineDiagram and Plotter into the class +// hierarchy, so we have to use hacks to use their common methods +static ThreeDLineAttributes threeDLineAttributes( AbstractDiagram* diagram, const QModelIndex& index ) +{ + if ( Plotter *plotter = qobject_cast< Plotter* >( diagram ) ) { + return plotter->threeDLineAttributes( index ); + } else if ( LineDiagram *lineDiagram = qobject_cast< LineDiagram* >( diagram ) ) { + return lineDiagram->threeDLineAttributes( index ); + } + Q_ASSERT( false ); + return ThreeDLineAttributes(); +} + +static ValueTrackerAttributes valueTrackerAttributes( AbstractDiagram* diagram, const QModelIndex& index ) +{ + if ( Plotter *plotter = qobject_cast< Plotter* >( diagram ) ) { + return plotter->valueTrackerAttributes( index ); + } else if ( LineDiagram *lineDiagram = qobject_cast< LineDiagram* >( diagram ) ) { + return lineDiagram->valueTrackerAttributes( index ); + } + Q_ASSERT( false ); + return ValueTrackerAttributes(); +} + +void paintElements( AbstractDiagram::Private *diagramPrivate, PaintContext* ctx, + const LabelPaintCache& lpc, const LineAttributesInfoList& lineList ) +{ + AbstractDiagram* diagram = diagramPrivate->diagram; + // paint all lines and their attributes + const PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram->antiAliasing() ); + + QBrush curBrush; + QPen curPen; + QPolygonF points; + KDAB_FOREACH ( const LineAttributesInfo& lineInfo, lineList ) { + const QModelIndex& index = lineInfo.index; + const ThreeDLineAttributes td = threeDLineAttributes( diagram, index ); + + if ( td.isEnabled() ) { + PaintingHelpers::paintThreeDLines( ctx, diagram, index, lineInfo.value, + lineInfo.nextValue, td, &diagramPrivate->reverseMapper ); + } else { + const QBrush brush( diagram->brush( index ) ); + const QPen pen( diagram->pen( index ) ); + + // line goes from lineInfo.value to lineInfo.nextValue + diagramPrivate->reverseMapper.addLine( lineInfo.index.row(), lineInfo.index.column(), + lineInfo.value, lineInfo.nextValue ); + + if ( points.count() && points.last() == lineInfo.value && curBrush == brush && curPen == pen ) { + // continue the current run of lines + } else { + // different painter settings or discontinuous line: start a new run of lines + if ( points.count() ) { + PaintingHelpers::paintPolyline( ctx, curBrush, curPen, points ); + } + curBrush = brush; + curPen = pen; + points.clear(); + points << lineInfo.value; + } + points << lineInfo.nextValue; + } + } + if ( points.count() ) { + // the last run of lines is yet to be painted - do it now + PaintingHelpers::paintPolyline( ctx, curBrush, curPen, points ); + } + + KDAB_FOREACH ( const LineAttributesInfo& lineInfo, lineList ) { + const ValueTrackerAttributes vt = valueTrackerAttributes( diagram, lineInfo.index ); + if ( vt.isEnabled() ) { + PaintingHelpers::paintValueTracker( ctx, vt, lineInfo.nextValue ); + } + } + + // paint all data value texts and the point markers + diagramPrivate->paintDataValueTextsAndMarkers( ctx, lpc, true ); +} + +void paintAreas( AbstractDiagram::Private* diagramPrivate, PaintContext* ctx, const QModelIndex& index, + const QList< QPolygonF >& areas, uint opacity ) +{ + AbstractDiagram* diagram = diagramPrivate->diagram; + QPainterPath path; + for ( int i = 0; i < areas.count(); ++i ) + { + const QPolygonF& p = areas[ i ]; + path.addPolygon( p ); + diagramPrivate->reverseMapper.addPolygon( index.row(), index.column(), p ); + path.closeSubpath(); + } + + ThreeDLineAttributes threeDAttrs = threeDLineAttributes( diagram, index ); + QBrush trans = diagram->brush( index ); + if ( threeDAttrs.isEnabled() ) { + trans = threeDAttrs.threeDBrush( trans, path.boundingRect() ); + } + QColor transColor = trans.color(); + transColor.setAlpha( opacity ); + trans.setColor(transColor); + QPen indexPen = diagram->pen(index); + indexPen.setBrush( trans ); + const PainterSaver painterSaver( ctx->painter() ); + + ctx->painter()->setRenderHint( QPainter::Antialiasing, diagram->antiAliasing() ); + ctx->painter()->setPen( PrintingParameters::scalePen( indexPen ) ); + ctx->painter()->setBrush( trans ); + + ctx->painter()->drawPath( path ); +} + +} // namespace PaintingHelpers +} // namespace KDChart diff --git a/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.h b/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.h new file mode 100644 index 00000000..2b0bb3d0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Cartesian/PaintingHelpers_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PAINTINGHELPERS_P_H +#define PAINTINGHELPERS_P_H + +#include "KDChartAbstractDiagram_p.h" +#include + +#include +#include + +class QBrush; +class QModelIndex; +class QPen; +class QPolygonF; + +namespace KDChart { + +class LineAttributesInfo; +typedef QVector LineAttributesInfoList; +class ThreeDLineAttributes; +class ValueTrackerAttributes; + +namespace PaintingHelpers { + +inline bool isFinite(const QPointF &point) +{ + return !ISINF(point.x()) && !ISNAN(point.x()) && !ISINF(point.y()) && !ISNAN(point.y()); +} + +const QPointF project( const QPointF& point, const ThreeDLineAttributes& tdAttributes ); +void paintPolyline( PaintContext* ctx, const QBrush& brush, const QPen& pen, const QPolygonF& points ); +void paintThreeDLines( PaintContext* ctx, AbstractDiagram *diagram, const QModelIndex& index, + const QPointF& from, const QPointF& to, const ThreeDLineAttributes& tdAttributes, + ReverseMapper* reverseMapper ); +void paintValueTracker( PaintContext* ctx, const ValueTrackerAttributes& vt, const QPointF& at ); +void paintElements( AbstractDiagram::Private *diagramPrivate, PaintContext* ctx, + const LabelPaintCache& lpc, const LineAttributesInfoList& lineList ); +void paintAreas( AbstractDiagram::Private* diagramPrivate, PaintContext* ctx, const QModelIndex& index, + const QList< QPolygonF >& areas, uint opacity ); + +} +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.cpp b/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.cpp new file mode 100644 index 00000000..ae4b3698 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.cpp @@ -0,0 +1,39 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "ChartGraphicsItem.h" + +using namespace KDChart; + +ChartGraphicsItem::ChartGraphicsItem() + : QGraphicsPolygonItem() + , m_row( -1 ) + , m_column( -1 ) +{ +} + +ChartGraphicsItem::ChartGraphicsItem( int row, int column ) + : QGraphicsPolygonItem() + , m_row( row ) + , m_column( column ) +{ +} diff --git a/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.h b/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.h new file mode 100644 index 00000000..b94f83b5 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/ChartGraphicsItem.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef CHARTGRAPHICSITEM_H +#define CHARTGRAPHICSITEM_H + +#include + +namespace KDChart { + + /** + * @brief Graphics item used inside of the ReverseMapper + * \internal + */ + class ChartGraphicsItem : public QGraphicsPolygonItem + { + public: + enum { Type = UserType + 1 }; + + ChartGraphicsItem(); + + ChartGraphicsItem( int row, int column ); + + int row() const { return m_row; } + int column() const { return m_column; } + int type() const { return Type; } + + private: + int m_row; + int m_column; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDAB_kdchart_LeveyJennings_resources.qrc b/massif-visualizer/kdchart/src/KDChart/KDAB_kdchart_LeveyJennings_resources.qrc new file mode 100644 index 00000000..02c62ac9 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDAB_kdchart_LeveyJennings_resources.qrc @@ -0,0 +1,10 @@ + + + + resources/circle_blue_red.svg + resources/circle_blue.svg + resources/karo_black.svg + resources/karo_blue.svg + resources/karo_red.svg + + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.cpp new file mode 100644 index 00000000..8ab806a6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.cpp @@ -0,0 +1,160 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractArea.h" +#include "KDChartAbstractArea_p.h" + +#include + +#include +#include + +#include + + +using namespace KDChart; + +#define d (d_func()) + +AbstractArea::Private::Private() : + AbstractAreaBase::Private() +{ + // this bloc left empty intentionally +} + + +AbstractArea::Private::~Private() +{ + // this bloc left empty intentionally +} + + +AbstractArea::AbstractArea() + : QObject() + , KDChart::AbstractAreaBase() + , KDChart::AbstractLayoutItem() +{ + init(); +} + +AbstractArea::~AbstractArea() +{ + // this bloc left empty intentionally +} + + +void AbstractArea::init() +{ + d->amountOfLeftOverlap = 0; + d->amountOfRightOverlap = 0; + d->amountOfTopOverlap = 0; + d->amountOfBottomOverlap = 0; +} + + +int AbstractArea::leftOverlap( bool doNotRecalculate ) const +{ + // Re-calculate the sizes, + // so we also get the amountOf..Overlap members set newly: + if ( ! doNotRecalculate ) + sizeHint(); + return d->amountOfLeftOverlap; +} +int AbstractArea::rightOverlap( bool doNotRecalculate ) const +{ + // Re-calculate the sizes, + // so we also get the amountOf..Overlap members set newly: + if ( ! doNotRecalculate ) + sizeHint(); + return d->amountOfRightOverlap; +} +int AbstractArea::topOverlap( bool doNotRecalculate ) const +{ + // Re-calculate the sizes, + // so we also get the amountOf..Overlap members set newly: + if ( ! doNotRecalculate ) + sizeHint(); + return d->amountOfTopOverlap; +} +int AbstractArea::bottomOverlap( bool doNotRecalculate ) const +{ + // Re-calculate the sizes, + // so we also get the amountOf..Overlap members set newly: + if ( ! doNotRecalculate ) + sizeHint(); + return d->amountOfBottomOverlap; +} + + +void AbstractArea::paintIntoRect( QPainter& painter, const QRect& rect ) +{ + const QRect oldGeometry( geometry() ); + if ( oldGeometry != rect ) + setGeometry( rect ); + painter.translate( rect.left(), rect.top() ); + paintAll( painter ); + painter.translate( -rect.left(), -rect.top() ); + if ( oldGeometry != rect ) + setGeometry( oldGeometry ); +} + +void AbstractArea::paintAll( QPainter& painter ) +{ + // Paint the background and frame + const QRect overlappingArea( geometry().adjusted( -d->amountOfLeftOverlap, -d->amountOfTopOverlap, + d->amountOfRightOverlap, d->amountOfBottomOverlap ) ); + paintBackground( painter, overlappingArea ); + paintFrame( painter, overlappingArea ); + + // temporarily adjust the widget size, to be sure all content gets calculated + // to fit into the inner rectangle + const QRect oldGeometry( areaGeometry() ); + QRect inner( innerRect() ); + inner.moveTo( oldGeometry.left() + inner.left(), oldGeometry.top() + inner.top() ); + const bool needAdjustGeometry = oldGeometry != inner; + if ( needAdjustGeometry ) { + // don't notify others of this change for internal purposes + bool prevSignalBlocked = signalsBlocked(); + blockSignals( true ); + setGeometry( inner ); + blockSignals( prevSignalBlocked ); + } + paint( &painter ); + if ( needAdjustGeometry ) { + bool prevSignalBlocked = signalsBlocked(); + blockSignals( true ); + setGeometry( oldGeometry ); + blockSignals( prevSignalBlocked ); + } + //qDebug() << "AbstractAreaWidget::paintAll() done."; +} + +QRect AbstractArea::areaGeometry() const +{ + return geometry(); +} + +void AbstractArea::positionHasChanged() +{ + emit positionChanged( this ); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.h new file mode 100644 index 00000000..1ede0cc7 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREA_H +#define KDCHARTABSTRACTAREA_H + +#include + +#include "KDChartGlobal.h" +#include "KDChartAbstractAreaBase.h" +#include "KDChartLayoutItems.h" + +namespace KDChart { + + +/** + * @class AbstractArea KDChartAbstractArea.h + * @brief An area in the chart with a background, a frame, etc. + * + * AbstractArea is the base class for all non-widget chart elements that have + * a set of background attributes and frame attributes, such as + * coordinate planes or axes. + * + * @note This class inherits from AbstractAreaBase, AbstractLayoutItem, QObject. + * The reason for this triple inheritance is that neither AbstractAreaBase nor + * AbstractLayoutItem are QObject. + */ +class KDCHART_EXPORT AbstractArea : public QObject, + public AbstractAreaBase, + public AbstractLayoutItem +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractArea ) + KDCHART_DECLARE_PRIVATE_DERIVED( AbstractArea ) + +public: + virtual ~AbstractArea() ; + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite AbstractLayoutItem::paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + virtual void paintAll( QPainter& painter ); + + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the left edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int leftOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the right edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int rightOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the top edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int topOverlap( bool doNotRecalculate=false ) const; + /** + * This is called at layout time by KDChart:AutoSpacerLayoutItem::sizeHint(). + * + * The method triggers AbstractArea::sizeHint() to find out the + * amount of overlap at the bottom edge of the area. + * + * \note The default implementation is not using any caching, + * it might make sense to implement a more sophisticated solution + * for derived classes that have complex work to do in sizeHint(). + * All we have here is a primitive flag to be set by the caller + * if it is sure that no sizeHint() needs to be called. + */ + virtual int bottomOverlap( bool doNotRecalculate=false ) const; + +protected: + AbstractArea(); + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); + +Q_SIGNALS: + void positionChanged( AbstractArea * ); +}; // End of class AbstractArea + +} +#endif // KDCHARTABSTRACTAREA_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.cpp new file mode 100644 index 00000000..64bef5cc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.cpp @@ -0,0 +1,237 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractAreaBase.h" +#include "KDChartAbstractAreaBase_p.h" +#include +#include +#include +#include "KDChartPainterSaver_p.h" +#include "KDChartPrintingParameters.h" +#include + +#include + + +using namespace KDChart; + +AbstractAreaBase::Private::Private() : + visible( true ) +{ + init(); +} + + +AbstractAreaBase::Private::~Private() {} + + +void AbstractAreaBase::Private::init() +{ +} + + +AbstractAreaBase::AbstractAreaBase() : + _d( new Private() ) +{ +} + +AbstractAreaBase::~AbstractAreaBase() +{ + delete _d; _d = 0; +} + + +void AbstractAreaBase::init() +{ +} + + +#define d d_func() + +bool AbstractAreaBase::compare( const AbstractAreaBase* other ) const +{ + if ( other == this ) return true; + if ( !other ) { + return false; + } + return (frameAttributes() == other->frameAttributes()) && + (backgroundAttributes() == other->backgroundAttributes()); +} + +void AbstractAreaBase::alignToReferencePoint( const RelativePosition& position ) +{ + Q_UNUSED( position ); + // PENDING(kalle) FIXME + qWarning( "Sorry, not implemented: void AbstractAreaBase::alignToReferencePoint( const RelativePosition& position )" ); +} + +void AbstractAreaBase::setFrameAttributes( const FrameAttributes &a ) +{ + if ( d->frameAttributes == a ) + return; + + d->frameAttributes = a; + positionHasChanged(); +} + +FrameAttributes AbstractAreaBase::frameAttributes() const +{ + return d->frameAttributes; +} + +void AbstractAreaBase::setBackgroundAttributes( const BackgroundAttributes &a ) +{ + if ( d->backgroundAttributes == a ) + return; + + d->backgroundAttributes = a; + positionHasChanged(); +} + +BackgroundAttributes AbstractAreaBase::backgroundAttributes() const +{ + return d->backgroundAttributes; +} + + +/* static */ +void AbstractAreaBase::paintBackgroundAttributes( QPainter& painter, const QRect& rect, + const KDChart::BackgroundAttributes& attributes ) +{ + if ( !attributes.isVisible() ) return; + + /* first draw the brush (may contain a pixmap)*/ + if ( Qt::NoBrush != attributes.brush().style() ) { + KDChart::PainterSaver painterSaver( &painter ); + painter.setPen( Qt::NoPen ); + const QPointF newTopLeft( painter.deviceMatrix().map( rect.topLeft() ) ); + painter.setBrushOrigin( newTopLeft ); + painter.setBrush( attributes.brush() ); + painter.drawRect( rect.adjusted( 0, 0, -1, -1 ) ); + } + /* next draw the backPixmap over the brush */ + if ( !attributes.pixmap().isNull() && + attributes.pixmapMode() != BackgroundAttributes::BackgroundPixmapModeNone ) { + QPointF ol = rect.topLeft(); + if ( BackgroundAttributes::BackgroundPixmapModeCentered == attributes.pixmapMode() ) + { + ol.setX( rect.center().x() - attributes.pixmap().width() / 2 ); + ol.setY( rect.center().y() - attributes.pixmap().height()/ 2 ); + painter.drawPixmap( ol, attributes.pixmap() ); + } else { + QMatrix m; + qreal zW = (qreal)rect.width() / (qreal)attributes.pixmap().width(); + qreal zH = (qreal)rect.height() / (qreal)attributes.pixmap().height(); + switch ( attributes.pixmapMode() ) { + case BackgroundAttributes::BackgroundPixmapModeScaled: + { + qreal z; + z = qMin( zW, zH ); + m.scale( z, z ); + } + break; + case BackgroundAttributes::BackgroundPixmapModeStretched: + m.scale( zW, zH ); + break; + default: + ; // Cannot happen, previously checked + } + QPixmap pm = attributes.pixmap().transformed( m ); + ol.setX( rect.center().x() - pm.width() / 2 ); + ol.setY( rect.center().y() - pm.height()/ 2 ); + painter.drawPixmap( ol, pm ); + } + } +} + +/* static */ +void AbstractAreaBase::paintFrameAttributes( QPainter& painter, const QRect& rect, + const KDChart::FrameAttributes& attributes ) +{ + + if ( !attributes.isVisible() ) return; + + // Note: We set the brush to NoBrush explicitly here. + // Otherwise we might get a filled rectangle, so any + // previously drawn background would be overwritten by that area. + + const QPen oldPen( painter.pen() ); + const QBrush oldBrush( painter.brush() ); + + painter.setPen( PrintingParameters::scalePen( attributes.pen() ) ); + painter.setBrush( Qt::NoBrush ); + painter.drawRoundedRect( rect.adjusted( 0, 0, -1, -1 ), attributes.cornerRadius(), attributes.cornerRadius() ); + + painter.setBrush( oldBrush ); + painter.setPen( oldPen ); +} + +void AbstractAreaBase::paintBackground( QPainter& painter, const QRect& rect ) +{ + Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintBackground()", + "Private class was not initialized!" ); + + PainterSaver painterSaver( &painter ); + + const qreal radius = d->frameAttributes.cornerRadius(); + QPainterPath path; + path.addRoundedRect( rect.adjusted( 0, 0, -1, -1 ), radius, radius ); + painter.setClipPath(path); + + paintBackgroundAttributes( painter, rect, d->backgroundAttributes ); +} + + +void AbstractAreaBase::paintFrame( QPainter& painter, const QRect& rect ) +{ + Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintFrame()", + "Private class was not initialized!" ); + paintFrameAttributes( painter, rect, d->frameAttributes ); +} + + +void AbstractAreaBase::getFrameLeadings(int& left, int& top, int& right, int& bottom ) const +{ + int padding = 0; + if ( d && d->frameAttributes.isVisible() ) { + padding = qMax( d->frameAttributes.padding(), 0 ); + } + left = padding; + top = padding; + right = padding; + bottom = padding; +} + +QRect AbstractAreaBase::innerRect() const +{ + int left; + int top; + int right; + int bottom; + getFrameLeadings( left, top, right, bottom ); + return QRect ( QPoint( 0, 0 ), areaGeometry().size() ).adjusted( left, top, -right, -bottom ); +} + +void AbstractAreaBase::positionHasChanged() +{ + // this bloc left empty intentionally +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.h new file mode 100644 index 00000000..758cd22a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase.h @@ -0,0 +1,132 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREABASE_H +#define KDCHARTABSTRACTAREABASE_H + +#include +#include +#include + +#include "KDChartGlobal.h" +#include "KDChartLayoutItems.h" +#include "KDChartRelativePosition.h" +#include "KDChartAbstractAreaBase.h" + + +QT_BEGIN_NAMESPACE +class QPainter; +class QString; +QT_END_NAMESPACE + +namespace KDChart { + class TextAttributes; + class BackgroundAttributes; + class FrameAttributes; + class PaintContext; + + +/** + * @class AbstractAreaBase KDChartAbstractAreaBase.h + * @brief Base class for AbstractArea and AbstractAreaWidget: An area + * in the chart with a background, a frame, etc. + * + * AbstractAreaBase is the base class for all chart elements that have + * a set of background attributes and frame attributes, such as + * legends or axes. + * + * @note Normally you should not use AbstractAreaBase directly, but + * derive your classes from AbstractArea or AbstractAreaWidget. + * + * @note This classis not a QObject, so it is easier to inherit from + * it, if your are inheriting from a QObject too like AbstractAreaWidget does it. + * + * @sa AbstractArea, AbstractAreaWidget + */ +class KDCHART_EXPORT AbstractAreaBase +{ + Q_DISABLE_COPY( AbstractAreaBase ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AbstractAreaBase ) + +protected: + AbstractAreaBase(); + virtual ~AbstractAreaBase() ; + +public: +// virtual AbstractAreaBase * clone() const = 0; + + /** + * Returns true if both areas have the same settings. + */ + bool compare( const AbstractAreaBase* other ) const; + + void alignToReferencePoint( const RelativePosition& position ); + + void setFrameAttributes( const FrameAttributes &a ); + FrameAttributes frameAttributes() const; + + void setBackgroundAttributes( const BackgroundAttributes &a ); + BackgroundAttributes backgroundAttributes() const; + + virtual void paintBackground( QPainter& painter, const QRect& rectangle ); + virtual void paintFrame( QPainter& painter, const QRect& rectangle ); + + static void paintBackgroundAttributes( QPainter& painter, const QRect& rectangle, + const KDChart::BackgroundAttributes& attributes ); + static void paintFrameAttributes( QPainter& painter, const QRect& rectangle, + const KDChart::FrameAttributes& attributes ); + + /** \internal + * \note Normally you should not call this method, but derive your classes + * from AbstractArea or AbstractAreaWidget. + * \sa AbstractArea, AbstractAreaWidget + */ + void getFrameLeadings(int& left, int& top, int& right, int& bottom ) const; + + +protected: + /** \internal + * \note Normally you should not call this method, but derive your classes + * from AbstractArea or AbstractAreaWidget. + * \sa AbstractArea, AbstractAreaWidget + */ + QRect innerRect() const; + + /** \internal + * This internal method is used by AbstractArea and AbstractAreaWidget + * to find out the real widget size. + * \sa AbstractArea, AbstractAreaWidget + */ + virtual QRect areaGeometry() const = 0; + + /** \internal + * This internal method can be overwritten by derived classes, + * if they want to emit a signal (or perform other actions, resp.) + * when the Position of the area has been changed. + * The default implementation does nothing. + */ + virtual void positionHasChanged(); + +}; // End of class AbstractAreaBase + +} +#endif // KDCHARTABSTRACTAREABASE_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase_p.h new file mode 100644 index 00000000..24d51895 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaBase_p.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREABASE_P_H +#define KDCHARTABSTRACTAREABASE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +/** \file KDChartAbstractAreaBase_p.h + * \internal + */ + +#include "KDChartAbstractAreaBase.h" +#include "KDChartTextAttributes.h" +#include "KDChartFrameAttributes.h" +#include "KDChartBackgroundAttributes.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ + class AbstractAreaBase::Private + { + friend class AbstractAreaBase; + public: + explicit Private(); + virtual ~Private(); + + Private( const Private& rhs ) : + visible( rhs.visible ), + frameAttributes( rhs.frameAttributes ), + backgroundAttributes( rhs.backgroundAttributes ) + { + } + + protected: + void init(); + + // These are set each time the area's sizeHint() + // (or the maximumSize(), resp.) is calculated: + // They store additional layout-information about + // space needed around the area. + // Other classes (e.g. KDChart::AutoSpacer) can use + // these data to determine how much space has to + // be added additionally ... + mutable int amountOfLeftOverlap; + mutable int amountOfRightOverlap; + mutable int amountOfTopOverlap; + mutable int amountOfBottomOverlap; + + private: + bool visible; + KDChart::FrameAttributes frameAttributes; + KDChart::BackgroundAttributes backgroundAttributes; + }; + + inline AbstractAreaBase::AbstractAreaBase( AbstractAreaBase::Private * p ) : + _d( p ) { init(); } + +} +#endif /* KDCHARTABSTRACTAREABASE_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.cpp new file mode 100644 index 00000000..a2afcb57 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.cpp @@ -0,0 +1,186 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractAreaWidget.h" +#include "KDChartAbstractAreaWidget_p.h" + +#include + + +using namespace KDChart; + + +AbstractAreaWidget::Private::Private() +{ + // this block left empty intentionally +} + +AbstractAreaWidget::Private::~Private() +{ + // this block left empty intentionally +} + + +void AbstractAreaWidget::Private::resizeLayout( + AbstractAreaWidget* widget, const QSize& size ) +{ + if ( size == currentLayoutSize ) return; + + currentLayoutSize = size; + + // Now we call adjust the size, for the inner parts of the widget. + int left; + int top; + int right; + int bottom; + widget->getFrameLeadings( left, top, right, bottom ); + const QSize innerSize( size.width() - left - right, + size.height() - top - bottom ); + // With this adjusted size we call the real resizeLayout method, + // which normally will call resizeLayout( size ) in the derived class + // - which in turn is the place to resize the layout member variable + // of that class. + widget->resizeLayout( innerSize ); +} + + +AbstractAreaWidget::AbstractAreaWidget( QWidget* parent ) + : QWidget( parent ) + , AbstractAreaBase( new Private() ) +{ + init(); +} + +AbstractAreaWidget::~AbstractAreaWidget() +{ + // this block left empty intentionally +} + +void AbstractAreaWidget::init() +{ + // this block left empty intentionally +} + +void AbstractAreaWidget::needSizeHint() +{ + // this block left empty intentionally +} + +#define d d_func() + +void AbstractAreaWidget::resizeLayout( const QSize& size ) +{ + Q_UNUSED( size ); + // this block left empty intentionally +} + +void AbstractAreaWidget::paintEvent( QPaintEvent* event ) +{ + Q_UNUSED( event ); + QPainter painter( this ); + if ( size() != d->currentLayoutSize ) { + d->resizeLayout( this, size() ); + } + paintAll( painter ); +} + +void AbstractAreaWidget::paintIntoRect( QPainter& painter, const QRect& rect ) +{ + if ( rect.isEmpty() ) return; + + d->resizeLayout( this, rect.size() ); + + const QPoint translation( rect.topLeft() ); + painter.translate( translation ); + paintAll( painter ); + painter.translate( -translation.x(), -translation.y() ); + +/* + // make sure, the contents of the widget have been set up, + // so we get a useful geometry: + needSizeHint(); + + const QRect oldGeometry( layout()->geometry() ); + const QRect newGeo( QPoint(0,0), rect.size() ); + const bool mustChangeGeo = layout() && oldGeometry != newGeo; + if ( mustChangeGeo ) + layout()->setGeometry( newGeo ); + painter.translate( rect.left(), rect.top() ); + paintAll( painter ); + painter.translate( -rect.left(), -rect.top() ); + if ( mustChangeGeo ) + layout()->setGeometry( oldGeometry ); +*/ +} + +void AbstractAreaWidget::forceRebuild() +{ + //bloc left empty intentionally +} + +void AbstractAreaWidget::paintAll( QPainter& painter ) +{ + // Paint the background and frame + paintBackground( painter, QRect(QPoint(0, 0), size() ) ); + paintFrame( painter, QRect(QPoint(0, 0), size() ) ); + +/* + we do not call setContentsMargins() now, + but we call resizeLayout() whenever the size or the frame has changed + + // adjust the widget's content margins, + // to be sure all content gets calculated + // to fit into the inner rectangle + const QRect oldGeometry( areaGeometry() ); + const QRect inner( innerRect() ); + //qDebug() << "areaGeometry():" << oldGeometry + // << " contentsRect():" << contentsRect() << " inner:" << inner; + if ( contentsRect() != inner ) { + //qDebug() << "old contentsRect():" << contentsRect() << " new innerRect:" << inner; + setContentsMargins( + inner.left(), + inner.top(), + oldGeometry.width() -inner.width()-1, + oldGeometry.height()-inner.height()-1 ); + //forceRebuild(); + } +*/ + int left; + int top; + int right; + int bottom; + getFrameLeadings( left, top, right, bottom ); + const QPoint translation( left, top ); + painter.translate( translation ); + paint( &painter ); + painter.translate( -translation.x(), -translation.y() ); +} + +QRect AbstractAreaWidget::areaGeometry() const +{ + return geometry(); +} + +void AbstractAreaWidget::positionHasChanged() +{ + emit positionChanged( this ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.h new file mode 100644 index 00000000..0bc7157f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREAWIDGET_H +#define KDCHARTABSTRACTAREAWIDGET_H + +#include +#include +#include +#include + +#include "KDChartAbstractAreaBase.h" + +namespace KDChart { + + +/** + * @class AbstractAreaWidget KDChartAbstractArea.h + * @brief An area in the chart with a background, a frame, etc. + * + * AbstractAreaWidget is the base for all widget classes that have + * a set of background attributes and frame attributes, such as + * KDChart::Chart and KDChart::Legend. + */ +class KDCHART_EXPORT AbstractAreaWidget : public QWidget, public AbstractAreaBase +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractAreaWidget ) + KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( AbstractAreaWidget ) + +public: + explicit AbstractAreaWidget( QWidget* parent = 0 ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite paint() instead. + * @sa paint + */ + virtual void paintEvent( QPaintEvent* event ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Overwrite this to paint the inner contents of your widget. + * + * @note When overriding this method, please let your widget draw + * itself at the top/left corner of the painter. You should call rect() + * (or width(), height(), resp.) to find the drawable area's size: + * While the paint() method is being executed the frame of the widget + * is outside of its rect(), so you can use all of rect() for + * your custom drawing! + * @sa paint, paintIntoRect + */ + virtual void paint( QPainter* painter ) = 0; + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + void paintAll( QPainter& painter ); + + /** + * Call this to trigger an unconditional re-building of the widget's internals. + */ + virtual void forceRebuild(); + + /** + * Call this to trigger an conditional re-building of the widget's internals. + * + * e.g. AbstractAreaWidget call this, before calling layout()->setGeometry() + */ + virtual void needSizeHint(); + virtual void resizeLayout( const QSize& ); + +Q_SIGNALS: + void positionChanged( AbstractAreaWidget * ); + +protected: + virtual ~AbstractAreaWidget() ; + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); +}; + +} +#endif // KDCHARTABSTRACTAREAWIDGET_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget_p.h new file mode 100644 index 00000000..d804979f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAreaWidget_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREAWIDGET_P_H +#define KDCHARTABSTRACTAREAWIDGET_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +/** \file KDChartAbstractAreaWidget_p.h + * \internal + */ + +#include "KDChartAbstractAreaWidget.h" +#include "KDChartAbstractAreaBase_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class AbstractAreaWidget::Private : public AbstractAreaBase::Private +{ + friend class AbstractAreaWidget; +public: + explicit Private(); + virtual ~Private(); + + Private( const Private& rhs ) : + AbstractAreaBase::Private( rhs ) + { + // Just for consistency + } + + QSize currentLayoutSize; + + // non-virtual method, calling widget->resizeLayout( size ) + void resizeLayout( AbstractAreaWidget* widget, const QSize& sz ); +}; + + +inline AbstractAreaWidget::AbstractAreaWidget( AbstractAreaWidget::Private * p, QWidget* parent ) + : QWidget( parent ), AbstractAreaBase( p ) +{ + init(); +} +inline AbstractAreaWidget::Private * AbstractAreaWidget::d_func() +{ + return static_cast( AbstractAreaBase::d_func() ); +} +inline const AbstractAreaWidget::Private * AbstractAreaWidget::d_func() const +{ + return static_cast( AbstractAreaBase::d_func() ); +} + + +} + +#endif /* KDCHARTABSTRACTAREAWIDGET_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea_p.h new file mode 100644 index 00000000..b45b8f91 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractArea_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAREA_P_H +#define KDCHARTABSTRACTAREA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +/** \file KDChartAbstractArea_p.h + * \internal + */ + +#include "KDChartAbstractArea.h" +#include "KDChartAbstractAreaBase_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class AbstractArea::Private : public AbstractAreaBase::Private +{ + friend class AbstractArea; +public: + explicit Private(); + virtual ~Private(); +}; + + +inline AbstractArea::AbstractArea( Private * p ) + : QObject(), AbstractAreaBase( p ), AbstractLayoutItem() +{ + init(); +} +inline AbstractArea::Private * AbstractArea::d_func() +{ + return static_cast( AbstractAreaBase::d_func() ); +} +inline const AbstractArea::Private * AbstractArea::d_func() const +{ + return static_cast( AbstractAreaBase::d_func() ); +} + +} + +#endif /* KDCHARTABSTRACTAREA_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.cpp new file mode 100644 index 00000000..29fc119a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.cpp @@ -0,0 +1,256 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractAxis.h" +#include "KDChartAbstractAxis_p.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartEnums.h" +#include "KDChartMeasure.h" + +#include + +using namespace KDChart; + +#define d d_func() + +AbstractAxis::Private::Private( AbstractDiagram* diagram, AbstractAxis* axis ) + : observer( 0 ) + , mDiagram( diagram ) + , mAxis( axis ) +{ + // Note: We do NOT call setDiagram( diagram, axis ); + // but it is called in AbstractAxis::delayedInit() instead! +} + +AbstractAxis::Private::~Private() +{ + delete observer; + observer = 0; +} + +bool AbstractAxis::Private::setDiagram( + AbstractDiagram* diagram_, + bool delayedInit ) +{ + AbstractDiagram* diagram = delayedInit ? mDiagram : diagram_; + if ( delayedInit ) { + mDiagram = 0; + } + + // do not set a diagram again that was already set + if ( diagram && + ((diagram == mDiagram) || secondaryDiagrams.contains( diagram )) ) + return false; + + bool bNewDiagramStored = false; + if ( ! mDiagram ) { + mDiagram = diagram; + delete observer; + if ( mDiagram ) { + observer = new DiagramObserver( mDiagram, mAxis ); + const bool con = connect( observer, SIGNAL( diagramDataChanged( AbstractDiagram *) ), + mAxis, SIGNAL( coordinateSystemChanged() ) ); + Q_UNUSED( con ) + Q_ASSERT( con ); + bNewDiagramStored = true; + } else { + observer = 0; + } + } else { + if ( diagram ) + secondaryDiagrams.enqueue( diagram ); + } + return bNewDiagramStored; +} + +void AbstractAxis::Private::unsetDiagram( AbstractDiagram* diagram ) +{ + if ( diagram == mDiagram ) { + mDiagram = 0; + delete observer; + observer = 0; + } else { + secondaryDiagrams.removeAll( diagram ); + } + if ( !secondaryDiagrams.isEmpty() ) { + AbstractDiagram *nextDiagram = secondaryDiagrams.dequeue(); + setDiagram( nextDiagram ); + } +} + +bool AbstractAxis::Private::hasDiagram( AbstractDiagram* diagram ) const +{ + return diagram == mDiagram || secondaryDiagrams.contains( diagram ); +} + +AbstractAxis::AbstractAxis ( AbstractDiagram* diagram ) + : AbstractArea( new Private( diagram, this ) ) +{ + init(); + QTimer::singleShot(0, this, SLOT(delayedInit())); +} + +AbstractAxis::~AbstractAxis() +{ + d->mDiagram = 0; + d->secondaryDiagrams.clear(); +} + + +void AbstractAxis::init() +{ + Measure m( 14, KDChartEnums::MeasureCalculationModeAuto, KDChartEnums::MeasureOrientationAuto ); + d->textAttributes.setFontSize( m ); + m.setValue( 6 ); + m.setCalculationMode( KDChartEnums::MeasureCalculationModeAbsolute ); + d->textAttributes.setMinimalFontSize( m ); + if ( d->diagram() ) + createObserver( d->diagram() ); +} + +void AbstractAxis::delayedInit() +{ + // We call setDiagram() here, because the c'tor of Private + // only has stored the pointers, but it did not call setDiagram(). + if ( d ) + d->setDiagram( 0, true /* delayedInit */ ); +} + +bool AbstractAxis::compare( const AbstractAxis* other ) const +{ + if ( other == this ) { + return true; + } + if ( !other ) { + return false; + } + + return ( static_cast(this)->compare( other ) ) && + (textAttributes() == other->textAttributes()) && + (labels() == other->labels()) && + (shortLabels() == other->shortLabels()); +} + + +const QString AbstractAxis::customizedLabel( const QString& label ) const +{ + return label; +} + + +void AbstractAxis::createObserver( AbstractDiagram* diagram ) +{ + d->setDiagram( diagram ); +} + +void AbstractAxis::deleteObserver( AbstractDiagram* diagram ) +{ + d->unsetDiagram( diagram ); +} + +void AbstractAxis::connectSignals() +{ + if ( d->observer ) { + const bool con = connect( d->observer, SIGNAL( diagramDataChanged( AbstractDiagram *) ), + this, SIGNAL( coordinateSystemChanged() ) ); + Q_UNUSED( con ); + Q_ASSERT( con ); + } +} + +void AbstractAxis::setTextAttributes( const TextAttributes &a ) +{ + if ( d->textAttributes == a ) + return; + + d->textAttributes = a; + update(); +} + +TextAttributes AbstractAxis::textAttributes() const +{ + return d->textAttributes; +} + + +void AbstractAxis::setRulerAttributes( const RulerAttributes &a ) +{ + d->rulerAttributes = a; + update(); +} + +RulerAttributes AbstractAxis::rulerAttributes() const +{ + return d->rulerAttributes; +} + +void AbstractAxis::setLabels( const QStringList& list ) +{ + if ( d->hardLabels == list ) + return; + + d->hardLabels = list; + update(); +} + +QStringList AbstractAxis::labels() const +{ + return d->hardLabels; +} + +void AbstractAxis::setShortLabels( const QStringList& list ) +{ + if ( d->hardShortLabels == list ) + return; + + d->hardShortLabels = list; + update(); +} + +QStringList AbstractAxis::shortLabels() const +{ + return d->hardShortLabels; +} + +const AbstractCoordinatePlane* AbstractAxis::coordinatePlane() const +{ + if ( d->diagram() ) + return d->diagram()->coordinatePlane(); + return 0; +} + +const AbstractDiagram * KDChart::AbstractAxis::diagram() const +{ + return d->diagram(); +} + +bool KDChart::AbstractAxis::observedBy( AbstractDiagram * diagram ) const +{ + return d->hasDiagram( diagram ); +} + +void KDChart::AbstractAxis::update() +{ + if ( d->diagram() ) + d->diagram()->update(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.h new file mode 100644 index 00000000..f8d418b2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis.h @@ -0,0 +1,247 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTAXIS_H +#define KDCHARTABSTRACTAXIS_H + +// #include +// #include +// #include + +#include "kdchart_export.h" +#include "KDChartGlobal.h" +#include "KDChartAbstractArea.h" +#include "KDChartTextAttributes.h" +#include "KDChartRulerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class QSizeF; +QT_END_NAMESPACE + + +namespace KDChart { + + class Area; + class AbstractCoordinatePlane; + class PaintContext; + class AbstractDiagram; + + /** + * The base class for axes. + * + * For being useful, axes need to be assigned to a diagram, see + * AbstractCartesianDiagram::addAxis and AbstractCartesianDiagram::takeAxis. + * + * \sa PolarAxis, AbstractCartesianDiagram + */ + class KDCHART_EXPORT AbstractAxis : public AbstractArea + { + Q_OBJECT + + Q_DISABLE_COPY( AbstractAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( AbstractAxis, AbstractDiagram* ) + + public: + explicit AbstractAxis( AbstractDiagram* diagram = 0 ); + virtual ~AbstractAxis(); + + // FIXME implement when code os ready for it: + // virtual Area* clone() const = 0; + + // FIXME (Mirko) readd when needed + // void copyRelevantDetailsFrom( const KDChartAxis* axis ); + + /* virtual void paint( PaintContext* ) const = 0; + virtual QSize sizeHint() const = 0;*/ + //virtual void paintEvent( QPaintEvent* event) = 0; + + /** + * \brief Implement this method if you want to adjust axis labels + * before they are printed. + * + * KD Chart is calling this method immediately before drawing the + * text, this means: What you return here will be drawn without + * further modifications. + * + * \param label The text of the label as KD Chart has calculated it + * automatically (or as it was taken from a QStringList provided + * by you, resp.) + * + * \return The text to be drawn. By default this is the same as \c label. + */ + virtual const QString customizedLabel( const QString& label ) const; + + /** + * Returns true if both axes have the same settings. + */ + bool compare( const AbstractAxis* other ) const; + + /** + * \internal + * + * Method invoked by AbstractCartesianDiagram::addAxis(). + * + * You should not call this function, unless you know exactly, + * what you are doing. + * + * \sa connectSignals(), AbstractCartesianDiagram::addAxis() + */ + void createObserver( AbstractDiagram* diagram ); + + /** + * \internal + * + * Method invoked by AbstractCartesianDiagram::takeAxis(). + * + * You should not call this function, unless you know exactly, + * what you are doing. + * + * \sa AbstractCartesianDiagram::takeAxis() + */ + void deleteObserver( AbstractDiagram* diagram ); + const AbstractDiagram* diagram() const; + bool observedBy( AbstractDiagram* diagram ) const; + + /** + * Wireing the signal/slot connections. + * + * This method gets called automatically, each time, when you assign + * the axis to a diagram, either by passing a diagram* to the c'tor, + * or by calling the diagram's setAxis method, resp. + * + * If overwriting this method in derived classes, make sure to call + * this base method AbstractAxis::connectSignals(), so your axis + * gets connected to the diagram's built-in signals. + * + * \sa AbstractCartesianDiagram::addAxis() + */ + virtual void connectSignals(); + + /** + \brief Use this to specify the text attributes to be used for axis labels. + + By default, the reference area will be set at painting time. + It will be the then-valid coordinate plane's parent widget, + so normally, it will be the KDChart::Chart. + Thus the labels of all of your axes in all of your diagrams + within that Chart will be drawn in same font size, by default. + + \sa textAttributes, setLabels + */ + void setTextAttributes( const TextAttributes &a ); + + /** + \brief Returns the text attributes to be used for axis labels. + + \sa setTextAttributes + */ + TextAttributes textAttributes() const; + + /** + \brief Use this to specify the attributes used to paint the axis ruler + + Every axis has a default set of ruler attributes that is exactly the + same among them. Use this method to specify your own attributes. + + \sa rulerAttributes + */ + void setRulerAttributes( const RulerAttributes &a ); + + /** + \brief Returns the attributes to be used for painting the rulers + + \sa setRulerAttributes + */ + RulerAttributes rulerAttributes() const; + + /** + \brief Use this to specify your own set of strings, to be used as axis labels. + + Labels specified via setLabels take precedence: + If a non-empty list is passed, KD Chart will use these strings as axis labels, + instead of calculating them. + + If you pass a smaller number of strings than the number of labels drawn at this + axis, KD Chart will repeat the strings until all labels are drawn. + As an example you could specify the seven days of the week as abscissa labels, + which would be repeatedly used then. + + By passing an empty QStringList you can reset the default behaviour. + + \sa labels, setShortLabels + */ + void setLabels( const QStringList& list ); + + /** + Returns a list of strings, that are used as axis labels, as set via setLabels. + + \sa setLabels + */ + QStringList labels() const; + + /** + \brief Use this to specify your own set of strings, to be used as axis labels, + in case the normal labels are too long. + + \note Setting done via setShortLabels will be ignored, if you did not pass + a non-empty string list via setLabels too! + + By passing an empty QStringList you can reset the default behaviour. + + \sa shortLabels, setLabels + */ + void setShortLabels( const QStringList& list ); + + /** + Returns a list of strings, that are used as axis labels, as set via setShortLabels. + + \note Setting done via setShortLabels will be ignored, if you did not pass + a non-empty string list via setLabels too! + + \sa setShortLabels + */ + QStringList shortLabels() const; + + virtual void setGeometry( const QRect& rect ) = 0; + virtual QRect geometry() const = 0; + + /** + \brief Convenience function, returns the coordinate plane, in which this axis is used. + + If the axis is not used in a coordinate plane, the return value is Zero. + */ + const AbstractCoordinatePlane* coordinatePlane() const; + + protected Q_SLOTS: + /** called for initializing after the c'tor has completed */ + virtual void delayedInit(); + + public Q_SLOTS: + void update(); + + Q_SIGNALS: + void coordinateSystemChanged(); + }; +} + +#endif // KDCHARTABSTRACTAXIS_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis_p.h new file mode 100644 index 00000000..434a1058 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractAxis_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTAXIS_P_H +#define KDCHARTAXIS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include "KDChartAbstractArea_p.h" +#include "KDChartAbstractDiagram.h" +#include +#include +#include + +#include + + +namespace KDChart { + +/** + * \internal + */ +class AbstractAxis::Private : public AbstractArea::Private +{ + friend class AbstractAxis; + +public: + Private( AbstractDiagram* diagram, AbstractAxis* axis ); + ~Private(); + + bool setDiagram( AbstractDiagram* diagram, bool delayedInit = false ); + void unsetDiagram( AbstractDiagram* diagram ); + AbstractDiagram* diagram() const + { + return mDiagram; + } + bool hasDiagram( AbstractDiagram* diagram ) const; + + DiagramObserver* observer; + + TextAttributes textAttributes; + RulerAttributes rulerAttributes; + QStringList hardLabels; + QStringList hardShortLabels; + QQueue secondaryDiagrams; + +protected: + AbstractDiagram* mDiagram; + AbstractAxis* mAxis; +}; + + +inline AbstractAxis::AbstractAxis( Private * p, AbstractDiagram* diagram ) + : AbstractArea( p ) +{ + Q_UNUSED( diagram ); + init(); + QTimer::singleShot(0, this, SLOT(delayedInit())); +} + +inline AbstractAxis::Private * AbstractAxis::d_func() +{ return static_cast( AbstractArea::d_func() ); } +inline const AbstractAxis::Private * AbstractAxis::d_func() const +{ return static_cast( AbstractArea::d_func() ); } + +} +#endif /* KDCHARTAREA_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.cpp new file mode 100644 index 00000000..25020e2a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.cpp @@ -0,0 +1,455 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartAbstractCoordinatePlane_p.h" + +#include "KDChartChart.h" +#include "KDChartGridAttributes.h" + +#include + +#include +#include +#include +#include + +using namespace KDChart; + +#define d d_func() + +AbstractCoordinatePlane::Private::Private() + : AbstractArea::Private() + , parent( 0 ) + , grid( 0 ) + , referenceCoordinatePlane( 0 ) + , enableCornerSpacers( true ) + , enableRubberBandZooming( false ) + , rubberBand( 0 ) +{ + // this bloc left empty intentionally +} + + +AbstractCoordinatePlane::AbstractCoordinatePlane ( KDChart::Chart* parent ) + : AbstractArea ( new Private() ) +{ + d->parent = parent; + d->init(); +} + +AbstractCoordinatePlane::~AbstractCoordinatePlane() +{ + emit destroyedCoordinatePlane( this ); +} + +void AbstractCoordinatePlane::init() +{ + d->initialize(); // virtual method to init the correct grid: cartesian, polar, ... + connect( this, SIGNAL(internal_geometryChanged( QRect, QRect )), + this, SIGNAL(geometryChanged( QRect, QRect )), + Qt::QueuedConnection ); +} + +void AbstractCoordinatePlane::addDiagram ( AbstractDiagram* diagram ) +{ + // diagrams are invisible and paint through their paint() method + diagram->hide(); + + d->diagrams.append( diagram ); + diagram->setParent( d->parent ); + diagram->setCoordinatePlane( this ); + layoutDiagrams(); + layoutPlanes(); // there might be new axes, etc + connect( diagram, SIGNAL( modelsChanged() ), this, SLOT( layoutPlanes() ) ); + connect( diagram, SIGNAL( modelDataChanged() ), this, SLOT( update()) ); + connect( diagram, SIGNAL( modelDataChanged() ), this, SLOT( relayout()) ); + connect( this, SIGNAL( boundariesChanged() ), diagram, SIGNAL( boundariesChanged() ) ); + + update(); + emit boundariesChanged(); +} + +/*virtual*/ +void AbstractCoordinatePlane::replaceDiagram ( AbstractDiagram* diagram, AbstractDiagram* oldDiagram_ ) +{ + if ( diagram && oldDiagram_ != diagram ) { + AbstractDiagram* oldDiagram = oldDiagram_; + if ( d->diagrams.count() ) { + if ( ! oldDiagram ) { + oldDiagram = d->diagrams.first(); + if ( oldDiagram == diagram ) + return; + } + takeDiagram( oldDiagram ); + } + delete oldDiagram; + addDiagram( diagram ); + layoutDiagrams(); + layoutPlanes(); // there might be new axes, etc + update(); + } +} + +/*virtual*/ +void AbstractCoordinatePlane::takeDiagram ( AbstractDiagram* diagram ) +{ + const int idx = d->diagrams.indexOf( diagram ); + if ( idx != -1 ) { + d->diagrams.removeAt( idx ); + diagram->setParent( 0 ); + diagram->setCoordinatePlane( 0 ); + disconnect( diagram, SIGNAL( modelsChanged() ), this, SLOT( layoutPlanes() ) ); + disconnect( diagram, SIGNAL( modelDataChanged() ), this, SLOT( update()) ); + disconnect( diagram, SIGNAL( modelDataChanged() ), this, SLOT( relayout()) ); + layoutDiagrams(); + update(); + } +} + + +AbstractDiagram* AbstractCoordinatePlane::diagram() +{ + if ( d->diagrams.isEmpty() ) + { + return 0; + } else { + return d->diagrams.first(); + } +} + +AbstractDiagramList AbstractCoordinatePlane::diagrams() +{ + return d->diagrams; +} + +ConstAbstractDiagramList AbstractCoordinatePlane::diagrams() const +{ + ConstAbstractDiagramList list; +#ifndef QT_NO_STL + qCopy( d->diagrams.begin(), d->diagrams.end(), std::back_inserter( list ) ); +#else + Q_FOREACH( AbstractDiagram * a, d->diagrams ) + list.push_back( a ); +#endif + return list; +} + +void KDChart::AbstractCoordinatePlane::setGlobalGridAttributes( const GridAttributes& a ) +{ + d->gridAttributes = a; + update(); +} + +GridAttributes KDChart::AbstractCoordinatePlane::globalGridAttributes() const +{ + return d->gridAttributes; +} + +KDChart::DataDimensionsList KDChart::AbstractCoordinatePlane::gridDimensionsList() +{ + return d->grid->updateData( this ); +} + +void KDChart::AbstractCoordinatePlane::setGridNeedsRecalculate() +{ + d->grid->setNeedRecalculate(); +} + +void KDChart::AbstractCoordinatePlane::setReferenceCoordinatePlane( AbstractCoordinatePlane * plane ) +{ + d->referenceCoordinatePlane = plane; +} + +AbstractCoordinatePlane * KDChart::AbstractCoordinatePlane::referenceCoordinatePlane( ) const +{ + return d->referenceCoordinatePlane; +} + +void KDChart::AbstractCoordinatePlane::setParent( KDChart::Chart* parent ) +{ + d->parent = parent; +} + +const KDChart::Chart* KDChart::AbstractCoordinatePlane::parent() const +{ + return d->parent; +} + +KDChart::Chart* KDChart::AbstractCoordinatePlane::parent() +{ + return d->parent; +} + +/* pure virtual in QLayoutItem */ +bool KDChart::AbstractCoordinatePlane::isEmpty() const +{ + return false; // never empty! + // coordinate planes with no associated diagrams + // are showing a default grid of ()1..10, 1..10) stepWidth 1 +} +/* pure virtual in QLayoutItem */ +Qt::Orientations KDChart::AbstractCoordinatePlane::expandingDirections() const +{ + return Qt::Vertical | Qt::Horizontal; +} +/* pure virtual in QLayoutItem */ +QSize KDChart::AbstractCoordinatePlane::maximumSize() const +{ + // No maximum size set. Especially not parent()->size(), we are not layouting + // to the parent widget's size when using Chart::paint()! + return QSize(QLAYOUTSIZE_MAX, QLAYOUTSIZE_MAX); +} +/* pure virtual in QLayoutItem */ +QSize KDChart::AbstractCoordinatePlane::minimumSize() const +{ + return QSize(60, 60); // this default can be overwritten by derived classes +} +/* pure virtual in QLayoutItem */ +QSize KDChart::AbstractCoordinatePlane::sizeHint() const +{ + // we return our maxiumu (which is the full size of the Chart) + // even if we know the plane will be smaller + return maximumSize(); +} +/* pure virtual in QLayoutItem */ +void KDChart::AbstractCoordinatePlane::setGeometry( const QRect& r ) +{ + if ( d->geometry != r ) { + // inform the outside word by Signal geometryChanged() + // via a queued connection to internal_geometryChanged() + emit internal_geometryChanged( d->geometry, r ); + + d->geometry = r; + // Note: We do *not* call update() here + // because it would invoke KDChart::update() recursively. + } +} +/* pure virtual in QLayoutItem */ +QRect KDChart::AbstractCoordinatePlane::geometry() const +{ + return d->geometry; +} + +void KDChart::AbstractCoordinatePlane::update() +{ + //qDebug("KDChart::AbstractCoordinatePlane::update() called"); + emit needUpdate(); +} + +void KDChart::AbstractCoordinatePlane::relayout() +{ + //qDebug("KDChart::AbstractCoordinatePlane::relayout() called"); + emit needRelayout(); +} + +void KDChart::AbstractCoordinatePlane::layoutPlanes() +{ + //qDebug("KDChart::AbstractCoordinatePlane::relayout() called"); + emit needLayoutPlanes(); +} + +void KDChart::AbstractCoordinatePlane::setRubberBandZoomingEnabled( bool enable ) +{ + d->enableRubberBandZooming = enable; + + if ( !enable && d->rubberBand != 0 ) + { + delete d->rubberBand; + d->rubberBand = 0; + } +} + +bool KDChart::AbstractCoordinatePlane::isRubberBandZoomingEnabled() const +{ + return d->enableRubberBandZooming; +} + +void KDChart::AbstractCoordinatePlane::setCornerSpacersEnabled( bool enable ) +{ + if ( d->enableCornerSpacers == enable ) return; + + d->enableCornerSpacers = enable; + emit needRelayout(); +} + +bool KDChart::AbstractCoordinatePlane::isCornerSpacersEnabled() const +{ + return d->enableCornerSpacers; +} + +void KDChart::AbstractCoordinatePlane::mousePressEvent( QMouseEvent* event ) +{ + if ( event->button() == Qt::LeftButton ) + { + if ( d->enableRubberBandZooming && d->rubberBand == 0 ) + d->rubberBand = new QRubberBand( QRubberBand::Rectangle, qobject_cast< QWidget* >( parent() ) ); + + if ( d->rubberBand != 0 ) + { + d->rubberBandOrigin = event->pos(); + d->rubberBand->setGeometry( QRect( event->pos(), QSize() ) ); + d->rubberBand->show(); + + event->accept(); + } + } + else if ( event->button() == Qt::RightButton ) + { + if ( d->enableRubberBandZooming && !d->rubberBandZoomConfigHistory.isEmpty() ) + { + // restore the last config from the stack + ZoomParameters config = d->rubberBandZoomConfigHistory.pop(); + setZoomFactorX( config.xFactor ); + setZoomFactorY( config.yFactor ); + setZoomCenter( config.center() ); + + QWidget* const p = qobject_cast< QWidget* >( parent() ); + if ( p != 0 ) + p->update(); + + event->accept(); + } + } + + KDAB_FOREACH( AbstractDiagram * a, d->diagrams ) + { + a->mousePressEvent( event ); + } +} + +void KDChart::AbstractCoordinatePlane::mouseDoubleClickEvent( QMouseEvent* event ) +{ + if ( event->button() == Qt::RightButton ) + { + // othewise the second click gets lost + // which is pretty annoying when zooming out fast + mousePressEvent( event ); + } + KDAB_FOREACH( AbstractDiagram * a, d->diagrams ) + { + a->mouseDoubleClickEvent( event ); + } +} + +void KDChart::AbstractCoordinatePlane::mouseReleaseEvent( QMouseEvent* event ) +{ + if ( d->rubberBand != 0 ) + { + // save the old config on the stack + d->rubberBandZoomConfigHistory.push( ZoomParameters( zoomFactorX(), zoomFactorY(), zoomCenter() ) ); + + // this is the height/width of the rubber band in pixel space + const qreal rubberWidth = static_cast< qreal >( d->rubberBand->width() ); + const qreal rubberHeight = static_cast< qreal >( d->rubberBand->height() ); + + if ( rubberWidth > 0.0 && rubberHeight > 0.0 ) + { + // this is the center of the rubber band in pixel space + const qreal centerX = qFloor( d->rubberBand->geometry().width() / 2.0 + d->rubberBand->geometry().x() ); + const qreal centerY = qCeil( d->rubberBand->geometry().height() / 2.0 + d->rubberBand->geometry().y() ); + + const qreal rubberCenterX = static_cast< qreal >( centerX - geometry().x() ); + const qreal rubberCenterY = static_cast< qreal >( centerY - geometry().y() ); + + // this is the height/width of the plane in pixel space + const qreal myWidth = static_cast< qreal >( geometry().width() ); + const qreal myHeight = static_cast< qreal >( geometry().height() ); + + // this describes the new center of zooming, relative to the plane pixel space + const qreal newCenterX = rubberCenterX / myWidth / zoomFactorX() + zoomCenter().x() - 0.5 / zoomFactorX(); + const qreal newCenterY = rubberCenterY / myHeight / zoomFactorY() + zoomCenter().y() - 0.5 / zoomFactorY(); + + // this will be the new zoom factor + const qreal newZoomFactorX = zoomFactorX() * myWidth / rubberWidth; + const qreal newZoomFactorY = zoomFactorY() * myHeight / rubberHeight; + + // and this the new center + const QPointF newZoomCenter( newCenterX, newCenterY ); + + setZoomFactorX( newZoomFactorX ); + setZoomFactorY( newZoomFactorY ); + setZoomCenter( newZoomCenter ); + } + + d->rubberBand->parentWidget()->update(); + delete d->rubberBand; + d->rubberBand = 0; + + event->accept(); + } + + KDAB_FOREACH( AbstractDiagram * a, d->diagrams ) + { + a->mouseReleaseEvent( event ); + } +} + +void KDChart::AbstractCoordinatePlane::mouseMoveEvent( QMouseEvent* event ) +{ + if ( d->rubberBand != 0 ) + { + const QRect normalized = QRect( d->rubberBandOrigin, event->pos() ).normalized(); + d->rubberBand->setGeometry( normalized & geometry() ); + + event->accept(); + } + + KDAB_FOREACH( AbstractDiagram * a, d->diagrams ) + { + a->mouseMoveEvent( event ); + } +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +bool KDChart::AbstractCoordinatePlane::isVisiblePoint( const QPointF& point ) const +{ + return d->isVisiblePoint( this, point ); +} + +AbstractCoordinatePlane* KDChart::AbstractCoordinatePlane::sharedAxisMasterPlane( QPainter* p ) +{ + Q_UNUSED( p ); + return this; +} + +#if !defined(QT_NO_DEBUG_STREAM) +#include "KDChartEnums.h" + +QDebug KDChart::operator<<( QDebug stream, const DataDimension& r ) +{ + stream << "DataDimension(" + << " start=" << r.start + << " end=" << r.end + << " sequence=" << KDChartEnums::granularitySequenceToString( r.sequence ) + << " isCalculated=" << r.isCalculated + << " calcMode=" << ( r.calcMode == AbstractCoordinatePlane::Logarithmic ? "Logarithmic" : "Linear" ) + << " stepWidth=" << r.stepWidth + << " subStepWidth=" << r.subStepWidth + << " )"; + return stream; +} +#endif + +#undef d diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.h new file mode 100644 index 00000000..ece24b83 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane.h @@ -0,0 +1,446 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTCOORDINATEPLANE_H +#define KDCHARTABSTRACTCOORDINATEPLANE_H + +#include +#include + +#include "KDChartAbstractArea.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartEnums.h" + +namespace KDChart { + + class Chart; + class GridAttributes; + class DataDimension; + + typedef QList DataDimensionsList; + + /** + * @brief Base class common for all coordinate planes, CartesianCoordinatePlane, PolarCoordinatePlane, TernaryCoordinatePlane + */ + class KDCHART_EXPORT AbstractCoordinatePlane : public AbstractArea + { + Q_OBJECT + + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( AbstractCoordinatePlane, Chart* ) + + friend class AbstractGrid; + + public: + enum AxesCalcMode { Linear, Logarithmic }; + + protected: + explicit AbstractCoordinatePlane( Chart* parent = 0 ); + + public: + virtual ~AbstractCoordinatePlane(); + + /** + * Adds a diagram to this coordinate plane. + * @param diagram The diagram to add. + * + * \sa replaceDiagram, takeDiagram + */ + virtual void addDiagram( AbstractDiagram* diagram ); + + /** + * Replaces the old diagram, or appends the + * diagram, it there is none yet. + * + * @param diagram The diagram to be used instead of the old diagram. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldDiagram The diagram to be removed by the new diagram. This + * diagram will be deleted automatically. If the parameter is omitted, + * the very first diagram will be replaced. In case, there was no + * diagram yet, the new diagram will just be added. + * + * \note If you want to re-use the old diagram, call takeDiagram and + * addDiagram, instead of using replaceDiagram. + * + * \sa addDiagram, takeDiagram + */ + virtual void replaceDiagram( AbstractDiagram* diagram, AbstractDiagram* oldDiagram = 0 ); + + /** + * Removes the diagram from the plane, without deleting it. + * + * The plane no longer owns the diagram, so it is + * the caller's responsibility to delete the diagram. + * + * \sa addDiagram, replaceDiagram + */ + virtual void takeDiagram( AbstractDiagram* diagram ); + + /** + * @return The first diagram associated with this coordinate plane. + */ + AbstractDiagram* diagram(); + + /** + * @return The list of diagrams associated with this coordinate plane. + */ + AbstractDiagramList diagrams(); + + /** + * @return The list of diagrams associated with this coordinate plane. + */ + ConstAbstractDiagramList diagrams() const; + + /** + * Distribute the available space among the diagrams and axes. + */ + virtual void layoutDiagrams() = 0; + + /** + * Translate the given point in value space coordinates to a position + * in pixel space. + * @param diagramPoint The point in value coordinates. + * @returns The translated point. + */ + virtual const QPointF translate( const QPointF& diagramPoint ) const = 0; + + /** + * @return Whether zooming with a rubber band using the mouse is enabled. + */ + bool isRubberBandZoomingEnabled() const; + + /** + * Enables or disables zooming with a rubber band using the mouse. + */ + void setRubberBandZoomingEnabled( bool enable ); + + /** + * @return The zoom factor in horizontal direction, that is applied + * to all coordinate transformations. + */ + virtual qreal zoomFactorX() const { return 1.0; } + + /** + * @return The zoom factor in vertical direction, that is applied + * to all coordinate transformations. + */ + virtual qreal zoomFactorY() const { return 1.0; } + + /** + * Sets both zoom factors in one go. + * \sa setZoomFactorX,setZoomFactorY + */ + virtual void setZoomFactors( qreal factorX, qreal factorY ) { Q_UNUSED( factorX ); Q_UNUSED( factorY ); } + + /** + * Sets the zoom factor in horizontal direction, that is applied + * to all coordinate transformations. + * @param factor The new zoom factor + */ + virtual void setZoomFactorX( qreal factor ) { Q_UNUSED( factor ); } + + /** + * Sets the zoom factor in vertical direction, that is applied + * to all coordinate transformations. + * @param factor The new zoom factor + */ + virtual void setZoomFactorY( qreal factor ) { Q_UNUSED( factor ); } + + /** + * @return The center point (in value coordinates) of the + * coordinate plane, that is used for zoom operations. + */ + virtual QPointF zoomCenter() const { return QPointF(0.0, 0.0); } + + /** + * Set the point (in value coordinates) to be used as the + * center point in zoom operations. + * @param center The point to use. + */ + virtual void setZoomCenter( const QPointF& center ) { Q_UNUSED( center ); } + + /** + * Set the grid attributes to be used by this coordinate plane. + * To disable grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->globalGridAttributes(); + * ga.setGlobalGridVisible( false ); + * plane->setGlobalGridAttributes( ga ); + * \endcode + * \sa globalGridAttributes + * \sa CartesianCoordinatePlane::setGridAttributes + */ + void setGlobalGridAttributes( const GridAttributes & ); + + /** + * @return The grid attributes used by this coordinate plane. + * \sa setGlobalGridAttributes + * \sa CartesianCoordinatePlane::gridAttributes + */ + GridAttributes globalGridAttributes() const; + + /** + * Returns the dimensions used for drawing the grid lines. + * + * Returned data is the result of (cached) grid calculations, + * so - if you need that information for your own tasks - make sure to + * call again this function after every data modification that has changed + * the data range, since grid calculation is based upon the data range, + * thus the grid start/end might have changed if the data was changed. + * + * @note Returned list will contain different numbers of DataDimension, + * depending on the kind of coordinate plane used. + * For CartesianCoordinatePlane two DataDimension are returned: the first + * representing grid lines in X direction (matching the Abscissa axes) + * and the second indicating vertical grid lines (or Ordinate axes, resp.). + * + * @return The dimensions used for drawing the grid lines. + * @sa DataDimension + */ + DataDimensionsList gridDimensionsList(); + + /** + * Set another coordinate plane to be used as the reference plane + * for this one. + * @param plane The coordinate plane to be used the reference plane + * for this one. + * @see referenceCoordinatePlane + */ + void setReferenceCoordinatePlane( AbstractCoordinatePlane * plane ); + + /** + * There are two ways, in which planes can be caused to interact, in + * where they are put layouting wise: The first is the reference plane. If + * such a reference plane is set, on a plane, it will use the same cell in the + * layout as that one. In addition to this, planes can share an axis. In that case + * they will be laid out in relation to each other as suggested by the position + * of the axis. If, for example Plane1 and Plane2 share an axis at position Left, + * that will result in the layout: Axis Plane1 Plane 2, vertically. If Plane1 + * also happens to be Plane2's reference plane, both planes are drawn over each + * other. The reference plane concept allows two planes to share the same space + * even if neither has any axis, and in case there are shared axis, it is used + * to decided, whether the planes should be painted on top of each other or + * laid out vertically or horizontally next to each other. + * @return The reference coordinate plane associated with this one. + */ + AbstractCoordinatePlane * referenceCoordinatePlane() const; + + /** + * @return Whether this plane should have spacers in the corners + * formed by the presence of axes. + */ + bool isCornerSpacersEnabled() const; + + /** + * Enables or disables the use of spacers in the plane corners. + */ + void setCornerSpacersEnabled( bool enable ); + + virtual AbstractCoordinatePlane* sharedAxisMasterPlane( QPainter* p = 0 ); // KDChart 3: const method? + + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem + * + * \note Do not call this function directly, unless you know + * exactly what you are doing. Geometry management is done + * by KD Chart's internal layouting measures. + */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual void mousePressEvent( QMouseEvent* event ); + virtual void mouseDoubleClickEvent( QMouseEvent* event ); + virtual void mouseMoveEvent( QMouseEvent* event ); + virtual void mouseReleaseEvent( QMouseEvent* event ); + + /** + * Called internally by KDChart::Chart + */ + void setParent( Chart* parent ); + Chart* parent(); + const Chart* parent() const; + + /** + * Tests, if a point is visible on the coordinate plane. + * + * \note Before calling this function the point must have been translated into coordinate plane space. + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const bool isVisiblePoint( const QPointF& point ) const; +#else + bool isVisiblePoint( const QPointF& point ) const; +#endif + + public Q_SLOTS: + /** + * Calling update() on the plane triggers the global KDChart::Chart::update() + */ + void update(); + /** + * Calling relayout() on the plane triggers the global KDChart::Chart::slotRelayout() + */ + void relayout(); + /** + * Calling layoutPlanes() on the plane triggers the global KDChart::Chart::slotLayoutPlanes() + */ + void layoutPlanes(); + /** + * Used by the chart to clear the cached grid data. + */ + void setGridNeedsRecalculate(); + + Q_SIGNALS: + /** Emitted when this coordinate plane is destroyed. */ + void destroyedCoordinatePlane( AbstractCoordinatePlane* ); + + /** Emitted when plane needs to update its drawings. */ + void needUpdate(); + + /** Emitted when plane needs to trigger the Chart's layouting. */ + void needRelayout(); + + /** Emitted when plane needs to trigger the Chart's layouting of the coord. planes. */ + void needLayoutPlanes(); + + /** Emitted upon change of a property of the Coordinate Plane or any of its components. */ + void propertiesChanged(); + + void boundariesChanged(); + + /** Emitted after the geometry of the Coordinate Plane has been changed. + * and control has returned to the event loop. + * + * Parameters are the the old geometry, the new geometry. + */ + void geometryChanged( QRect, QRect ); + + private: + Q_SIGNALS: + // Emitted from inside the setGeometry() + // This is connected via QueuedConnection to the geometryChanged() Signal + // that users can connect to safely then. + void internal_geometryChanged( QRect, QRect ); + /** Emitted upon change of the view coordinate system */ + void viewportCoordinateSystemChanged(); + + protected: + virtual DataDimensionsList getDataDimensionsList() const = 0; + + //KDCHART_DECLARE_PRIVATE_DERIVED( AbstractCoordinatePlane ) + }; + + /** + * \brief Helper class for one dimension of data, e.g. for the rows in a data model, + * or for the labels of an axis, or for the vertical lines in a grid. + * + * isCalculated specifies whether this dimension's values are calculated or counted. + * (counted == "Item 1", "Item 2", "Item 3" ...) + * + * sequence is the GranularitySequence, as specified at for the respective + * coordinate plane. + * + * Step width is an optional parameter, to be omitted (or set to Zero, resp.) + * if the step width is unknown. + * + * The default c'tor just gets you counted values from 1..10, using step width 1, + * used by the CartesianGrid, when showing an empty plane without any diagrams. + */ + class DataDimension{ + public: + DataDimension() + : start( 1.0 ) + , end( 10.0 ) + , isCalculated( false ) + , calcMode( AbstractCoordinatePlane::Linear ) + , sequence( KDChartEnums::GranularitySequence_10_20 ) + , stepWidth( 1.0 ) + , subStepWidth( 0.0 ) + {} + DataDimension( qreal start_, + qreal end_, + bool isCalculated_, + AbstractCoordinatePlane::AxesCalcMode calcMode_, + KDChartEnums::GranularitySequence sequence_, + qreal stepWidth_=0.0, + qreal subStepWidth_=0.0 ) + : start( start_ ) + , end( end_ ) + , isCalculated( isCalculated_ ) + , calcMode( calcMode_ ) + , sequence( sequence_ ) + , stepWidth( stepWidth_ ) + , subStepWidth( subStepWidth_ ) + {} + /** + * Returns the size of the distance, + * equivalent to the width() (or height(), resp.) of a QRectF. + * + * Note that this value can be negative, e.g. indicating axis labels + * going in reversed direction. + */ + qreal distance() const + { + return end-start; + } + + bool operator==( const DataDimension& r ) const + { + return + (start == r.start) && + (end == r.end) && + (sequence == r.sequence) && + (isCalculated == r.isCalculated) && + (calcMode == r.calcMode) && + (stepWidth == r.stepWidth) && + (subStepWidth == r.subStepWidth); + } + + bool operator!=( const DataDimension& other ) const + { return !operator==( other ); } + + + qreal start; + qreal end; + bool isCalculated; + AbstractCoordinatePlane::AxesCalcMode calcMode; + KDChartEnums::GranularitySequence sequence; + qreal stepWidth; + qreal subStepWidth; + }; + +#if !defined(QT_NO_DEBUG_STREAM) + QDebug operator<<( QDebug stream, const DataDimension& r ); +#endif + +} +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane_p.h new file mode 100644 index 00000000..0d0dfcac --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractCoordinatePlane_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRCOORDINATEPLANE_P_H +#define KDCHARTABSTRCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractArea_p.h" +#include +#include +#include +#include + +#include + +#include + +QT_BEGIN_NAMESPACE +class QRubberBand; +QT_END_NAMESPACE + +namespace KDChart { + + +/** + * \internal + */ +class AbstractCoordinatePlane::Private : public AbstractArea::Private +{ + friend class AbstractCoordinatePlane; +protected: + explicit Private(); + virtual ~Private() { + delete grid; + }; + + virtual void initialize() + { + qDebug("ERROR: Calling AbstractCoordinatePlane::Private::initialize()"); + // can not call the base class: grid = new AbstractGrid(); + } + + virtual bool isVisiblePoint( + const AbstractCoordinatePlane * plane, + const QPointF& point ) const + { + Q_UNUSED( plane ); + Q_UNUSED( point ); + return true; + } + + KDChart::Chart* parent; + AbstractGrid* grid; + QRect geometry; + AbstractDiagramList diagrams; + GridAttributes gridAttributes; + AbstractCoordinatePlane *referenceCoordinatePlane; + + bool enableCornerSpacers; + + bool enableRubberBandZooming; + QRubberBand* rubberBand; + QPoint rubberBandOrigin; + + QStack< ZoomParameters > rubberBandZoomConfigHistory; +}; + + +inline AbstractCoordinatePlane::AbstractCoordinatePlane( Private * p, KDChart::Chart* parent ) + : AbstractArea( p ) +{ + if ( p ) + p->parent = parent; + init(); +} +inline AbstractCoordinatePlane::Private * AbstractCoordinatePlane::d_func() +{ + return static_cast( AbstractArea::d_func() ); +} +inline const AbstractCoordinatePlane::Private * AbstractCoordinatePlane::d_func() const +{ + return static_cast( AbstractArea::d_func() ); +} + + +} + +#endif /* KDCHARTABSTRACTCOORDINATEPLANE_P_H*/ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.cpp new file mode 100644 index 00000000..48ea20e1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.cpp @@ -0,0 +1,1015 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractDiagram_p.h" + +#include +#include +#include +#include +#include + +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartChart.h" +#include "KDChartDataValueAttributes.h" +#include "KDChartTextAttributes.h" +#include "KDChartMarkerAttributes.h" +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartThreeDLineAttributes.h" +#include "KDChartPainterSaver_p.h" + +#include + +#include + +using namespace KDChart; + +#define d d_func() + +AbstractDiagram::AbstractDiagram ( QWidget* parent, AbstractCoordinatePlane* plane ) + : QAbstractItemView ( parent ), _d( new Private() ) +{ + _d->init( plane ); + init(); +} + +AbstractDiagram::~AbstractDiagram() +{ + emit aboutToBeDestroyed(); + delete _d; +} + +void AbstractDiagram::init() +{ + _d->diagram = this; + d->reverseMapper.setDiagram( this ); +} + + +bool AbstractDiagram::compare( const AbstractDiagram* other ) const +{ + if ( other == this ) return true; + if ( !other ) { + return false; + } + return // compare QAbstractScrollArea properties + (horizontalScrollBarPolicy() == other->horizontalScrollBarPolicy()) && + (verticalScrollBarPolicy() == other->verticalScrollBarPolicy()) && + // compare QFrame properties + (frameShadow() == other->frameShadow()) && + (frameShape() == other->frameShape()) && +// frameWidth is a read-only property defined by the style, it should not be in here: + // (frameWidth() == other->frameWidth()) && + (lineWidth() == other->lineWidth()) && + (midLineWidth() == other->midLineWidth()) && + // compare QAbstractItemView properties + (alternatingRowColors() == other->alternatingRowColors()) && + (hasAutoScroll() == other->hasAutoScroll()) && +#if QT_VERSION > 0x040199 + (dragDropMode() == other->dragDropMode()) && + (dragDropOverwriteMode() == other->dragDropOverwriteMode()) && + (horizontalScrollMode() == other->horizontalScrollMode ()) && + (verticalScrollMode() == other->verticalScrollMode()) && +#endif + (dragEnabled() == other->dragEnabled()) && + (editTriggers() == other->editTriggers()) && + (iconSize() == other->iconSize()) && + (selectionBehavior() == other->selectionBehavior()) && + (selectionMode() == other->selectionMode()) && + (showDropIndicator() == other->showDropIndicator()) && + (tabKeyNavigation() == other->tabKeyNavigation()) && + (textElideMode() == other->textElideMode()) && + // compare all of the properties stored in the attributes model + attributesModel()->compare( other->attributesModel() ) && + // compare own properties + (rootIndex().column() == other->rootIndex().column()) && + (rootIndex().row() == other->rootIndex().row()) && + (allowOverlappingDataValueTexts() == other->allowOverlappingDataValueTexts()) && + (antiAliasing() == other->antiAliasing()) && + (percentMode() == other->percentMode()) && + (datasetDimension() == other->datasetDimension()); +} + +AbstractCoordinatePlane* AbstractDiagram::coordinatePlane() const +{ + return d->plane; +} + +const QPair AbstractDiagram::dataBoundaries () const +{ + if ( d->databoundariesDirty ) { + d->databoundaries = calculateDataBoundaries (); + d->databoundariesDirty = false; + } + return d->databoundaries; +} + +void AbstractDiagram::setDataBoundariesDirty() const +{ + d->databoundariesDirty = true; + update(); +} + +void AbstractDiagram::setModel( QAbstractItemModel * newModel ) +{ + if ( newModel == model() ) { + return; + } + + AttributesModel* amodel = new PrivateAttributesModel( newModel, this ); + amodel->initFrom( d->attributesModel ); + d->setAttributesModel(amodel); + + QAbstractItemView::setModel( newModel ); + + scheduleDelayedItemsLayout(); + setDataBoundariesDirty(); + emit modelsChanged(); +} + +void AbstractDiagram::setSelectionModel( QItemSelectionModel* newSelectionModel ) +{ + if ( selectionModel() ) + { + disconnect( selectionModel(), SIGNAL( currentChanged( QModelIndex, QModelIndex ) ), this, SIGNAL( modelsChanged() ) ); + disconnect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SIGNAL( modelsChanged() ) ); + } + QAbstractItemView::setSelectionModel( newSelectionModel ); + if ( selectionModel() ) + { + connect( selectionModel(), SIGNAL( currentChanged( QModelIndex, QModelIndex ) ), this, SIGNAL( modelsChanged() ) ); + connect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SIGNAL( modelsChanged() ) ); + } + emit modelsChanged(); +} + +/*! Sets an external AttributesModel on this diagram. By default, a diagram has it's + own internal set of attributes, but an external one can be set. This can be used to + share attributes between several diagrams. The diagram does not take ownership of the + attributesmodel. + + @param amodel The AttributesModel to use for this diagram. +*/ +void AbstractDiagram::setAttributesModel( AttributesModel* amodel ) +{ + if ( amodel->sourceModel() != model() ) { + qWarning("KDChart::AbstractDiagram::setAttributesModel() failed: " + "Trying to set an attributesmodel which works on a different " + "model than the diagram."); + return; + } + if ( qobject_cast(amodel) ) { + qWarning("KDChart::AbstractDiagram::setAttributesModel() failed: " + "Trying to set an attributesmodel that is private to another diagram."); + return; + } + + d->setAttributesModel( amodel ); + scheduleDelayedItemsLayout(); + setDataBoundariesDirty(); + emit modelsChanged(); +} + +bool AbstractDiagram::usesExternalAttributesModel() const +{ + return d->usesExternalAttributesModel(); +} + +AttributesModel* AbstractDiagram::attributesModel() const +{ + return d->attributesModel; +} + +QModelIndex AbstractDiagram::conditionallyMapFromSource( const QModelIndex & index ) const +{ + Q_ASSERT( !index.isValid() || index.model() == attributesModel() || index.model() == attributesModel()->sourceModel() ); + return index.model() == attributesModel() ? index : attributesModel()->mapFromSource( index ); +} + +/*! \reimpl */ +void AbstractDiagram::setRootIndex ( const QModelIndex& idx ) +{ + QAbstractItemView::setRootIndex( idx ); + setAttributesModelRootIndex( d->attributesModel->mapFromSource( idx ) ); +} + +/*! \internal */ +void AbstractDiagram::setAttributesModelRootIndex( const QModelIndex& idx ) +{ + d->attributesModelRootIndex = idx; + setDataBoundariesDirty(); + scheduleDelayedItemsLayout(); +} + +/*! returns a QModelIndex pointing into the AttributesModel that corresponds to the + root index of the diagram. */ +QModelIndex AbstractDiagram::attributesModelRootIndex() const +{ + if ( !d->attributesModelRootIndex.isValid() ) + d->attributesModelRootIndex = d->attributesModel->mapFromSource( rootIndex() ); + return d->attributesModelRootIndex; +} + +void AbstractDiagram::setCoordinatePlane( AbstractCoordinatePlane* parent ) +{ + d->plane = parent; +} + +void AbstractDiagram::doItemsLayout() +{ + if ( d->plane ) { + d->plane->layoutDiagrams(); + update(); + } + QAbstractItemView::doItemsLayout(); +} + +#if QT_VERSION < 0x050000 +void AbstractDiagram::dataChanged( const QModelIndex &topLeft, + const QModelIndex &bottomRight ) +#else +void AbstractDiagram::dataChanged( const QModelIndex &topLeft, + const QModelIndex &bottomRight, + const QVector & ) +#endif +{ + Q_UNUSED( topLeft ); + Q_UNUSED( bottomRight ); + // We are still too dumb to do intelligent updates... + setDataBoundariesDirty(); + scheduleDelayedItemsLayout(); +} + + +void AbstractDiagram::setHidden( const QModelIndex & index, bool hidden ) +{ + d->attributesModel->setData( + conditionallyMapFromSource( index ), + qVariantFromValue( hidden ), + DataHiddenRole ); + emit dataHidden(); +} + +void AbstractDiagram::setHidden( int dataset, bool hidden ) +{ + d->setDatasetAttrs( dataset, qVariantFromValue( hidden ), DataHiddenRole ); + emit dataHidden(); +} + +void AbstractDiagram::setHidden( bool hidden ) +{ + d->attributesModel->setModelData( qVariantFromValue( hidden ), DataHiddenRole ); + emit dataHidden(); +} + +bool AbstractDiagram::isHidden() const +{ + return attributesModel()->modelData( DataHiddenRole ).value< bool >(); +} + +bool AbstractDiagram::isHidden( int dataset ) const +{ + const QVariant boolFlag( d->datasetAttrs( dataset, DataHiddenRole ) ); + if ( boolFlag.isValid() ) + return boolFlag.value< bool >(); + return isHidden(); +} + +bool AbstractDiagram::isHidden( const QModelIndex & index ) const +{ + const QVariant boolFlag( attributesModel()->data( conditionallyMapFromSource( index ), + DataHiddenRole ) ); + if ( boolFlag.isValid() ) { + return boolFlag.value< bool >(); + } + int dataset = index.column() / d->datasetDimension; + return isHidden( dataset ); +} + + +void AbstractDiagram::setDataValueAttributes( const QModelIndex & index, + const DataValueAttributes & a ) +{ + d->attributesModel->setData( conditionallyMapFromSource( index ), qVariantFromValue( a ), + DataValueLabelAttributesRole ); + emit propertiesChanged(); +} + + +void AbstractDiagram::setDataValueAttributes( int dataset, const DataValueAttributes & a ) +{ + d->setDatasetAttrs( dataset, qVariantFromValue( a ), DataValueLabelAttributesRole ); + emit propertiesChanged(); +} + +DataValueAttributes AbstractDiagram::dataValueAttributes() const +{ + return attributesModel()->modelData( KDChart::DataValueLabelAttributesRole ).value< DataValueAttributes >(); +} + +DataValueAttributes AbstractDiagram::dataValueAttributes( int dataset ) const +{ + /* + The following did not work! + (khz, 2008-01-25) + If there was some attrs specified for the 0-th cells of a dataset, + then this logic would return the cell's settings instead of the header settings: + + return qVariantValue( + attributesModel()->data( attributesModel()->mapFromSource(columnToIndex( column )), + KDChart::DataValueLabelAttributesRole ) ); + */ + + const QVariant headerAttrs( + d->datasetAttrs( dataset, KDChart::DataValueLabelAttributesRole ) ); + if ( headerAttrs.isValid() ) + return headerAttrs.value< DataValueAttributes >(); + return dataValueAttributes(); +} + +DataValueAttributes AbstractDiagram::dataValueAttributes( const QModelIndex & index ) const +{ + return attributesModel()->data( + conditionallyMapFromSource( index ), + KDChart::DataValueLabelAttributesRole ).value< DataValueAttributes >(); +} + +void AbstractDiagram::setDataValueAttributes( const DataValueAttributes & a ) +{ + d->attributesModel->setModelData( qVariantFromValue( a ), DataValueLabelAttributesRole ); + emit propertiesChanged(); +} + +void AbstractDiagram::setAllowOverlappingDataValueTexts( bool allow ) +{ + DataValueAttributes attrs = dataValueAttributes(); + attrs.setShowOverlappingDataLabels( allow ); + setDataValueAttributes( attrs ); + d->allowOverlappingDataValueTexts = allow; + emit propertiesChanged(); +} + +bool AbstractDiagram::allowOverlappingDataValueTexts() const +{ + return d->allowOverlappingDataValueTexts; +} + +void AbstractDiagram::setAntiAliasing( bool enabled ) +{ + d->antiAliasing = enabled; + emit propertiesChanged(); +} + +bool AbstractDiagram::antiAliasing() const +{ + return d->antiAliasing; +} + +void AbstractDiagram::setPercentMode ( bool percent ) +{ + d->percent = percent; + emit propertiesChanged(); +} + +bool AbstractDiagram::percentMode() const +{ + return d->percent; +} + + +void AbstractDiagram::paintDataValueText( QPainter* painter, + const QModelIndex& index, + const QPointF& pos, + qreal value ) +{ + d->paintDataValueText( painter, index, pos, value ); +} + + +void AbstractDiagram::paintDataValueTexts( QPainter* painter ) +{ + if ( !checkInvariants() ) { + return; + } + + d->forgetAlreadyPaintedDataValues(); + const int rowCount = model()->rowCount( rootIndex() ); + const int columnCount = model()->columnCount( rootIndex() ); + for ( int column = 0; column < columnCount; column += datasetDimension() ) { + for ( int row = 0; row < rowCount; ++row ) { + QModelIndex index = model()->index( row, column, rootIndex() ); // checked + qreal x; + qreal y; + if ( datasetDimension() == 1 ) { + x = row; + y = index.data().toReal(); + } else { + x = index.data().toReal(); + y = model()->index( row, column + 1, rootIndex() ).data().toReal(); + } + paintDataValueText( painter, index, coordinatePlane()->translate( QPointF( x, y ) ), y ); + } + } +} + + +void AbstractDiagram::paintMarker( QPainter* painter, + const DataValueAttributes& a, + const QModelIndex& index, + const QPointF& pos ) +{ + if ( !checkInvariants() || !a.isVisible() ) return; + const MarkerAttributes ma = a.markerAttributes(); + if ( !ma.isVisible() ) return; + + const PainterSaver painterSaver( painter ); + // the size of the marker - unscaled + const QSizeF maSize( ma.markerSize().width() / painter->matrix().m11(), + ma.markerSize().height() / painter->matrix().m22() ); + QBrush indexBrush( brush( index ) ); + QPen indexPen( ma.pen() ); + if ( ma.markerColor().isValid() ) + indexBrush.setColor( ma.markerColor() ); + + paintMarker( painter, ma, indexBrush, indexPen, pos, maSize ); + + // workaround: BC cannot be changed, otherwise we would pass the + // index down to next-lower paintMarker function. So far, we + // basically save a circle of radius maSize at pos in the + // reverseMapper. This means that ^^^ this version of paintMarker + // needs to be called to reverse-map the marker. + d->reverseMapper.addCircle( index.row(), index.column(), pos, 2 * maSize ); +} + +void AbstractDiagram::paintMarker( QPainter* painter, + const QModelIndex& index, + const QPointF& pos ) +{ + if ( !checkInvariants() ) return; + paintMarker( painter, dataValueAttributes( index ), index, pos ); +} + +void AbstractDiagram::paintMarker( QPainter* painter, + const MarkerAttributes& markerAttributes, + const QBrush& brush, + const QPen& pen, + const QPointF& pos, + const QSizeF& maSize ) +{ + const QPen oldPen( painter->pen() ); + // Pen is used to paint 4Pixels - 1 Pixel - Ring and FastCross types. + // make sure to use the brush color - see above in those cases. + const bool isFourPixels = (markerAttributes.markerStyle() == MarkerAttributes::Marker4Pixels); + if ( isFourPixels || (markerAttributes.markerStyle() == MarkerAttributes::Marker1Pixel) ) { + // for high-performance point charts with tiny point markers: + painter->setPen( PrintingParameters::scalePen( QPen( brush.color().light() ) ) ); + if ( isFourPixels ) { + const qreal x = pos.x(); + const qreal y = pos.y(); + painter->drawLine( QPointF(x-1.0,y-1.0), + QPointF(x+1.0,y-1.0) ); + painter->drawLine( QPointF(x-1.0,y), + QPointF(x+1.0,y) ); + painter->drawLine( QPointF(x-1.0,y+1.0), + QPointF(x+1.0,y+1.0) ); + } + painter->drawPoint( pos ); + } else { + const PainterSaver painterSaver( painter ); + QPen painterPen( pen ); + painter->setPen( PrintingParameters::scalePen( painterPen ) ); + painter->setBrush( brush ); + painter->setRenderHint ( QPainter::Antialiasing ); + painter->translate( pos ); + switch ( markerAttributes.markerStyle() ) { + case MarkerAttributes::MarkerCircle: + { + if ( markerAttributes.threeD() ) { + QRadialGradient grad; + grad.setCoordinateMode( QGradient::ObjectBoundingMode ); + QColor drawColor = brush.color(); + grad.setCenter( 0.5, 0.5 ); + grad.setRadius( 1.0 ); + grad.setFocalPoint( 0.35, 0.35 ); + grad.setColorAt( 0.00, drawColor.lighter( 150 ) ); + grad.setColorAt( 0.20, drawColor ); + grad.setColorAt( 0.50, drawColor.darker( 150 ) ); + grad.setColorAt( 0.75, drawColor.darker( 200 ) ); + grad.setColorAt( 0.95, drawColor.darker( 250 ) ); + grad.setColorAt( 1.00, drawColor.darker( 200 ) ); + QBrush newBrush( grad ); + newBrush.setMatrix( brush.matrix() ); + painter->setBrush( newBrush ); + } + painter->drawEllipse( QRectF( 0 - maSize.height()/2, 0 - maSize.width()/2, + maSize.height(), maSize.width()) ); + } + break; + case MarkerAttributes::MarkerSquare: + { + QRectF rect( 0 - maSize.width()/2, 0 - maSize.height()/2, + maSize.width(), maSize.height() ); + painter->drawRect( rect ); + break; + } + case MarkerAttributes::MarkerDiamond: + { + QVector diamondPoints; + QPointF top, left, bottom, right; + top = QPointF( 0, 0 - maSize.height()/2 ); + left = QPointF( 0 - maSize.width()/2, 0 ); + bottom = QPointF( 0, maSize.height()/2 ); + right = QPointF( maSize.width()/2, 0 ); + diamondPoints << top << left << bottom << right; + painter->drawPolygon( diamondPoints ); + break; + } + // both handled on top of the method: + case MarkerAttributes::Marker1Pixel: + case MarkerAttributes::Marker4Pixels: + break; + case MarkerAttributes::MarkerRing: + { + painter->setBrush( Qt::NoBrush ); + painter->setPen( PrintingParameters::scalePen( QPen( brush.color() ) ) ); + painter->drawEllipse( QRectF( 0 - maSize.height()/2, 0 - maSize.width()/2, + maSize.height(), maSize.width()) ); + break; + } + case MarkerAttributes::MarkerCross: + { + // Note: Markers can have outline, + // so just drawing two rects is NOT the solution here! + const qreal w02 = maSize.width() * 0.2; + const qreal w05 = maSize.width() * 0.5; + const qreal h02 = maSize.height()* 0.2; + const qreal h05 = maSize.height()* 0.5; + QVector crossPoints; + QPointF p[12]; + p[ 0] = QPointF( -w02, -h05 ); + p[ 1] = QPointF( w02, -h05 ); + p[ 2] = QPointF( w02, -h02 ); + p[ 3] = QPointF( w05, -h02 ); + p[ 4] = QPointF( w05, h02 ); + p[ 5] = QPointF( w02, h02 ); + p[ 6] = QPointF( w02, h05 ); + p[ 7] = QPointF( -w02, h05 ); + p[ 8] = QPointF( -w02, h02 ); + p[ 9] = QPointF( -w05, h02 ); + p[10] = QPointF( -w05, -h02 ); + p[11] = QPointF( -w02, -h02 ); + for ( int i=0; i<12; ++i ) + crossPoints << p[i]; + crossPoints << p[0]; + painter->drawPolygon( crossPoints ); + break; + } + case MarkerAttributes::MarkerFastCross: + { + QPointF left, right, top, bottom; + left = QPointF( -maSize.width()/2, 0 ); + right = QPointF( maSize.width()/2, 0 ); + top = QPointF( 0, -maSize.height()/2 ); + bottom= QPointF( 0, maSize.height()/2 ); + painter->setPen( PrintingParameters::scalePen( QPen( brush.color() ) ) ); + painter->drawLine( left, right ); + painter->drawLine( top, bottom ); + break; + } + case MarkerAttributes::NoMarker: + break; + case MarkerAttributes::PainterPathMarker: + { + QPainterPath path = markerAttributes.customMarkerPath(); + const QRectF pathBoundingRect = path.boundingRect(); + const qreal xScaling = maSize.height() / pathBoundingRect.height(); + const qreal yScaling = maSize.width() / pathBoundingRect.width(); + const qreal scaling = qMin( xScaling, yScaling ); + painter->scale( scaling, scaling ); + painter->setPen( PrintingParameters::scalePen( QPen( brush.color() ) ) ); + painter->drawPath(path); + break; + } + default: + Q_ASSERT_X ( false, "paintMarkers()", + "Type item does not match a defined Marker Type." ); + } + } + painter->setPen( oldPen ); +} + +void AbstractDiagram::paintMarkers( QPainter* painter ) +{ + if ( !checkInvariants() ) { + return; + } + + const int rowCount = model()->rowCount( rootIndex() ); + const int columnCount = model()->columnCount( rootIndex() ); + for ( int column = 0; column < columnCount; column += datasetDimension() ) { + for ( int row = 0; row < rowCount; ++row ) { + QModelIndex index = model()->index( row, column, rootIndex() ); // checked + qreal x; + qreal y; + if ( datasetDimension() == 1 ) { + x = row; + y = index.data().toReal(); + } else { + x = index.data().toReal(); + y = model()->index( row, column + 1, rootIndex() ).data().toReal(); + } + paintMarker( painter, index, coordinatePlane()->translate( QPointF( x, y ) ) ); + } + } +} + + +void AbstractDiagram::setPen( const QModelIndex& index, const QPen& pen ) +{ + attributesModel()->setData( + conditionallyMapFromSource( index ), + qVariantFromValue( pen ), DatasetPenRole ); + emit propertiesChanged(); +} + +void AbstractDiagram::setPen( const QPen& pen ) +{ + attributesModel()->setModelData( + qVariantFromValue( pen ), DatasetPenRole ); + emit propertiesChanged(); +} + +void AbstractDiagram::setPen( int dataset, const QPen& pen ) +{ + d->setDatasetAttrs( dataset, qVariantFromValue( pen ), DatasetPenRole ); + emit propertiesChanged(); +} + +QPen AbstractDiagram::pen() const +{ + return attributesModel()->data( DatasetPenRole ).value< QPen >(); +} + +QPen AbstractDiagram::pen( int dataset ) const +{ + const QVariant penSettings( d->datasetAttrs( dataset, DatasetPenRole ) ); + if ( penSettings.isValid() ) + return penSettings.value< QPen >(); + return pen(); +} + +QPen AbstractDiagram::pen( const QModelIndex& index ) const +{ + return attributesModel()->data( + conditionallyMapFromSource( index ), + DatasetPenRole ).value< QPen >(); +} + +void AbstractDiagram::setBrush( const QModelIndex& index, const QBrush& brush ) +{ + attributesModel()->setData( + conditionallyMapFromSource( index ), + qVariantFromValue( brush ), DatasetBrushRole ); + emit propertiesChanged(); +} + +void AbstractDiagram::setBrush( const QBrush& brush ) +{ + attributesModel()->setModelData( + qVariantFromValue( brush ), DatasetBrushRole ); + emit propertiesChanged(); +} + +void AbstractDiagram::setBrush( int dataset, const QBrush& brush ) +{ + d->setDatasetAttrs( dataset, qVariantFromValue( brush ), DatasetBrushRole ); + emit propertiesChanged(); +} + +QBrush AbstractDiagram::brush() const +{ + return attributesModel()->data( DatasetBrushRole ).value< QBrush >(); +} + +QBrush AbstractDiagram::brush( int dataset ) const +{ + const QVariant brushSettings( d->datasetAttrs( dataset, DatasetBrushRole ) ); + if ( brushSettings.isValid() ) + return brushSettings.value< QBrush >(); + return brush(); +} + +QBrush AbstractDiagram::brush( const QModelIndex& index ) const +{ + return + attributesModel()->data( conditionallyMapFromSource( index ), DatasetBrushRole ).value< QBrush >(); +} + +/** + * Sets the unit prefix for one value + * @param prefix the prefix to be set + * @param column the value using that prefix + * @param orientation the orientantion of the axis to set + */ +void AbstractDiagram::setUnitPrefix( const QString& prefix, int column, Qt::Orientation orientation ) +{ + d->unitPrefixMap[ column ][ orientation ]= prefix; +} + +/** + * Sets the unit prefix for all values + * @param prefix the prefix to be set + * @param orientation the orientantion of the axis to set + */ +void AbstractDiagram::setUnitPrefix( const QString& prefix, Qt::Orientation orientation ) +{ + d->unitPrefix[ orientation ] = prefix; +} + +/** + * Sets the unit suffix for one value + * @param suffix the suffix to be set + * @param column the value using that suffix + * @param orientation the orientantion of the axis to set + */ +void AbstractDiagram::setUnitSuffix( const QString& suffix, int column, Qt::Orientation orientation ) +{ + d->unitSuffixMap[ column ][ orientation ]= suffix; +} + +/** + * Sets the unit suffix for all values + * @param suffix the suffix to be set + * @param orientation the orientantion of the axis to set + */ +void AbstractDiagram::setUnitSuffix( const QString& suffix, Qt::Orientation orientation ) +{ + d->unitSuffix[ orientation ] = suffix; +} + +/** + * Returns the unit prefix for a special value + * @param column the value which's prefix is requested + * @param orientation the orientation of the axis + * @param fallback if true, the global prefix is return when no specific one is set for that value + * @return the unit prefix + */ +QString AbstractDiagram::unitPrefix( int column, Qt::Orientation orientation, bool fallback ) const +{ + if ( !fallback || d->unitPrefixMap[ column ].contains( orientation ) ) + return d->unitPrefixMap[ column ][ orientation ]; + return d->unitPrefix[ orientation ]; +} + +/** Returns the global unit prefix + * @param orientation the orientation of the axis + * @return the unit prefix + */ +QString AbstractDiagram::unitPrefix( Qt::Orientation orientation ) const +{ + return d->unitPrefix[ orientation ]; +} + +/** + * Returns the unit suffix for a special value + * @param column the value which's suffix is requested + * @param orientation the orientation of the axis + * @param fallback if true, the global suffix is return when no specific one is set for that value + * @return the unit suffix + */ +QString AbstractDiagram::unitSuffix( int column, Qt::Orientation orientation, bool fallback ) const +{ + if ( !fallback || d->unitSuffixMap[ column ].contains( orientation ) ) + return d->unitSuffixMap[ column ][ orientation ]; + return d->unitSuffix[ orientation ]; +} + +/** Returns the global unit suffix + * @param orientation the orientation of the axis + * @return the unit siffix + */ +QString AbstractDiagram::unitSuffix( Qt::Orientation orientation ) const +{ + return d->unitSuffix[ orientation ]; +} + +// implement QAbstractItemView: +QRect AbstractDiagram::visualRect( const QModelIndex &index ) const +{ + return d->reverseMapper.boundingRect( index.row(), index.column() ).toRect(); +} + +void AbstractDiagram::scrollTo(const QModelIndex &, ScrollHint ) +{} + +// indexAt ... down below + +QModelIndex AbstractDiagram::moveCursor(CursorAction, Qt::KeyboardModifiers ) +{ return QModelIndex(); } + +int AbstractDiagram::horizontalOffset() const +{ return 0; } + +int AbstractDiagram::verticalOffset() const +{ return 0; } + +bool AbstractDiagram::isIndexHidden(const QModelIndex &) const +{ return true; } + +void AbstractDiagram::setSelection(const QRect& rect , QItemSelectionModel::SelectionFlags command ) +{ + const QModelIndexList indexes = d->indexesIn( rect ); + QItemSelection selection; + KDAB_FOREACH( const QModelIndex& index, indexes ) + { + selection.append( QItemSelectionRange( index ) ); + } + selectionModel()->select( selection, command ); +} + +QRegion AbstractDiagram::visualRegionForSelection(const QItemSelection &selection) const +{ + QPolygonF polygon; + KDAB_FOREACH( const QModelIndex& index, selection.indexes() ) + { + polygon << d->reverseMapper.polygon(index.row(), index.column()); + } + return polygon.isEmpty() ? QRegion() : QRegion( polygon.toPolygon() ); +} + +QRegion AbstractDiagram::visualRegion(const QModelIndex &index) const +{ + QPolygonF polygon = d->reverseMapper.polygon(index.row(), index.column()); + return polygon.isEmpty() ? QRegion() : QRegion( polygon.toPolygon() ); +} + +void KDChart::AbstractDiagram::useDefaultColors( ) +{ + d->attributesModel->setPaletteType( AttributesModel::PaletteTypeDefault ); +} + +void KDChart::AbstractDiagram::useSubduedColors( ) +{ + d->attributesModel->setPaletteType( AttributesModel::PaletteTypeSubdued ); +} + +void KDChart::AbstractDiagram::useRainbowColors( ) +{ + d->attributesModel->setPaletteType( AttributesModel::PaletteTypeRainbow ); +} + +QStringList AbstractDiagram::itemRowLabels() const +{ + QStringList ret; + if ( model() ) { + //qDebug() << "AbstractDiagram::itemRowLabels(): " << attributesModel()->rowCount(attributesModelRootIndex()) << "entries"; + const int rowCount = attributesModel()->rowCount(attributesModelRootIndex()); + for ( int i = 0; i < rowCount; ++i ) { + //qDebug() << "item row label: " << attributesModel()->headerData( i, Qt::Vertical, Qt::DisplayRole ).toString(); + ret << unitPrefix( i, Qt::Horizontal, true ) + + attributesModel()->headerData( i, Qt::Vertical, Qt::DisplayRole ).toString() + + unitSuffix( i, Qt::Horizontal, true ); + } + } + return ret; +} + +QStringList AbstractDiagram::datasetLabels() const +{ + QStringList ret; + if ( !model() ) { + return ret; + } + const int datasetCount = d->datasetCount(); + for ( int i = 0; i < datasetCount; ++i ) { + ret << d->datasetAttrs( i, Qt::DisplayRole ).toString(); + } + return ret; +} + +QList AbstractDiagram::datasetBrushes() const +{ + QList ret; + if ( !model() ) { + return ret; + } + const int datasetCount = d->datasetCount(); + for ( int i = 0; i < datasetCount; ++i ) { + ret << brush( i ); + } + return ret; +} + +QList AbstractDiagram::datasetPens() const +{ + QList ret; + if ( !model() ) { + return ret; + } + const int datasetCount = d->datasetCount(); + for ( int i = 0; i < datasetCount; ++i ) { + ret << pen( i ); + } + return ret; +} + +QList AbstractDiagram::datasetMarkers() const +{ + QList ret; + if ( !model() ) { + return ret; + } + const int datasetCount = d->datasetCount(); + for ( int i = 0; i < datasetCount; ++i ) { + ret << dataValueAttributes( i ).markerAttributes(); + } + return ret; +} + +bool AbstractDiagram::checkInvariants( bool justReturnTheStatus ) const +{ + if ( ! justReturnTheStatus ) { + Q_ASSERT_X ( model(), "AbstractDiagram::checkInvariants()", + "There is no usable model set, for the diagram." ); + + Q_ASSERT_X ( coordinatePlane(), "AbstractDiagram::checkInvariants()", + "There is no usable coordinate plane set, for the diagram." ); + } + return model() && coordinatePlane(); +} + +int AbstractDiagram::datasetDimension( ) const +{ + return d->datasetDimension; +} + +void AbstractDiagram::setDatasetDimension( int dimension ) +{ + Q_UNUSED( dimension ); + qDebug() << "Setting the dataset dimension using AbstractDiagram::setDatasetDimension is " + "obsolete. Use the specific diagram types instead."; +} + +void AbstractDiagram::setDatasetDimensionInternal( int dimension ) +{ + Q_ASSERT( dimension != 0 ); + if ( d->datasetDimension == dimension ) { + return; + } + d->datasetDimension = dimension; + d->attributesModel->setDatasetDimension( dimension ); + setDataBoundariesDirty(); + emit layoutChanged( this ); +} + +qreal AbstractDiagram::valueForCell( int row, int column ) const +{ + if ( !d->attributesModel->hasIndex( row, column, attributesModelRootIndex() ) ) { + qWarning() << "AbstractDiagram::valueForCell(): Requesting value for invalid index!"; + return std::numeric_limits::quiet_NaN(); + } + return d->attributesModel->data( + d->attributesModel->index( row, column, attributesModelRootIndex() ) ).toReal(); // checked +} + +void AbstractDiagram::update() const +{ + if ( d->plane ) { + d->plane->update(); + } +} + +QModelIndex AbstractDiagram::indexAt( const QPoint& point ) const +{ + return d->indexAt( point ); +} + +QModelIndexList AbstractDiagram::indexesAt( const QPoint& point ) const +{ + return d->indexesAt( point ); +} + +QModelIndexList AbstractDiagram::indexesIn( const QRect& rect ) const +{ + return d->indexesIn( rect ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.h new file mode 100644 index 00000000..82c220cb --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram.h @@ -0,0 +1,742 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTDIAGRAM_H +#define KDCHARTABSTRACTDIAGRAM_H + +#include +#include +#include + +#include "KDChartGlobal.h" +#include "KDChartMarkerAttributes.h" +#include "KDChartAttributesModel.h" + +namespace KDChart { + + class AbstractCoordinatePlane; + class AttributesModel; + class DataValueAttributes; + class PaintContext; + + /** + * @brief AbstractDiagram defines the interface for diagram classes + * + * AbstractDiagram is the base class for diagram classes ("chart types"). + * + * It defines the interface, that needs to be implemented for the diagram, + * to function within the KDChart framework. It extends Interview's + * QAbstractItemView. + */ + class KDCHART_EXPORT AbstractDiagram : public QAbstractItemView + { + Q_OBJECT + Q_DISABLE_COPY( AbstractDiagram ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AbstractDiagram ) + + friend class AbstractCoordinatePlane; + friend class CartesianCoordinatePlane; + friend class PolarCoordinatePlane; + + protected: + explicit inline AbstractDiagram( + Private *p, QWidget* parent, AbstractCoordinatePlane* plane ); + explicit AbstractDiagram ( + QWidget* parent = 0, AbstractCoordinatePlane* plane = 0 ); + public: + virtual ~AbstractDiagram(); + + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractDiagram* other ) const; + + + /** + * @brief Return the bottom left and top right data point, that the + * diagram will display (unless the grid adjusts these values). + * + * This method returns a cached result of calculations done by + * calculateDataBoundaries. + * Classes derived from AbstractDiagram must implement the + * calculateDataBoundaries function, to specify their own + * way of calculating the data boundaries. + * If derived classes want to force recalculation of the + * data boundaries, they can call setDataBoundariesDirty() + * + * Returned value is in diagram coordinates. + */ + const QPair dataBoundaries() const; + + // protected: // FIXME: why should that be private? (Mirko) + /** + * Draw the diagram contents to the rectangle and painter, that are + * passed in as part of the paint context. + * + * @param paintContext All information needed for painting. + */ + virtual void paint ( PaintContext* paintContext ) = 0; + + /** + * Called by the widget's sizeEvent. Adjust all internal structures, + * that are calculated, dependending on the size of the widget. + * + * @param area + */ + virtual void resize ( const QSizeF& area ) = 0; + + /** Associate a model with the diagram. */ + virtual void setModel ( QAbstractItemModel * model ); + + /** Associate a seleection model with the diagrom. */ + virtual void setSelectionModel( QItemSelectionModel* selectionModel ); + + /** + * Associate an AttributesModel with this diagram. Note that + * the diagram does _not_ take ownership of the AttributesModel. + * This should thus only be used with AttributesModels that + * have been explicitly created by the user, and are owned + * by her. Setting an AttributesModel that is internal to + * another diagram is an error. + * + * Correct: + * + * \code + * AttributesModel *am = new AttributesModel( model, 0 ); + * diagram1->setAttributesModel( am ); + * diagram2->setAttributesModel( am ); + * + * \endcode + * + * Wrong: + * + * \code + * + * diagram1->setAttributesModel( diagram2->attributesModel() ); + * + * \endcode + * + * @param model The AttributesModel to use for this diagram. + * @see AttributesModel, usesExternalAttributesModel + */ + virtual void setAttributesModel( AttributesModel* model ); + + /** + * Returns whether the diagram is using its own built-in attributes model + * or an attributes model that was set via setAttributesModel. + * + * @see setAttributesModel + */ + virtual bool usesExternalAttributesModel() const; + + /** + * Returns the AttributesModel, that is used by this diagram. + * By default each diagram owns its own AttributesModel, which + * should never be deleted. Only if a user-supplied AttributesModel + * has been set does the pointer returned here not belong to the + * diagram. + * + * @return The AttributesModel associated with the diagram. + * @see setAttributesModel + */ + virtual AttributesModel* attributesModel() const; + + /** Set the root index in the model, where the diagram starts + * referencing data for display. */ + virtual void setRootIndex ( const QModelIndex& idx ); + + /** \reimpl */ + virtual QRect visualRect(const QModelIndex &index) const; + /** \reimpl */ + virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); + /** \reimpl */ + virtual QModelIndex indexAt(const QPoint &point) const; + /** \reimpl */ + virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); + /** \reimpl */ + virtual int horizontalOffset() const; + /** \reimpl */ + virtual int verticalOffset() const; + /** \reimpl */ + virtual bool isIndexHidden(const QModelIndex &index) const; + /** \reimpl */ + virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); + /** \reimpl */ + virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; + virtual QRegion visualRegion(const QModelIndex &index) const; + /** \reimpl */ +#if QT_VERSION < 0x050000 + virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); +#else + virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); +#endif + /** \reimpl */ + virtual void doItemsLayout(); + + /** + * The coordinate plane associated with the diagram. This determines + * how coordinates in value space are mapped into pixel space. By default + * this is a CartesianCoordinatePlane. + * @return The coordinate plane associated with the diagram. + */ + AbstractCoordinatePlane* coordinatePlane() const; + + /** + * Set the coordinate plane associated with the diagram. This determines + * how coordinates in value space are mapped into pixel space. The chart + * takes ownership. + * @return The coordinate plane associated with the diagram. + */ + virtual void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + + /** + * Hide (or unhide, resp.) a data cell. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param index The datapoint to set the hidden status for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param hidden The hidden status to set. + */ + void setHidden( const QModelIndex & index, bool hidden ); + + /** + * Hide (or unhide, resp.) a dataset. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param dataset The dataset to set the hidden status for. + * @param hidden The hidden status to set. + */ + void setHidden( int dataset, bool hidden ); + + /** + * Hide (or unhide, resp.) all datapoints in the model. + * + * \note Hidden data are still taken into account by the coordinate plane, + * so neither the grid nor your axes' ranges will change, when you hide data. + * For totally removing data from KD Chart's view you can use another approach: + * e.g. you could define a proxy model on top of your data model, and register + * the proxy model calling setModel() instead of registering your real data model. + * + * @param hidden The hidden status to set. + */ + void setHidden( bool hidden ); + + /** + * Retrieve the hidden status specified globally. This will fall + * back automatically to the default settings ( = not hidden), if there + * are no specific settings. + * @return The global hidden status. + */ + bool isHidden() const; + + /** + * Retrieve the hidden status for the given dataset. This will fall + * back automatically to what was set at diagram level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the hidden status for. + * @return The hidden status for the given dataset. + */ + bool isHidden( int dataset ) const; + + /** + * Retrieve the hidden status for the given index. This will fall + * back automatically to what was set at dataset or diagram level, if there + * are no datapoint specific settings. + * @param index The datapoint to retrieve the hidden status for. + * @return The hidden status for the given index. + */ + bool isHidden( const QModelIndex & index ) const; + + + /** + * Set the DataValueAttributes for the given index. + * @param index The datapoint to set the attributes for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param a The attributes to set. + */ + void setDataValueAttributes( const QModelIndex & index, + const DataValueAttributes & a ); + + /** + * Set the DataValueAttributes for the given dataset. + * @param dataset The dataset to set the attributes for. + * @param a The attributes to set. + */ + void setDataValueAttributes( int dataset, const DataValueAttributes & a ); + + /** + * Set the DataValueAttributes for all datapoints in the model. + * @param a The attributes to set. + */ + void setDataValueAttributes( const DataValueAttributes & a ); + + /** + * Retrieve the DataValueAttributes specified globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The global DataValueAttributes. + */ + DataValueAttributes dataValueAttributes() const; + + /** + * Retrieve the DataValueAttributes for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the attributes for. + * @return The DataValueAttributes for the given dataset. + */ + DataValueAttributes dataValueAttributes( int dataset ) const; + + /** + * Retrieve the DataValueAttributes for the given index. This will fall + * back automatically to what was set at dataset or model level, if there + * are no datapoint specific settings. + * @param index The datapoint to retrieve the attributes for. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The DataValueAttributes for the given index. + */ + DataValueAttributes dataValueAttributes( const QModelIndex & index ) const; + + /** + * Set the pen to be used, for painting the datapoint at the given index. + * @param index The datapoint's index in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param pen The pen to use. + */ + void setPen( const QModelIndex& index, const QPen& pen ); + + /** + * Set the pen to be used, for painting the given dataset. + * @param dataset The dataset to set the pen for. + * @param pen The pen to use. + */ + void setPen( int dataset, const QPen& pen ); + + /** + * Set the pen to be used, for painting all datasets in the model. + * @param pen The pen to use. + */ + void setPen( const QPen& pen ); + + /** + * Retrieve the pen to be used for painting datapoints globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The pen to use for painting. + */ + QPen pen() const; + /** + * Retrieve the pen to be used for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the pen for. + * @return The pen to use for painting. + */ + QPen pen( int dataset ) const; + /** + * Retrieve the pen to be used, for painting the datapoint at the given + * index in the model. + * @param index The index of the datapoint in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The pen to use for painting. + */ + QPen pen( const QModelIndex& index ) const; + + /** + * Set the brush to be used, for painting the datapoint at the given index. + * @param index The datapoint's index in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @param brush The brush to use. + */ + void setBrush( const QModelIndex& index, const QBrush& brush); + + /** + * Set the brush to be used, for painting the given dataset. + * @param dataset The dataset to set the brush for. + * @param brush The brush to use. + */ + void setBrush( int dataset, const QBrush& brush ); + + /** + * Set the brush to be used, for painting all datasets in the model. + * @param brush The brush to use. + */ + void setBrush( const QBrush& brush); + + /** + * Retrieve the brush to be used for painting datapoints globally. This will fall + * back automatically to the default settings, if there + * are no specific settings. + * @return The brush to use for painting. + */ + QBrush brush() const; + /** + * Retrieve the brush to be used for the given dataset. This will fall + * back automatically to what was set at model level, if there + * are no dataset specific settings. + * @param dataset The dataset to retrieve the brush for. + * @return The brush to use for painting. + */ + QBrush brush( int dataset ) const; + /** + * Retrieve the brush to be used, for painting the datapoint at the given + * index in the model. + * @param index The index of the datapoint in the model. With a dataset dimension + * of two, this is the index of the key of each key/value pair. + * @return The brush to use for painting. + */ + QBrush brush( const QModelIndex& index ) const; + + /** + * Set the unit prefix to be used on axes for one specific column. + * @param prefix The prefix to be used. + * @param column The column which should be set. + * @param orientation The orientation of the axis to use. + */ + void setUnitPrefix( const QString& prefix, int column, Qt::Orientation orientation ); + /** + * Set the unit prefix to be used on axes for all columns. + * @param prefix The prefix to be used. + * @param orientation The orientation of the axis to use. + */ + void setUnitPrefix( const QString& prefix, Qt::Orientation orientation ); + + /** + * Set the unit prefix to be used on axes for one specific column. + * @param suffix The suffix to be used. + * @param column The column which should be set. + * @param orientation The orientation of the axis to use. + */ + void setUnitSuffix( const QString& suffix, int column, Qt::Orientation orientation ); + /** + * Set the unit prefix to be used on axes for all columns. + * @param suffix The suffix to be used. + * @param orientation The orientation of the axis to use. + */ + void setUnitSuffix( const QString& suffix, Qt::Orientation orientation ); + + /** + * Retrieves the axis unit prefix for a specific column. + * @param column The column whose prefix should be retrieved. + * @param orientation The orientation of the axis. + * @param fallback If true, the prefix for all columns is returned, when + * none is set for the selected column. + * @return The axis unit prefix. + */ + QString unitPrefix( int column, Qt::Orientation orientation, bool fallback = false ) const; + /** + * Retrieves the axis unit prefix. + * @param orientation The orientation of the axis. + * @return The axis unit prefix. + */ + QString unitPrefix( Qt::Orientation orientation ) const; + + /** + * Retrieves the axis unit suffix for a specific column. + * @param column The column whose prefix should be retrieved. + * @param orientation The orientation of the axis. + * @param fallback If true, the suffix for all columns is returned, when + * none is set for the selected column. + * @return The axis unit suffix. + */ + QString unitSuffix( int column, Qt::Orientation orientation, bool fallback = false ) const; + /** + * Retrieves the axis unit suffix. + * @param orientation The orientation of the axis. + * @return The axis unit suffix. + */ + QString unitSuffix( Qt::Orientation orientation ) const; + + /** + * Set whether data value labels are allowed to overlap. + * @param allow True means that overlapping labels are allowed. + */ + void setAllowOverlappingDataValueTexts( bool allow ); + + /** + * @return Whether data value labels are allowed to overlap. + */ + bool allowOverlappingDataValueTexts() const; + + /** + * Set whether anti-aliasing is to be used while rendering + * this diagram. + * @param enabled True means that AA is enabled. + */ + void setAntiAliasing( bool enabled ); + + /** + * @return Whether anti-aliasing is to be used for rendering + * this diagram. + */ + bool antiAliasing() const; + + /** + * Set the palette to be used, for painting datasets to the default + * palette. + * @see KDChart::Palette. + * FIXME: fold into one usePalette (KDChart::Palette&) method + */ + void useDefaultColors(); + + /** + * Set the palette to be used, for painting datasets to the rainbow + * palette. + * @see KDChart::Palette. + */ + void useRainbowColors(); + + /** + * Set the palette to be used, for painting datasets to the subdued + * palette. + * @see KDChart::Palette. + */ + void useSubduedColors(); + + /** + * The set of item row labels currently displayed, for use in Abscissa axes, etc. + * @return The set of item row labels currently displayed. + */ + QStringList itemRowLabels() const; + + /** + * The set of dataset labels currently displayed, for use in legends, etc. + * @return The set of dataset labels currently displayed. + */ + QStringList datasetLabels() const; + + /** + * The set of dataset brushes currently used, for use in legends, etc. + * + * @note Cell-level override brushes, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the brush, that is used for a single cell. + * + * @return The current set of dataset brushes. + */ + QList datasetBrushes() const; + + /** + * The set of dataset pens currently used, for use in legends, etc. + * + * @note Cell-level override pens, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the pens, that is used for a single cell. + * + * @return The current set of dataset pens. + */ + QList datasetPens() const; + + /** + * The set of dataset markers currently used, for use in legends, etc. + * + * @note Cell-level override markers, if set, take precedence over the + * dataset values, so you might need to check these too, in order to find + * the marker, that is shown for a single cell. + * + * @return The current set of dataset brushes. + */ + QList datasetMarkers() const; + + + /** + * \deprecated + * + * \brief Deprecated method that turns the percent mode of this diagram on or off. + * + * This method is deprecated. Use the setType() method of a supporting diagram implementation + * instead, e.g. BarDiagram::setType(). + * + * \see percentMode + */ + void setPercentMode( bool percent ); + + + /** + * \brief Returns whether this diagram is drawn in percent mode. + * + * If true, all data points in the same column of a diagram will + * be be drawn at the same X coordinate and stacked up so that the distance from the + * last data point (or the zero line) to a data point P is always the ratio of (Y-Value of P)/ + * (sum of all Y-Values in same column as P) relative to the diagrams height + * (or width, if abscissa and ordinate are swapped). + * + * Note that this property is not applicable to all diagram types. + */ + bool percentMode() const; + + virtual void paintMarker( QPainter* painter, + const MarkerAttributes& markerAttributes, + const QBrush& brush, const QPen&, + const QPointF& point, const QSizeF& size ); + + /** + * The dataset dimension of a diagram determines how many value dimensions + * it expects each datapoint to have. + * For each dimension and data series it will expect one column of values in the model. + * If the dimension is 1, automatic values will be used for X. + * + * For example, a diagram with the default dimension of 1 will have one column + * per data series (the Y values) and will use automatic values for X + * (1, 2, 3, ... n). + * If the dimension is 2, the diagram will use the first, (and the third, + * fifth, etc) columns as X values, and the second, (and the fourth, sixth, + * etc) column as Y values. + * @return The dataset dimension of the diagram. + */ + int datasetDimension() const; + + /** + * \deprecated + * + * Sets the dataset dimension of the diagram. Using this method + * is deprecated. Use the specific diagram types instead. + */ + void setDatasetDimension( int dimension ); + + protected: + void setDatasetDimensionInternal( int dimension ); + + public: + void update() const; + + void paintMarker( QPainter* painter, const DataValueAttributes& a, + const QModelIndex& index, + const QPointF& pos ); + void paintMarker( QPainter* painter, + const QModelIndex& index, + const QPointF& pos ); + void paintDataValueText( QPainter* painter, const QModelIndex& index, + const QPointF& pos, qreal value ); + + // reverse mapping: + /** This method is added alongside with indexAt from QAIM, + since in kdchart multiple indexes can be displayed at the same + spot. */ + QModelIndexList indexesAt( const QPoint& point ) const; + QModelIndexList indexesIn( const QRect& rect ) const; + + protected: + virtual bool checkInvariants( bool justReturnTheStatus=false ) const; + virtual const QPair calculateDataBoundaries() const = 0; + + protected Q_SLOTS: + void setDataBoundariesDirty() const; + + protected: + /** + * \deprecated + * This method is deprecated and provided for backward-compatibility only. + * Your own diagram classes should call + * d->paintDataValueTextsAndMarkers() instead + * which also is taking care for showing your cell-specific comments, if any, + */ + virtual void paintDataValueTexts( QPainter* painter ); + /** + * \deprecated + * This method is deprecated and provided for backward-compatibility only. + * Your own diagram classes should call + * d->paintDataValueTextsAndMarkers() instead + * which also is taking care for showing your cell-specific comments, if any, + */ + virtual void paintMarkers( QPainter* painter ); + void setAttributesModelRootIndex( const QModelIndex& ); + QModelIndex attributesModelRootIndex() const; + + /** + * Helper method, retrieving the data value (DisplayRole) for a given row and column + * @param row The row to query. + * @param column The column to query. + * @return The value of the display role at the given row and column as a qreal. + * @deprecated + */ + qreal valueForCell( int row, int column ) const; + + Q_SIGNALS: + /** Diagrams are supposed to emit this signal, when the layout of one + of their element changes. Layouts can change, for example, when + axes are added or removed, or when the configuration was changed + in a way that the axes or the diagram itself are displayed in a + different geometry. + Changes in the diagrams coordinate system also result + in the layoutChanged() signal being emitted. + */ + void layoutChanged( AbstractDiagram* ); + + /** + * This signal is emitted when this diagram is being destroyed, but before all the + * data, i.e. the attributes model, is invalidated. + */ + void aboutToBeDestroyed(); + + /** This signal is emitted when either the model or the AttributesModel is replaced. */ + void modelsChanged(); + + /** This signal is emitted just before the new attributes model is connected internally. + It gives you a chance to connect to its signals first or perform other setup work. */ + void attributesModelAboutToChange( AttributesModel* newModel, AttributesModel* oldModel ); + + /** This signal is emitted, when the model data is changed. */ + void modelDataChanged(); + + /** This signal is emitted, when the hidden status of at least one data cell was (un)set. */ + void dataHidden(); + + /** Emitted upon change of a property of the Diagram. */ + void propertiesChanged(); + + /** Emitted upon change of a data boundary */ + void boundariesChanged(); + /** Emitted upon change of the view coordinate system */ + void viewportCoordinateSystemChanged(); + + private: + QModelIndex conditionallyMapFromSource( const QModelIndex & sourceIndex ) const; + }; + + typedef QList AbstractDiagramList; + typedef QList ConstAbstractDiagramList; + + /** + * @brief Internally used class just adding a special constructor used by AbstractDiagram + */ + class PrivateAttributesModel : public AttributesModel { + Q_OBJECT + public: + explicit PrivateAttributesModel( QAbstractItemModel* model, QObject * parent = 0 ) + : AttributesModel(model,parent) {} + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.cpp new file mode 100644 index 00000000..05b48aa9 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.cpp @@ -0,0 +1,682 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractDiagram_p.h" + +#include "KDChartBarDiagram.h" +#include "KDChartFrameAttributes.h" +#include "KDChartPainterSaver_p.h" + +#include +#include +#include + +#include + + +using namespace KDChart; + +LabelPaintInfo::LabelPaintInfo() +{ +} + +LabelPaintInfo::LabelPaintInfo( const QModelIndex& _index, const DataValueAttributes& _attrs, + const QPainterPath& _labelArea, const QPointF& _markerPos, + bool _isValuePositive, const QString& _value ) + : index( _index ) + , attrs( _attrs ) + , labelArea( _labelArea ) + , markerPos( _markerPos ) + , isValuePositive( _isValuePositive ) + , value( _value ) +{ +} + +LabelPaintInfo::LabelPaintInfo( const LabelPaintInfo& other ) + : index( other.index ) + , attrs( other.attrs ) + , labelArea( other.labelArea ) + , markerPos( other.markerPos ) + , isValuePositive( other.isValuePositive ) + , value( other.value ) +{ +} + +AbstractDiagram::Private::Private() + : diagram( 0 ) + , doDumpPaintTime( false ) + , plane( 0 ) + , attributesModel( new PrivateAttributesModel(0,0) ) + , allowOverlappingDataValueTexts( false ) + , antiAliasing( true ) + , percent( false ) + , datasetDimension( 1 ) + , databoundariesDirty( true ) + , mCachedFontMetrics( QFontMetrics( qApp->font() ) ) +{ +} + +AbstractDiagram::Private::~Private() +{ + if ( attributesModel && qobject_cast(attributesModel) ) + delete attributesModel; +} + +void AbstractDiagram::Private::init() +{ +} + +void AbstractDiagram::Private::init( AbstractCoordinatePlane* newPlane ) +{ + plane = newPlane; +} + +bool AbstractDiagram::Private::usesExternalAttributesModel() const +{ + return ( ! attributesModel.isNull() ) && + ( ! qobject_cast(attributesModel) ); +} + +void AbstractDiagram::Private::setAttributesModel( AttributesModel* amodel ) +{ + if ( attributesModel == amodel ) { + return; + } + + if ( !attributesModel.isNull() ) { + if ( qobject_cast< PrivateAttributesModel* >( attributesModel ) ) { + delete attributesModel; + } else { + disconnect( attributesModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( columnsInserted( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( modelReset() ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( layoutChanged() ), + diagram, SLOT( setDataBoundariesDirty() ) ); + disconnect( attributesModel, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), + diagram, SIGNAL( modelDataChanged() )); + } + } + + emit diagram->attributesModelAboutToChange( amodel, attributesModel ); + + connect( amodel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( columnsInserted( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( modelReset() ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( layoutChanged() ), + diagram, SLOT( setDataBoundariesDirty() ) ); + connect( amodel, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), + diagram, SIGNAL( modelDataChanged() )); + + attributesModel = amodel; +} + +AbstractDiagram::Private::Private( const AbstractDiagram::Private& rhs ) : + diagram( 0 ), + doDumpPaintTime( rhs.doDumpPaintTime ), + // Do not copy the plane + plane( 0 ), + attributesModelRootIndex( QModelIndex() ), + attributesModel( rhs.attributesModel ), + allowOverlappingDataValueTexts( rhs.allowOverlappingDataValueTexts ), + antiAliasing( rhs.antiAliasing ), + percent( rhs.percent ), + datasetDimension( rhs.datasetDimension ), + mCachedFontMetrics( rhs.cachedFontMetrics() ) +{ + attributesModel = new PrivateAttributesModel( 0, 0); + attributesModel->initFrom( rhs.attributesModel ); +} + +// FIXME: Optimize if necessary +qreal AbstractDiagram::Private::calcPercentValue( const QModelIndex & index ) const +{ + qreal sum = 0.0; + for ( int col = 0; col < attributesModel->columnCount( QModelIndex() ); col++ ) + sum += attributesModel->data( attributesModel->index( index.row(), col, QModelIndex() ) ).toReal(); // checked + if ( sum == 0.0 ) + return 0.0; + return attributesModel->data( attributesModel->mapFromSource( index ) ).toReal() / sum * 100.0; +} + +void AbstractDiagram::Private::addLabel( + LabelPaintCache* cache, + const QModelIndex& index, + const CartesianDiagramDataCompressor::CachePosition* position, + const PositionPoints& points, + const Position& autoPositionPositive, const Position& autoPositionNegative, + const qreal value, qreal favoriteAngle /* = 0.0 */ ) +{ + CartesianDiagramDataCompressor::AggregatedDataValueAttributes allAttrs( + aggregatedAttrs( index, position ) ); + + QMap::const_iterator it; + for ( it = allAttrs.constBegin(); it != allAttrs.constEnd(); ++it ) { + DataValueAttributes dva = it.value(); + if ( !dva.isVisible() ) { + continue; + } + + const bool isPositive = ( value >= 0.0 ); + + RelativePosition relPos( dva.position( isPositive ) ); + relPos.setReferencePoints( points ); + if ( relPos.referencePosition().isUnknown() ) { + relPos.setReferencePosition( isPositive ? autoPositionPositive : autoPositionNegative ); + } + + // Rotate the label position (not the label itself) if the diagram is rotated so that the defaults still work + if ( isTransposed() ) { + KDChartEnums::PositionValue posValue = relPos.referencePosition().value(); + if ( posValue >= KDChartEnums::PositionNorthWest && posValue <= KDChartEnums::PositionWest ) { + // rotate 90 degrees clockwise + posValue = static_cast< KDChartEnums::PositionValue >( posValue + 2 ); + if ( posValue > KDChartEnums::PositionWest ) { + // wraparound + posValue = static_cast< KDChartEnums::PositionValue >( posValue - + ( KDChartEnums::PositionWest - KDChartEnums::PositionNorthWest ) ); + } + relPos.setReferencePosition( Position( posValue ) ); + } + } + + const QPointF referencePoint = relPos.referencePoint(); + if ( !diagram->coordinatePlane()->isVisiblePoint( referencePoint ) ) { + continue; + } + + const qreal fontHeight = cachedFontMetrics( dva.textAttributes(). + calculatedFont( plane, KDChartEnums::MeasureOrientationMinimum ), diagram )->height(); + + // Note: When printing data value texts and padding's Measure is using automatic reference area + // detection, the font height is used as reference size for both horizontal and vertical + // padding. + QSizeF relativeMeasureSize( fontHeight, fontHeight ); + + if ( !dva.textAttributes().hasRotation() ) { + TextAttributes ta = dva.textAttributes(); + ta.setRotation( favoriteAngle ); + dva.setTextAttributes( ta ); + } + + // get the size of the label text using a subset of the information going into the final layout + const QString text = formatDataValueText( dva, index, value ); + QTextDocument doc; + doc.setDocumentMargin( 0 ); + if ( Qt::mightBeRichText( text ) ) { + doc.setHtml( text ); + } else { + doc.setPlainText( text ); + } + const QFont calculatedFont( dva.textAttributes() + .calculatedFont( plane, KDChartEnums::MeasureOrientationMinimum ) ); + doc.setDefaultFont( calculatedFont ); + + const QRectF plainRect = doc.documentLayout()->frameBoundingRect( doc.rootFrame() ); + + /** + * A few hints on how the positioning of the text frame is done: + * + * Let's assume we have a bar chart, a text for a positive value + * to be drawn, and "North" as attrs.positivePosition(). + * + * The reference point (pos) is then set to the top center point + * of a bar. The offset now depends on the alignment: + * + * Top: text is centered horizontally to the bar, bottom of + * text frame starts at top of bar + * + * Bottom: text is centered horizontally to the bar, top of + * text frame starts at top of bar + * + * Center: text is centered horizontally to the bar, center + * line of text frame is same as top of bar + * + * TopLeft: right edge of text frame is horizontal center of + * bar, bottom of text frame is top of bar. + * + * ... + * + * Positive and negative value labels are treated equally, "North" + * also refers to the top of a negative bar, and *not* to the bottom. + * + * + * "NorthEast" likewise refers to the top right edge of the bar, + * "NorthWest" to the top left edge of the bar, and so on. + * + * In other words, attrs.positivePosition() always refers to a + * position of the *bar*, and relPos.alignment() always refers + * to an alignment of the text frame relative to this position. + */ + + QTransform transform; + { + // move to the general area where the label should be + QPointF calcPoint = relPos.calculatedPoint( relativeMeasureSize ); + transform.translate( calcPoint.x(), calcPoint.y() ); + // align the text rect; find out by how many half-widths / half-heights to move. + int dx = -1; + if ( relPos.alignment() & Qt::AlignLeft ) { + dx -= 1; + } else if ( relPos.alignment() & Qt::AlignRight ) { + dx += 1; + } + + int dy = -1; + if ( relPos.alignment() & Qt::AlignTop ) { + dy -= 1; + } else if ( relPos.alignment() & Qt::AlignBottom ) { + dy += 1; + } + transform.translate( qreal( dx ) * plainRect.width() * 0.5, + qreal( dy ) * plainRect.height() * 0.5 ); + + // rotate the text rect around its center + transform.translate( plainRect.center().x(), plainRect.center().y() ); + int rotation = dva.textAttributes().rotation(); + if ( !isPositive && dva.mirrorNegativeValueTextRotation() ) { + rotation *= -1; + } + transform.rotate( rotation ); + transform.translate( -plainRect.center().x(), -plainRect.center().y() ); + } + + QPainterPath labelArea; + //labelArea.addPolygon( transform.mapToPolygon( plainRect.toRect() ) ); + //labelArea.closeSubpath(); + // Not doing that because QTransform has a special case for 180° that gives a different than + // usual ordering of the points in the polygon returned by mapToPolygon( const QRect & ). + // We expect a particular ordering in paintDataValueTextsAndMarkers() by using elementAt( 0 ), + // and similar things might happen elsewhere. + labelArea.addPolygon( transform.map( QPolygon( plainRect.toRect(), true ) ) ); + + // store the label geometry and auxiliary data + cache->paintReplay.append( LabelPaintInfo( it.key(), dva, labelArea, + referencePoint, value >= 0.0, text ) ); + } +} + +const QFontMetrics* AbstractDiagram::Private::cachedFontMetrics( const QFont& font, + const QPaintDevice* paintDevice) const +{ + if ( ( font != mCachedFont ) || ( paintDevice != mCachedPaintDevice ) ) { + mCachedFontMetrics = QFontMetrics( font, const_cast( paintDevice ) ); + // TODO what about setting mCachedFont and mCachedPaintDevice? + } + return &mCachedFontMetrics; +} + +const QFontMetrics AbstractDiagram::Private::cachedFontMetrics() const +{ + return mCachedFontMetrics; +} + +QString AbstractDiagram::Private::formatNumber( qreal value, int decimalDigits ) const +{ + const int digits = qMax(decimalDigits, 0); + const qreal roundingEpsilon = pow( 0.1, digits ) * ( value >= 0.0 ? 0.5 : -0.5 ); + QString asString = QString::number( value + roundingEpsilon, 'f' ); + const int decimalPos = asString.indexOf( QLatin1Char( '.' ) ); + if ( decimalPos < 0 ) { + return asString; + } + + int last = qMin( decimalPos + digits, asString.length() - 1 ); + // remove trailing zeros (and maybe decimal dot) + while ( last > decimalPos && asString[ last ] == QLatin1Char( '0' ) ) { + last--; + } + if ( last == decimalPos ) { + last--; + } + asString.chop( asString.length() - last - 1 ); + return asString; +} + +void AbstractDiagram::Private::forgetAlreadyPaintedDataValues() +{ + alreadyDrawnDataValueTexts.clear(); + prevPaintedDataValueText.clear(); +} + +void AbstractDiagram::Private::paintDataValueTextsAndMarkers( + PaintContext* ctx, + const LabelPaintCache &cache, + bool paintMarkers, + bool justCalculateRect /* = false */, + QRectF* cumulatedBoundingRect /* = 0 */ ) +{ + if ( justCalculateRect && !cumulatedBoundingRect ) { + qWarning() << Q_FUNC_INFO << "Neither painting nor finding the bounding rect, what are we doing?"; + } + + const PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setClipping( false ); + + if ( paintMarkers && !justCalculateRect ) { + KDAB_FOREACH ( const LabelPaintInfo& info, cache.paintReplay ) { + diagram->paintMarker( ctx->painter(), info.index, info.markerPos ); + } + } + + TextAttributes ta; + { + Measure m( 18.0, KDChartEnums::MeasureCalculationModeRelative, + KDChartEnums::MeasureOrientationMinimum ); + m.setReferenceArea( ctx->coordinatePlane() ); + ta.setFontSize( m ); + m.setAbsoluteValue( 6.0 ); + ta.setMinimalFontSize( m ); + } + + forgetAlreadyPaintedDataValues(); + + KDAB_FOREACH ( const LabelPaintInfo& info, cache.paintReplay ) { + const QPointF pos = info.labelArea.elementAt( 0 ); + paintDataValueText( ctx->painter(), info.attrs, pos, info.isValuePositive, + info.value, justCalculateRect, cumulatedBoundingRect ); + + const QString comment = info.index.data( KDChart::CommentRole ).toString(); + if ( comment.isEmpty() ) { + continue; + } + TextBubbleLayoutItem item( comment, ta, ctx->coordinatePlane()->parent(), + KDChartEnums::MeasureOrientationMinimum, + Qt::AlignHCenter | Qt::AlignVCenter ); + const QRect rect( pos.toPoint(), item.sizeHint() ); + + if (cumulatedBoundingRect) { + (*cumulatedBoundingRect) |= rect; + } + if ( !justCalculateRect ) { + item.setGeometry( rect ); + item.paint( ctx->painter() ); + } + } + if ( cumulatedBoundingRect ) { + *cumulatedBoundingRect = ctx->painter()->transform().inverted().mapRect( *cumulatedBoundingRect ); + } +} + +QString AbstractDiagram::Private::formatDataValueText( const DataValueAttributes &dva, + const QModelIndex& index, qreal value ) const +{ + if ( !dva.isVisible() ) { + return QString(); + } + if ( dva.usePercentage() ) { + value = calcPercentValue( index ); + } + + QString ret; + if ( dva.dataLabel().isNull() ) { + ret = formatNumber( value, dva.decimalDigits() ); + } else { + ret = dva.dataLabel(); + } + + ret.prepend( dva.prefix() ); + ret.append( dva.suffix() ); + + return ret; +} + +void AbstractDiagram::Private::paintDataValueText( + QPainter* painter, + const QModelIndex& index, + const QPointF& pos, + qreal value, + bool justCalculateRect /* = false */, + QRectF* cumulatedBoundingRect /* = 0 */ ) +{ + const DataValueAttributes dva( diagram->dataValueAttributes( index ) ); + const QString text = formatDataValueText( dva, index, value ); + paintDataValueText( painter, dva, pos, value >= 0.0, text, + justCalculateRect, cumulatedBoundingRect ); +} + +void AbstractDiagram::Private::paintDataValueText( + QPainter* painter, + const DataValueAttributes& attrs, + const QPointF& pos, + bool valueIsPositive, + const QString& text, + bool justCalculateRect /* = false */, + QRectF* cumulatedBoundingRect /* = 0 */ ) +{ + if ( !attrs.isVisible() ) { + return; + } + + const TextAttributes ta( attrs.textAttributes() ); + if ( !ta.isVisible() || ( !attrs.showRepetitiveDataLabels() && prevPaintedDataValueText == text ) ) { + return; + } + prevPaintedDataValueText = text; + + QTextDocument doc; + doc.setDocumentMargin( 0.0 ); + if ( Qt::mightBeRichText( text ) ) { + doc.setHtml( text ); + } else { + doc.setPlainText( text ); + } + + const QFont calculatedFont( ta.calculatedFont( plane, KDChartEnums::MeasureOrientationMinimum ) ); + + const PainterSaver painterSaver( painter ); + painter->setPen( PrintingParameters::scalePen( ta.pen() ) ); + + doc.setDefaultFont( calculatedFont ); + QAbstractTextDocumentLayout::PaintContext context; + context.palette = diagram->palette(); + context.palette.setColor( QPalette::Text, ta.pen().color() ); + + QAbstractTextDocumentLayout* const layout = doc.documentLayout(); + layout->setPaintDevice( painter->device() ); + + painter->translate( pos.x(), pos.y() ); + int rotation = ta.rotation(); + if ( !valueIsPositive && attrs.mirrorNegativeValueTextRotation() ) { + rotation *= -1; + } + painter->rotate( rotation ); + + // do overlap detection "as seen by the painter" + QTransform transform = painter->worldTransform(); + + bool drawIt = true; + // note: This flag can be set differently for every label text! + // In theory a user could e.g. have some small red text on one of the + // values that she wants to have written in any case - so we just + // do not test if such texts would cover some of the others. + if ( !attrs.showOverlappingDataLabels() ) { + const QRectF br( layout->frameBoundingRect( doc.rootFrame() ) ); + QPolygon pr = transform.mapToPolygon( br.toRect() ); + // Using QPainterPath allows us to use intersects() (which has many early-exits) + // instead of QPolygon::intersected (which calculates a slow and precise intersection polygon) + QPainterPath path; + path.addPolygon( pr ); + + // iterate backwards because recently added items are more likely to overlap, so we spend + // less time checking irrelevant items when there is overlap + for ( int i = alreadyDrawnDataValueTexts.count() - 1; i >= 0; i-- ) { + if ( alreadyDrawnDataValueTexts.at( i ).intersects( path ) ) { + // qDebug() << "not painting this label due to overlap"; + drawIt = false; + break; + } + } + if ( drawIt ) { + alreadyDrawnDataValueTexts << path; + } + } + + if ( drawIt ) { + QRectF rect = layout->frameBoundingRect( doc.rootFrame() ); + if ( cumulatedBoundingRect ) { + (*cumulatedBoundingRect) |= transform.mapRect( rect ); + } + if ( !justCalculateRect ) { + bool paintBack = false; + BackgroundAttributes back( attrs.backgroundAttributes() ); + if ( back.isVisible() ) { + paintBack = true; + painter->setBrush( back.brush() ); + } else { + painter->setBrush( QBrush() ); + } + + qreal radius = 0.0; + FrameAttributes frame( attrs.frameAttributes() ); + if ( frame.isVisible() ) { + paintBack = true; + painter->setPen( frame.pen() ); + radius = frame.cornerRadius(); + } + + if ( paintBack ) { + QRectF borderRect( QPointF( 0, 0 ), rect.size() ); + painter->drawRoundedRect( borderRect, radius, radius ); + } + layout->draw( painter, context ); + } + } +} + +QModelIndex AbstractDiagram::Private::indexAt( const QPoint& point ) const +{ + QModelIndexList l = indexesAt( point ); + qSort( l ); + if ( !l.isEmpty() ) + return l.first(); + else + return QModelIndex(); +} + +QModelIndexList AbstractDiagram::Private::indexesAt( const QPoint& point ) const +{ + return reverseMapper.indexesAt( point ); // which could be empty +} + +QModelIndexList AbstractDiagram::Private::indexesIn( const QRect& rect ) const +{ + return reverseMapper.indexesIn( rect ); +} + +CartesianDiagramDataCompressor::AggregatedDataValueAttributes AbstractDiagram::Private::aggregatedAttrs( + const QModelIndex& index, + const CartesianDiagramDataCompressor::CachePosition* position ) const +{ + Q_UNUSED( position ); // used by cartesian diagrams only + CartesianDiagramDataCompressor::AggregatedDataValueAttributes allAttrs; + allAttrs[index] = diagram->dataValueAttributes( index ); + return allAttrs; +} + +void AbstractDiagram::Private::setDatasetAttrs( int dataset, const QVariant& data, int role ) +{ + // To store attributes for a dataset, we use the first column + // that's associated with it. (i.e., with a dataset dimension + // of two, the column of the keys). In most cases however, there's + // only one data dimension, and thus also only one column per data set. + int column = dataset * datasetDimension; + + // For DataHiddenRole, also store the flag in the other data points that belong to this data set, + // otherwise it's impossible to hide data points in a plotter diagram because there will always + // be one model index that belongs to this data point that is not hidden. + // For more details on how hiding works, see the data compressor. + // Also see KDCH-503 for which this is a workaround. + int columnSpan = role == DataHiddenRole ? datasetDimension : 1; + + for ( int i = 0; i < columnSpan; i++ ) { + attributesModel->setHeaderData( column + i, Qt::Horizontal, data, role ); + } +} + +QVariant AbstractDiagram::Private::datasetAttrs( int dataset, int role ) const +{ + // See setDataSetAttrs for explanation of column + int column = dataset * datasetDimension; + return attributesModel->headerData( column, Qt::Horizontal, role ); +} + +void AbstractDiagram::Private::resetDatasetAttrs( int dataset, int role ) +{ + // See setDataSetAttrs for explanation of column + int column = dataset * datasetDimension; + attributesModel->resetHeaderData( column, Qt::Horizontal, role ); +} + +bool AbstractDiagram::Private::isTransposed() const +{ + // Determine the diagram that specifies the orientation. + // That diagram is the reference diagram, if it exists, or otherwise the diagram itself. + // Note: In KDChart 2.3 or earlier, only a bar diagram can be transposed. + const AbstractCartesianDiagram* refDiagram = qobject_cast< const AbstractCartesianDiagram * >( diagram ); + if ( !refDiagram ) { + return false; + } + if ( refDiagram->referenceDiagram() ) { + refDiagram = refDiagram->referenceDiagram(); + } + const BarDiagram* barDiagram = qobject_cast< const BarDiagram* >( refDiagram ); + if ( !barDiagram ) { + return false; + } + return barDiagram->orientation() == Qt::Horizontal; +} + +LineAttributesInfo::LineAttributesInfo() +{ +} + +LineAttributesInfo::LineAttributesInfo( const QModelIndex& _index, const QPointF& _value, const QPointF& _nextValue ) + : index( _index ) + , value ( _value ) + , nextValue ( _nextValue ) +{ +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.h new file mode 100644 index 00000000..1acecedc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractDiagram_p.h @@ -0,0 +1,250 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTDIAGRAM_P_H +#define KDCHARTABSTRACTDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartDataValueAttributes.h" +#include "KDChartBackgroundAttributes.h" +#include "KDChartRelativePosition.h" +#include "KDChartPosition.h" +#include "KDChartPaintContext.h" +#include "KDChartPrintingParameters.h" +#include "KDChartChart.h" +#include +#include "ReverseMapper.h" + +#include +#include +#include +#include +#include +#include +#include + + +namespace KDChart { + class LabelPaintInfo { + public: + LabelPaintInfo(); + LabelPaintInfo( const QModelIndex& _index, const DataValueAttributes& _attrs, + const QPainterPath& _labelArea, const QPointF& _markerPos, + bool _isValuePositive, const QString& _value ); + LabelPaintInfo( const LabelPaintInfo& other ); + QModelIndex index; + DataValueAttributes attrs; + QPainterPath labelArea; + QPointF markerPos; + bool isValuePositive; + // could (ab)use attrs.dataLabel() instead + QString value; + }; + + class LabelPaintCache + { + public: + LabelPaintCache() {} + ~LabelPaintCache() + { + clear(); + } + + void clear() + { + paintReplay.clear(); + } + + QVector paintReplay; + private: + LabelPaintCache( LabelPaintCache& other ); // no copies + }; + + +/** + * \internal + */ + class AttributesModel; + + class KDChart::AbstractDiagram::Private + { + friend class AbstractDiagram; + public: + explicit Private(); + virtual ~Private(); + + Private( const Private& rhs ); + + void setAttributesModel( AttributesModel* ); + + bool usesExternalAttributesModel() const; + + // FIXME: Optimize if necessary + virtual qreal calcPercentValue( const QModelIndex & index ) const; + + // this should possibly be virtual so it can be overridden + void addLabel( LabelPaintCache* cache, + const QModelIndex& index, + const CartesianDiagramDataCompressor::CachePosition* position, + const PositionPoints& points, const Position& autoPositionPositive, + const Position& autoPositionNegative, const qreal value, + qreal favoriteAngle = 0.0 ); + + const QFontMetrics* cachedFontMetrics( const QFont& font, const QPaintDevice* paintDevice) const; + const QFontMetrics cachedFontMetrics() const; + + QString formatNumber( qreal value, int decimalDigits ) const; + QString formatDataValueText( const DataValueAttributes &dva, + const QModelIndex& index, qreal value ) const; + + void forgetAlreadyPaintedDataValues(); + + void paintDataValueTextsAndMarkers( PaintContext* ctx, + const LabelPaintCache& cache, + bool paintMarkers, + bool justCalculateRect=false, + QRectF* cumulatedBoundingRect=0 ); + + void paintDataValueText( QPainter* painter, + const QModelIndex& index, + const QPointF& pos, + qreal value, + bool justCalculateRect=false, + QRectF* cumulatedBoundingRect=0 ); + + void paintDataValueText( QPainter* painter, + const DataValueAttributes& attrs, + const QPointF& pos, + bool valueIsPositive, + const QString& text, + bool justCalculateRect=false, + QRectF* cumulatedBoundingRect=0 ); + + inline int datasetCount() const + { + return attributesModel->columnCount( attributesModelRootIndex ) / datasetDimension; + } + + virtual QModelIndex indexAt( const QPoint& point ) const; + + QModelIndexList indexesAt( const QPoint& point ) const; + + QModelIndexList indexesIn( const QRect& rect ) const; + + virtual CartesianDiagramDataCompressor::AggregatedDataValueAttributes aggregatedAttrs( + const QModelIndex & index, + const CartesianDiagramDataCompressor::CachePosition * position ) const; + + /** + * Sets arbitrary attributes of a data set. + */ + void setDatasetAttrs( int dataset, const QVariant& data, int role ); + + /** + * Retrieves arbitrary attributes of a data set. + */ + QVariant datasetAttrs( int dataset, int role ) const; + + /** + * Resets an attribute of a dataset back to its default. + */ + void resetDatasetAttrs( int dataset, int role ); + + /** + * Whether the diagram is transposed (X and Y swapped), which has the same effect as rotating + * the diagram 90° clockwise and inverting the (then vertical) X coordinate. + */ + bool isTransposed() const; + + static Private* get( AbstractDiagram *diagram ) { return diagram->_d; } + + AbstractDiagram* diagram; + ReverseMapper reverseMapper; + bool doDumpPaintTime; // for use in performance testing code + + protected: + void init(); + void init( AbstractCoordinatePlane* plane ); + + QPointer plane; + mutable QModelIndex attributesModelRootIndex; + QPointer attributesModel; + bool allowOverlappingDataValueTexts; + bool antiAliasing; + bool percent; + int datasetDimension; + mutable QPair databoundaries; + mutable bool databoundariesDirty; + + QMap< Qt::Orientation, QString > unitSuffix; + QMap< Qt::Orientation, QString > unitPrefix; + QMap< int, QMap< Qt::Orientation, QString > > unitSuffixMap; + QMap< int, QMap< Qt::Orientation, QString > > unitPrefixMap; + QList< QPainterPath > alreadyDrawnDataValueTexts; + + private: + QString prevPaintedDataValueText; + mutable QFontMetrics mCachedFontMetrics; + mutable QFont mCachedFont; + mutable QPaintDevice* mCachedPaintDevice; + }; + + inline AbstractDiagram::AbstractDiagram( Private * p ) : _d( p ) + { + init(); + } + inline AbstractDiagram::AbstractDiagram( + Private * p, QWidget* parent, AbstractCoordinatePlane* plane ) + : QAbstractItemView( parent ), _d( p ) + { + _d->init( plane ); + init(); + } + + + class LineAttributesInfo { + public: + LineAttributesInfo(); + LineAttributesInfo( const QModelIndex& _index, const QPointF& _value, const QPointF& _nextValue ); + + QModelIndex index; + QPointF value; + QPointF nextValue; + }; + + typedef QVector LineAttributesInfoList; + typedef QVectorIterator LineAttributesInfoListIterator; + +} +#endif /* KDCHARTDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.cpp new file mode 100644 index 00000000..020d37cd --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.cpp @@ -0,0 +1,119 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractGrid.h" +#include "KDChartPaintContext.h" + +#include + +#include + + +using namespace KDChart; +using namespace std; + + +static qreal _trunc( qreal v ) +{ + return (( v > 0.0 ) ? floor( v ) : ceil( v )); +} + + +AbstractGrid::AbstractGrid () + : mPlane( 0 ) +{ + //this bloc left empty intentionally +} + +AbstractGrid::~AbstractGrid() +{ + //this bloc left empty intentionally +} + +void AbstractGrid::setNeedRecalculate() +{ + mCachedRawDataDimensions.clear(); +} + +DataDimensionsList AbstractGrid::updateData( AbstractCoordinatePlane* plane ) +{ + if ( plane ) { + const DataDimensionsList rawDataDimensions( plane->getDataDimensionsList() ); + // ### this could be dangerous becaus calculateGrid() looks at some data we are not checking + // for changes here. + if ( mCachedRawDataDimensions.empty() || ( rawDataDimensions != mCachedRawDataDimensions ) ) { + mCachedRawDataDimensions = rawDataDimensions; + mPlane = plane; + mDataDimensions = calculateGrid( rawDataDimensions ); + } + } + return mDataDimensions; +} + +bool AbstractGrid::isBoundariesValid(const QRectF& r ) +{ + return isBoundariesValid( qMakePair( r.topLeft(), r.bottomRight() ) ); +} + +bool AbstractGrid::isBoundariesValid(const QPair& b ) +{ + return isValueValid( b.first.x() ) && isValueValid( b.first.y() ) && + isValueValid( b.second.x() ) && isValueValid( b.second.y() ); +} + +bool AbstractGrid::isBoundariesValid(const DataDimensionsList& l ) +{ + for (int i = 0; i < l.size(); ++i) + if ( ! isValueValid( l.at(i).start ) || ! isValueValid( l.at(i).end ) ) + return false; + return true; +} + +bool AbstractGrid::isValueValid(const qreal& r ) +{ + return !(ISNAN(r) || ISINF(r)); +} + +void AbstractGrid::adjustLowerUpperRange( + qreal& start, qreal& end, + qreal stepWidth, + bool adjustLower, bool adjustUpper ) +{ + const qreal startAdjust = ( start >= 0.0 ) ? 0.0 : -1.0; + const qreal endAdjust = ( end >= 0.0 ) ? 1.0 : 0.0; + if ( adjustLower && !qFuzzyIsNull( fmod( start, stepWidth ) ) ) + start = stepWidth * (_trunc( start / stepWidth ) + startAdjust); + if ( adjustUpper && !qFuzzyIsNull( fmod( end, stepWidth ) ) ) + end = stepWidth * (_trunc( end / stepWidth ) + endAdjust); +} + +const DataDimension AbstractGrid::adjustedLowerUpperRange( + const DataDimension& dim, + bool adjustLower, bool adjustUpper ) +{ + DataDimension result( dim ); + adjustLowerUpperRange( + result.start, result.end, + result.stepWidth, + adjustLower, adjustUpper ); + return result; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.h b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.h new file mode 100644 index 00000000..6bf6577e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractGrid.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTGRID_H +#define KDCHARTABSTRACTGRID_H + +#include + +#include "KDChartAbstractCoordinatePlane.h" +#include "KDChartGridAttributes.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartCartesianAxis.h" + +namespace KDChart { + + class PaintContext; + + + /** + * \internal + * + * \brief Abstract base class for grid classes: cartesian, polar, ... + * + * The AbstractGrid interface is the base class used by + * AbstractCoordinatePlane, for calculating and for drawing + * the grid lines of the plane. + */ + class AbstractGrid + { + public: + virtual ~AbstractGrid(); + protected: + AbstractGrid (); + + + public: + /** \brief Returns the cached result of data calculation. + * + * For this, all derived classes need to implement the + * pure-virtual calculateGrid() method. + */ + DataDimensionsList updateData( AbstractCoordinatePlane* plane ); + + /** + * Doing the actual drawing. + * + * Every derived class must implement this. + * + * \note When implementing drawGrid(): Before you start drawing, + * make sure to call updateData(), to get the data boundaries + * recalculated. + * For an example, see the implementation of CartesianGrid:drawGrid(). + */ + virtual void drawGrid( PaintContext* context ) = 0; + + /** + * Causes grid to be recalculated upon the next call + * of updateData(). + * + * \see calculateGrid + */ + void setNeedRecalculate(); + + /** + * Checks whether both coordinates of r are valid according + * to isValueValid + * + * \see isValueValid + */ + static bool isBoundariesValid(const QRectF& r ); + + /** + * Checks whether both coordinates of both points are valid + * according to isValueValid + * + * \see isValueValid + */ + static bool isBoundariesValid(const QPair& b ); + + /** + * Checks whether all start and end properties of every + * DataDimension in the list l are valid according to + * isValueValid(). + * + * \see isValueValid + */ + static bool isBoundariesValid(const DataDimensionsList& l ); + + /** + * Checks if r is neither NaN nor infinity. + */ + static bool isValueValid(const qreal& r ); + + /** + * Adjusts \a start and/or \a end so that they are a multiple of + * \a stepWidth + */ + static void adjustLowerUpperRange( + qreal& start, qreal& end, + qreal stepWidth, + bool adjustLower, bool adjustUpper ); + + /** + * Adjusts \a dim so that \c dim.start and/or \c dim.end are a multiple + * of \c dim.stepWidth. + * + * \see adjustLowerUpperRange + */ + static const DataDimension adjustedLowerUpperRange( + const DataDimension& dim, + bool adjustLower, bool adjustUpper ); + + GridAttributes gridAttributes; + + protected: + DataDimensionsList mDataDimensions; + AbstractCoordinatePlane* mPlane; + + private: + /** + * \brief Calculates the grid start/end/step width values. + * + * Gets the raw data dimensions - e.g. the data model's boundaries, + * together with their isCalculated flags. + * + * Returns the calculated start/end values for the grid, and their + * respective step widths. + * If at least one of the step widths is Zero, all dimensions of + * the returned list are considered invalid! + * + * \note This function needs to be implemented by all derived classes, + * like CartesianGrid, PolarGrid, ... + */ + virtual DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const = 0; + DataDimensionsList mCachedRawDataDimensions; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAbstractProxyModel.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractProxyModel.cpp new file mode 100644 index 00000000..8d5f2b3c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAbstractProxyModel.cpp @@ -0,0 +1,99 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractProxyModel.h" + +#include + +#include + +#ifdef __GNUC__ +#if __GNUC__ > 3 +#define MAY_ALIAS __attribute__((__may_alias__)) +#endif +#else +#define MAY_ALIAS +#endif + +namespace KDChart { + + /** This is basically KDAbstractProxyModel, but only the + bits that we really need from it */ +AbstractProxyModel::AbstractProxyModel(QObject* parent) + : QAbstractProxyModel(parent) {} + +// Allows access to QModelIndex's private data via type punning and a compatible data layout. +// Due to inlining in Qt and no d-pointer, it is safe to assume that the layout won't change except +// between major Qt versions. As it happens, the layout is the same in Qt4 and Qt5. +// The only change is void * -> quintptr. +struct MAY_ALIAS KDPrivateModelIndex +{ + int r, c; + void *p; + const QAbstractItemModel *m; +}; + +QModelIndex AbstractProxyModel::mapFromSource( const QModelIndex & sourceIndex ) const +{ + if ( !sourceIndex.isValid() ) + return QModelIndex(); + //qDebug() << "sourceIndex.model()="< +#include +#include + +#define d d_func() + + +using namespace KDChart; + + +AbstractThreeDAttributes::Private::Private() + : enabled( false ), + depth( 20 ), + threeDBrushEnabled( false ) +{ +} + + +AbstractThreeDAttributes::AbstractThreeDAttributes() + : _d( new Private() ) +{ +} + +AbstractThreeDAttributes::AbstractThreeDAttributes( const AbstractThreeDAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +AbstractThreeDAttributes& AbstractThreeDAttributes::operator= ( const AbstractThreeDAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +AbstractThreeDAttributes::~AbstractThreeDAttributes() +{ + delete _d; _d = 0; +} + + +bool AbstractThreeDAttributes::operator==( const AbstractThreeDAttributes& r ) const +{ + return isEnabled() == r.isEnabled() && + depth() == r.depth() && + isThreeDBrushEnabled() == r.isThreeDBrushEnabled(); +} + + +void AbstractThreeDAttributes::init( ) +{ + +} + +void AbstractThreeDAttributes::setEnabled( bool enabled ) +{ + d->enabled = enabled; +} + +bool AbstractThreeDAttributes::isEnabled() const +{ + return d->enabled; +} + +void AbstractThreeDAttributes::setDepth( qreal depth ) +{ + d->depth = depth; +} + + +qreal AbstractThreeDAttributes::depth() const +{ + return d->depth; +} + + +qreal AbstractThreeDAttributes::validDepth() const +{ + return isEnabled() ? d->depth : 0.0; +} + +bool AbstractThreeDAttributes::isThreeDBrushEnabled() const +{ + return d->threeDBrushEnabled; +} + +void AbstractThreeDAttributes::setThreeDBrushEnabled( bool enabled ) +{ + d->threeDBrushEnabled = enabled; +} + +QBrush AbstractThreeDAttributes::threeDBrush( const QBrush& brush, const QRectF& rect ) const +{ + if ( isThreeDBrushEnabled() ) { + QLinearGradient gr(rect.topLeft(), rect.bottomRight()); + gr.setColorAt(0.0, brush.color()); + gr.setColorAt(0.5, brush.color().lighter(180)); + gr.setColorAt(1.0, brush.color()); + return QBrush(gr); + } + return brush; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::AbstractThreeDAttributes& a) +{ + dbg << "enabled="< + +#include + + +namespace KDChart { + +/** + * \internal + */ +class AbstractThreeDAttributes::Private +{ + friend class AbstractThreeDAttributes; +public: + Private(); + +private: + bool enabled; +// FIXME: What is this needed for? height is not referenced anywhere. +// int height; + qreal depth; + bool threeDBrushEnabled; +}; + +inline AbstractThreeDAttributes::AbstractThreeDAttributes( Private * p ) : _d( p ) { init(); } + +} + +#endif // KDCHARTABSTRACTTHREEDATTRIBUTES_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.cpp new file mode 100644 index 00000000..7581291f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.cpp @@ -0,0 +1,715 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAttributesModel.h" +#include "KDChartPalette.h" +#include "KDChartGlobal.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +using namespace KDChart; + + +class AttributesModel::Private +{ +public: + Private(); + + QMap< int, QMap< int, QMap< int, QVariant > > > dataMap; + QMap< int, QMap< int, QVariant > > horizontalHeaderDataMap; + QMap< int, QMap< int, QVariant > > verticalHeaderDataMap; + QMap< int, QVariant > modelDataMap; + QMap< int, QVariant > defaultsMap; + int dataDimension; + AttributesModel::PaletteType paletteType; + Palette palette; +}; + +AttributesModel::Private::Private() + : dataDimension( 1 ), + paletteType( AttributesModel::PaletteTypeDefault ), + palette( Palette::defaultPalette() ) +{ +} + +#define d d_func() + +AttributesModel::AttributesModel( QAbstractItemModel* model, QObject * parent/* = 0 */ ) + : AbstractProxyModel( parent ), + _d( new Private ) +{ + setSourceModel( model ); + setDefaultForRole( KDChart::DataValueLabelAttributesRole, + DataValueAttributes::defaultAttributesAsVariant() ); +} + +AttributesModel::~AttributesModel() +{ + delete _d; + _d = 0; +} + +void AttributesModel::initFrom( const AttributesModel* other ) +{ + *d = *other->d; +} + +bool AttributesModel::compareHeaderDataMaps( const QMap< int, QMap< int, QVariant > >& mapA, + const QMap< int, QMap< int, QVariant > >& mapB ) const +{ + if ( mapA.count() != mapB.count() ) { + return false; + } + QMap< int, QMap< int, QVariant > >::const_iterator itA = mapA.constBegin(); + QMap< int, QMap< int, QVariant > >::const_iterator itB = mapB.constBegin(); + for ( ; itA != mapA.constEnd(); ++itA, ++itB ) { + if ( itA->count() != itB->count() ) { + return false; + } + QMap< int, QVariant >::const_iterator it2A = itA->constBegin(); + QMap< int, QVariant >::const_iterator it2B = itB->constBegin(); + for ( ; it2A != itA->constEnd(); ++it2A, ++it2B ) { + if ( it2A.key() != it2B.key() ) { + return false; + } + if ( !compareAttributes( it2A.key(), it2A.value(), it2B.value() ) ) { + return false; + } + } + } + return true; +} + +bool AttributesModel::compare( const AttributesModel* other ) const +{ + if ( other == this ) { + return true; + } + if ( !other || d->paletteType != other->d->paletteType ) { + return false; + } + + { + if ( d->dataMap.count() != other->d->dataMap.count() ) { + return false; + } + QMap< int, QMap< int, QMap > >::const_iterator itA = d->dataMap.constBegin(); + QMap< int, QMap< int, QMap > >::const_iterator itB = other->d->dataMap.constBegin(); + for ( ; itA != d->dataMap.constEnd(); ++itA, ++itB ) { + if ( itA->count() != itB->count() ) { + return false; + } + QMap< int, QMap< int, QVariant > >::const_iterator it2A = itA->constBegin(); + QMap< int, QMap< int, QVariant > >::const_iterator it2B = itB->constBegin(); + for ( ; it2A != itA->constEnd(); ++it2A, ++it2B ) { + if ( it2A->count() != it2B->count() ) { + return false; + } + QMap< int, QVariant >::const_iterator it3A = it2A->constBegin(); + QMap< int, QVariant >::const_iterator it3B = it2B->constBegin(); + for ( ; it3A != it2A->constEnd(); ++it3A, ++it3B ) { + if ( it3A.key() != it3B.key() ) { + return false; + } + if ( !compareAttributes( it3A.key(), it3A.value(), it3B.value() ) ) { + return false; + } + } + } + } + } + + if ( !compareHeaderDataMaps( d->horizontalHeaderDataMap, other->d->horizontalHeaderDataMap ) || + !compareHeaderDataMaps( d->verticalHeaderDataMap, other->d->verticalHeaderDataMap ) ) { + return false; + } + + { + if ( d->modelDataMap.count() != other->d->modelDataMap.count() ) { + return false; + } + QMap< int, QVariant >::const_iterator itA = d->modelDataMap.constBegin(); + QMap< int, QVariant >::const_iterator itB = other->d->modelDataMap.constBegin(); + for ( ; itA != d->modelDataMap.constEnd(); ++itA, ++itB ) { + if ( itA.key() != itB.key() ) { + return false; + } + if ( !compareAttributes( itA.key(), itA.value(), itB.value() ) ) { + return false; + } + } + } + return true; +} + +bool AttributesModel::compareAttributes( + int role, const QVariant& a, const QVariant& b ) const +{ + if ( isKnownAttributesRole( role ) ) { + switch ( role ) { + case DataValueLabelAttributesRole: + return (a.value() == + b.value()); + case DatasetBrushRole: + return (a.value() == + b.value()); + case DatasetPenRole: + return (a.value() == + b.value()); + case ThreeDAttributesRole: + // As of yet there is no ThreeDAttributes class, + // and the AbstractThreeDAttributes class is pure virtual, + // so we ignore this role for now. + // (khz, 04.04.2007) + /* + return (qVariantValue( a ) == + qVariantValue( b )); + */ + break; + case LineAttributesRole: + return (a.value() == + b.value()); + case ThreeDLineAttributesRole: + return (a.value() == + b.value()); + case BarAttributesRole: + return (a.value() == + b.value()); + case StockBarAttributesRole: + return (a.value() == + b.value()); + case ThreeDBarAttributesRole: + return (a.value() == + b.value()); + case PieAttributesRole: + return (a.value() == + b.value()); + case ThreeDPieAttributesRole: + return (a.value() == + b.value()); + case ValueTrackerAttributesRole: + return (a.value() == + b.value()); + case DataHiddenRole: + return (a.value() == + b.value()); + default: + Q_ASSERT( false ); // all of our own roles need to be handled + break; + } + } else { + return (a == b); + } + return true; +} + + +QVariant AttributesModel::headerData( int section, Qt::Orientation orientation, + int role/* = Qt::DisplayRole */ ) const +{ + if ( sourceModel() ) { + const QVariant sourceData = sourceModel()->headerData( section, orientation, role ); + if ( sourceData.isValid() ) { + return sourceData; + } + } + + // the source model didn't have data set, let's use our stored values + const QMap< int, QMap< int, QVariant> >& map = orientation == Qt::Horizontal ? + d->horizontalHeaderDataMap : d->verticalHeaderDataMap; + QMap< int, QMap< int, QVariant > >::const_iterator mapIt = map.find( section ); + if ( mapIt != map.constEnd() ) { + const QMap< int, QVariant >& dataMap = mapIt.value(); + QMap< int, QVariant >::const_iterator dataMapIt = dataMap.find( role ); + if ( dataMapIt != dataMap.constEnd() ) { + return dataMapIt.value(); + } + } + + return defaultHeaderData( section, orientation, role ); +} + + +QVariant AttributesModel::defaultHeaderData( int section, Qt::Orientation orientation, int role ) const +{ + // Default values if nothing else matches + + const int dataset = section / d->dataDimension; + + switch ( role ) { + case Qt::DisplayRole: + //TODO for KDChart 3.0: return QString::number( dataset + 1 ); + return QLatin1String( orientation == Qt::Vertical ? "Series " : "Item " ) + QString::number( dataset ) ; + case KDChart::DatasetBrushRole: + return d->palette.getBrush( dataset ); + case KDChart::DatasetPenRole: + // if no per model override was set, use the (possibly default) color set for the brush + if ( !modelData( role ).isValid() ) { + QBrush brush = headerData( section, orientation, DatasetBrushRole ).value< QBrush >(); + return QPen( brush.color() ); + } + default: + break; + } + + return QVariant(); +} + + +QVariant AttributesModel::data( int role ) const +{ + if ( isKnownAttributesRole( role ) ) { + // check if there is something set at global level + QVariant v = modelData( role ); + + // else return the default setting, if any + if ( !v.isValid() ) + v = defaultsForRole( role ); + return v; + } + return QVariant(); +} + + +QVariant AttributesModel::data( int column, int role ) const +{ + if ( isKnownAttributesRole( role ) ) { + // check if there is something set for the column (dataset) + QVariant v; + v = headerData( column, Qt::Horizontal, role ); + + // check if there is something set at global level + if ( !v.isValid() ) + v = data( role ); // includes automatic fallback to default + return v; + } + return QVariant(); +} + + +QVariant AttributesModel::data( const QModelIndex& index, int role ) const +{ + if ( index.isValid() ) { + Q_ASSERT( index.model() == this ); + } + if ( !sourceModel() ) { + return QVariant(); + } + + if ( index.isValid() ) { + const QVariant sourceData = sourceModel()->data( mapToSource( index ), role ); + if ( sourceData.isValid() ) { + return sourceData; + } + } + + // check if we are storing a value for this role at this cell index + if ( d->dataMap.contains( index.column() ) ) { + const QMap< int, QMap< int, QVariant > >& colDataMap = d->dataMap[ index.column() ]; + if ( colDataMap.contains( index.row() ) ) { + const QMap< int, QVariant >& dataMap = colDataMap[ index.row() ]; + if ( dataMap.contains( role ) ) { + const QVariant v = dataMap[ role ]; + if ( v.isValid() ) { + return v; + } + } + } + } + // check if there is something set for the column (dataset), or at global level + if ( index.isValid() ) { + return data( index.column(), role ); // includes automatic fallback to default + } + + return QVariant(); +} + + +bool AttributesModel::isKnownAttributesRole( int role ) const +{ + switch ( role ) { + // fallthrough intended + case DataValueLabelAttributesRole: + case DatasetBrushRole: + case DatasetPenRole: + case ThreeDAttributesRole: + case LineAttributesRole: + case ThreeDLineAttributesRole: + case BarAttributesRole: + case StockBarAttributesRole: + case ThreeDBarAttributesRole: + case PieAttributesRole: + case ThreeDPieAttributesRole: + case ValueTrackerAttributesRole: + case DataHiddenRole: + return true; + default: + return false; + } +} + +QVariant AttributesModel::defaultsForRole( int role ) const +{ + // returns default-constructed QVariant if not found + return d->defaultsMap.value( role ); +} + +bool AttributesModel::setData ( const QModelIndex & index, const QVariant & value, int role ) +{ + if ( !isKnownAttributesRole( role ) ) { + return sourceModel()->setData( mapToSource(index), value, role ); + } else { + QMap< int, QMap< int, QVariant> > &colDataMap = d->dataMap[ index.column() ]; + QMap< int, QVariant > &dataMap = colDataMap[ index.row() ]; + dataMap.insert( role, value ); + emit attributesChanged( index, index ); + return true; + } +} + +bool AttributesModel::resetData ( const QModelIndex & index, int role ) +{ + return setData( index, QVariant(), role ); +} + +bool AttributesModel::setHeaderData ( int section, Qt::Orientation orientation, + const QVariant & value, int role ) +{ + if ( sourceModel() && headerData( section, orientation, role ) == value ) { + return true; + } + + if ( !isKnownAttributesRole( role ) ) { + return sourceModel()->setHeaderData( section, orientation, value, role ); + } else { + QMap< int, QMap > §ionDataMap + = orientation == Qt::Horizontal ? d->horizontalHeaderDataMap : d->verticalHeaderDataMap; + + QMap< int, QVariant > &dataMap = sectionDataMap[ section ]; + dataMap.insert( role, value ); + if ( sourceModel() ) { + int numRows = rowCount( QModelIndex() ); + int numCols = columnCount( QModelIndex() ); + if ( orientation == Qt::Horizontal && numRows > 0 ) + emit attributesChanged( index( 0, section, QModelIndex() ), + index( numRows - 1, section, QModelIndex() ) ); + else if ( orientation == Qt::Vertical && numCols > 0 ) + emit attributesChanged( index( section, 0, QModelIndex() ), + index( section, numCols - 1, QModelIndex() ) ); + emit headerDataChanged( orientation, section, section ); + + // FIXME: This only makes sense for orientation == Qt::Horizontal, + // but what if orientation == Qt::Vertical? + if ( section != -1 && numRows > 0 ) + emit dataChanged( index( 0, section, QModelIndex() ), + index( numRows - 1, section, QModelIndex() ) ); + } + return true; + } +} + +bool AttributesModel::resetHeaderData ( int section, Qt::Orientation orientation, int role ) +{ + return setHeaderData ( section, orientation, QVariant(), role ); +} + +void AttributesModel::setPaletteType( AttributesModel::PaletteType type ) +{ + if ( d->paletteType == type ) { + return; + } + d->paletteType = type; + switch ( type ) { + case PaletteTypeDefault: + d->palette = Palette::defaultPalette(); + break; + case PaletteTypeSubdued: + d->palette = Palette::subduedPalette(); + break; + case PaletteTypeRainbow: + d->palette = Palette::rainbowPalette(); + break; + default: + qWarning( "Unknown palette type!" ); + } +} + +AttributesModel::PaletteType AttributesModel::paletteType() const +{ + return d->paletteType; +} + +bool KDChart::AttributesModel::setModelData( const QVariant value, int role ) +{ + d->modelDataMap.insert( role, value ); + int numRows = rowCount( QModelIndex() ); + int numCols = columnCount( QModelIndex() ); + if ( sourceModel() && numRows > 0 && numCols > 0 ) { + emit attributesChanged( index( 0, 0, QModelIndex() ), + index( numRows - 1, numCols - 1, QModelIndex() ) ); + beginResetModel(); + endResetModel(); + } + return true; +} + +QVariant KDChart::AttributesModel::modelData( int role ) const +{ + return d->modelDataMap.value( role, QVariant() ); +} + +int AttributesModel::rowCount( const QModelIndex& index ) const +{ + if ( sourceModel() ) { + return sourceModel()->rowCount( mapToSource(index) ); + } else { + return 0; + } +} + +int AttributesModel::columnCount( const QModelIndex& index ) const +{ + if ( sourceModel() ) { + return sourceModel()->columnCount( mapToSource(index) ); + } else { + return 0; + } +} + +void AttributesModel::setSourceModel( QAbstractItemModel* sourceModel ) +{ + if ( this->sourceModel() != 0 ) + { + disconnect( this->sourceModel(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)), + this, SLOT( slotDataChanged( const QModelIndex&, const QModelIndex&))); + disconnect( this->sourceModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsInserted( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsRemoved( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( rowsAboutToBeInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsAboutToBeInserted( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( rowsAboutToBeRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsAboutToBeRemoved( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsInserted( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsRemoved( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( columnsAboutToBeInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsAboutToBeInserted( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( columnsAboutToBeRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsAboutToBeRemoved( const QModelIndex&, int, int ) ) ); + disconnect( this->sourceModel(), SIGNAL( modelReset() ), + this, SIGNAL( modelReset() ) ); + disconnect( this->sourceModel(), SIGNAL( layoutChanged() ), + this, SIGNAL( layoutChanged() ) ); + } + QAbstractProxyModel::setSourceModel( sourceModel ); + if ( this->sourceModel() != NULL ) + { + connect( this->sourceModel(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)), + this, SLOT( slotDataChanged( const QModelIndex&, const QModelIndex&))); + connect( this->sourceModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsInserted( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsRemoved( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( rowsAboutToBeInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsAboutToBeInserted( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( rowsAboutToBeRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotRowsAboutToBeRemoved( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsInserted( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsRemoved( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( columnsAboutToBeInserted( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsAboutToBeInserted( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( columnsAboutToBeRemoved( const QModelIndex&, int, int ) ), + this, SLOT( slotColumnsAboutToBeRemoved( const QModelIndex&, int, int ) ) ); + connect( this->sourceModel(), SIGNAL( modelReset() ), + this, SIGNAL( modelReset() ) ); + connect( this->sourceModel(), SIGNAL( layoutChanged() ), + this, SIGNAL( layoutChanged() ) ); + } +} + +void AttributesModel::slotRowsAboutToBeInserted( const QModelIndex& parent, int start, int end ) +{ + beginInsertRows( mapFromSource( parent ), start, end ); +} + +void AttributesModel::slotColumnsAboutToBeInserted( const QModelIndex& parent, int start, int end ) +{ + beginInsertColumns( mapFromSource( parent ), start, end ); +} + +void AttributesModel::slotRowsInserted( const QModelIndex& parent, int start, int end ) +{ + Q_UNUSED( parent ); + Q_UNUSED( start ); + Q_UNUSED( end ); + endInsertRows(); +} + +void AttributesModel::slotColumnsInserted( const QModelIndex& parent, int start, int end ) +{ + Q_UNUSED( parent ); + Q_UNUSED( start ); + Q_UNUSED( end ); + endInsertColumns(); +} + +void AttributesModel::slotRowsAboutToBeRemoved( const QModelIndex& parent, int start, int end ) +{ + beginRemoveRows( mapFromSource( parent ), start, end ); +} + +void AttributesModel::slotColumnsAboutToBeRemoved( const QModelIndex& parent, int start, int end ) +{ + beginRemoveColumns( mapFromSource( parent ), start, end ); +} + +void AttributesModel::slotRowsRemoved( const QModelIndex& parent, int start, int end ) +{ + Q_UNUSED( parent ); + Q_UNUSED( start ); + Q_UNUSED( end ); + endRemoveRows(); +} + +void AttributesModel::removeEntriesFromDataMap( int start, int end ) +{ + QMap< int, QMap< int, QMap< int, QVariant > > >::iterator it = d->dataMap.find( end ); + // check that the element was found + if ( it != d->dataMap.end() ) { + ++it; + QVector< int > indexesToDel; + for ( int i = start; i < end && it != d->dataMap.end(); ++i ) { + d->dataMap[ i ] = it.value(); + indexesToDel << it.key(); + ++it; + } + if ( indexesToDel.isEmpty() ) { + for ( int i = start; i < end; ++i ) { + indexesToDel << i; + } + } + for ( int i = 0; i < indexesToDel.count(); ++i ) { + d->dataMap.remove( indexesToDel[ i ] ); + } + } +} + +void AttributesModel::removeEntriesFromDirectionDataMaps( Qt::Orientation dir, int start, int end ) +{ + QMap > §ionDataMap + = dir == Qt::Horizontal ? d->horizontalHeaderDataMap : d->verticalHeaderDataMap; + QMap >::iterator it = sectionDataMap.upperBound( end ); + // check that the element was found + if ( it != sectionDataMap.end() ) + { + QVector< int > indexesToDel; + for ( int i = start; i < end && it != sectionDataMap.end(); ++i ) + { + sectionDataMap[ i ] = it.value(); + indexesToDel << it.key(); + ++it; + } + if ( indexesToDel.isEmpty() ) + { + for ( int i = start; i < end; ++i ) + { + indexesToDel << i; + } + } + for ( int i = 0; i < indexesToDel.count(); ++i ) + { + sectionDataMap.remove( indexesToDel[ i ] ); + } + } +} + +void AttributesModel::slotColumnsRemoved( const QModelIndex& parent, int start, int end ) +{ + Q_UNUSED( parent ); + Q_UNUSED( start ); + Q_UNUSED( end ); + Q_ASSERT_X( sourceModel(), "removeColumn", "This should only be triggered if a valid source Model exists!" ); + for ( int i = start; i <= end; ++i ) { + d->verticalHeaderDataMap.remove( start ); + } + removeEntriesFromDataMap( start, end ); + removeEntriesFromDirectionDataMaps( Qt::Horizontal, start, end ); + removeEntriesFromDirectionDataMaps( Qt::Vertical, start, end ); + + endRemoveColumns(); +} + +void AttributesModel::slotDataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight ) +{ + emit dataChanged( mapFromSource( topLeft ), mapFromSource( bottomRight ) ); +} + +void AttributesModel::setDefaultForRole( int role, const QVariant& value ) +{ + if ( value.isValid() ) { + d->defaultsMap.insert( role, value ); + } else { + // erase the possibily existing value to not let the map grow: + QMap::iterator it = d->defaultsMap.find( role ); + if ( it != d->defaultsMap.end() ) { + d->defaultsMap.erase( it ); + } + } + + Q_ASSERT( defaultsForRole( role ).value() == value.value() ); +} + +void AttributesModel::setDatasetDimension( int dimension ) +{ + //### need to "reformat" or throw away internal data? + d->dataDimension = dimension; +} + +int AttributesModel::datasetDimension() const +{ + return d->dataDimension; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.h b/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.h new file mode 100644 index 00000000..47c210e1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartAttributesModel.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHART_ATTRIBUTES_MODEL_H__ +#define __KDCHART_ATTRIBUTES_MODEL_H__ + +#include "KDChartAbstractProxyModel.h" +#include +#include + +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A proxy model used for decorating data with attributes. + * + * An AttributesModel forwards data from and to the source model and adds attributes, + * data that influences the graphical rendering of the source model data. + * The attributes are distinguished from the source model's data by their @p role values. + * Therefore this class does not need to, and does not, change the data layout from the + * source model's; indexes that refer to the same data have the same row and column + * values in both models. + * Attribute changes, that is changes to data with the attribute role, via the interface + * of this class (including setData()) are stored internally and not forwarded to the source model. + */ +class KDCHART_EXPORT AttributesModel : public AbstractProxyModel +{ + Q_OBJECT + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AttributesModel ) +public: + enum PaletteType { + PaletteTypeDefault = 0, + PaletteTypeRainbow = 1, + PaletteTypeSubdued = 2 + }; + + explicit AttributesModel( QAbstractItemModel* model, QObject * parent = 0 ); + ~AttributesModel(); + + /** Copies the internal data (maps and palette) of another + * AttributesModel* into this one. + */ + void initFrom( const AttributesModel* other ); + + /** Returns true if both, all of the attributes set, and + * the palette set is equal in both of the AttributeModels. + */ + bool compare( const AttributesModel* other ) const; + + bool compareAttributes( int role, const QVariant& a, const QVariant& b ) const; + + /* Attributes Model specific API */ + bool setModelData( const QVariant value, int role ); + QVariant modelData( int role ) const; + + /** Returns whether the given role corresponds to one of the known + * internally used ones. */ + bool isKnownAttributesRole( int role ) const; + + /** Sets the palettetype used by this attributesmodel */ + void setPaletteType( PaletteType type ); + PaletteType paletteType() const; + + /** Returns the data that were specified at global level, + * or the default data, or QVariant(). + */ + QVariant data(int role) const; + + /** Returns the data that were specified at per column level, + * or the globally set data, or the default data, or QVariant(). + */ + QVariant data(int column, int role) const; + + /** \reimpl */ + QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + /** \reimpl */ + int rowCount(const QModelIndex& ) const; + /** \reimpl */ + int columnCount(const QModelIndex& ) const; + /** \reimpl */ + QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const; + /** \reimpl */ + bool setData ( const QModelIndex & index, const QVariant & value, int role = Qt::DisplayRole); + /** Remove any explicit attributes settings that might have been specified before. */ + bool resetData ( const QModelIndex & index, int role = Qt::DisplayRole); + /** \reimpl */ + bool setHeaderData ( int section, Qt::Orientation orientation, const QVariant & value, + int role = Qt::DisplayRole); + /** Returns default values for the header data. */ + virtual QVariant defaultHeaderData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + /** Remove any explicit attributes settings that might have been specified before. */ + bool resetHeaderData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole); + /** \reimpl */ + void setSourceModel ( QAbstractItemModel* sourceModel ); + + /** Define the default value for a certain role. + Passing a default-constructed QVariant is equivalent to removing the default. */ + void setDefaultForRole( int role, const QVariant& value ); + + /** Set the dimension of the dataset in the source model. \sa AbstractDiagram::setDatasetDimension */ + void setDatasetDimension( int dimension ); + int datasetDimension() const; + +Q_SIGNALS: + void attributesChanged( const QModelIndex&, const QModelIndex& ); + +private Q_SLOTS: + void slotRowsAboutToBeInserted( const QModelIndex& parent, int start, int end ); + void slotColumnsAboutToBeInserted( const QModelIndex& parent, int start, int end ); + void slotRowsInserted( const QModelIndex& parent, int start, int end ); + void slotColumnsInserted( const QModelIndex& parent, int start, int end ); + + void slotRowsAboutToBeRemoved( const QModelIndex& parent, int start, int end ); + void slotColumnsAboutToBeRemoved( const QModelIndex& parent, int start, int end ); + void slotRowsRemoved( const QModelIndex& parent, int start, int end ); + void slotColumnsRemoved( const QModelIndex& parent, int start, int end ); + + void slotDataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight ); + +private: + // helper + QVariant defaultsForRole( int role ) const; + bool compareHeaderDataMaps( const QMap< int, QMap< int, QVariant > >& mapA, + const QMap< int, QMap< int, QVariant > >& mapB ) const; + + void removeEntriesFromDataMap( int start, int end ); + void removeEntriesFromDirectionDataMaps( Qt::Orientation dir, int start, int end ); +}; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartBackgroundAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartBackgroundAttributes.cpp new file mode 100644 index 00000000..10603443 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartBackgroundAttributes.cpp @@ -0,0 +1,157 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartBackgroundAttributes.h" +#include + +#include + +#define d d_func() + + +using namespace KDChart; + +class BackgroundAttributes::Private +{ + friend class KDChart::BackgroundAttributes; +public: + Private(); +private: + bool visible; + QBrush brush; + BackgroundPixmapMode pixmapMode; + QPixmap pixmap; +}; + +BackgroundAttributes::Private::Private() : + visible( false ), + pixmapMode( BackgroundAttributes::BackgroundPixmapModeNone ) +{ +} + + +BackgroundAttributes::BackgroundAttributes() + : _d( new Private() ) +{ +} + +BackgroundAttributes::BackgroundAttributes( const BackgroundAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +BackgroundAttributes & BackgroundAttributes::operator=( const BackgroundAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +bool BackgroundAttributes::operator==( const BackgroundAttributes& r ) const +{ + return isEqualTo( r ); +} + + +bool BackgroundAttributes::isEqualTo( + const BackgroundAttributes& other, bool ignorePixmap ) const +{ + /* + qDebug() << "BackgroundAttributes::operator=="; + qDebug() << "isVisible" << (isVisible() == other.isVisible()); + qDebug() << "brush" << (brush() == other.brush()); + qDebug() << "pixmapMode"<< (pixmapMode() == other.pixmapMode()); + qDebug() << "pixmap" << (pixmap().serialNumber() == other.pixmap().serialNumber()); + */ + return ( + isVisible() == other.isVisible() && + brush() == other.brush() && + pixmapMode() == other.pixmapMode() && + (ignorePixmap || + pixmap().cacheKey() == other.pixmap().cacheKey()) ); +} + + +BackgroundAttributes::~BackgroundAttributes() +{ + delete _d; _d = 0; +} + + + + +void BackgroundAttributes::setVisible( bool visible ) +{ + d->visible = visible; +} + + +bool BackgroundAttributes::isVisible() const +{ + return d->visible; +} + +void BackgroundAttributes::setBrush( const QBrush &brush ) +{ + d->brush = brush; +} + +QBrush BackgroundAttributes::brush() const +{ + return d->brush; +} + +void BackgroundAttributes::setPixmapMode( BackgroundPixmapMode mode ) +{ + d->pixmapMode = mode; +} + +BackgroundAttributes::BackgroundPixmapMode BackgroundAttributes::pixmapMode() const +{ + return d->pixmapMode; +} + +void BackgroundAttributes::setPixmap( const QPixmap &backPixmap ) +{ + d->pixmap = backPixmap; +} + +QPixmap BackgroundAttributes::pixmap() const +{ + return d->pixmap; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::BackgroundAttributes& ba) +{ + dbg << "KDChart::BackgroundAttributes(" + << "visible="< +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * Set of attributes usable for background pixmaps + */ +class KDCHART_EXPORT BackgroundAttributes +{ +public: + BackgroundAttributes(); + BackgroundAttributes( const BackgroundAttributes& ); + BackgroundAttributes &operator= ( const BackgroundAttributes& ); + + ~BackgroundAttributes(); + + enum BackgroundPixmapMode { BackgroundPixmapModeNone, + BackgroundPixmapModeCentered, + BackgroundPixmapModeScaled, + BackgroundPixmapModeStretched }; + + void setVisible( bool visible ); + bool isVisible() const; + + void setBrush( const QBrush &brush ); + QBrush brush() const; + + void setPixmapMode( BackgroundPixmapMode mode ); + BackgroundPixmapMode pixmapMode() const; + + void setPixmap( const QPixmap &backPixmap ); + QPixmap pixmap() const; + + bool operator==( const BackgroundAttributes& ) const; + inline bool operator!=( const BackgroundAttributes& other ) const { return !operator==(other); } + + bool isEqualTo( const BackgroundAttributes& other, bool ignorePixmap=false ) const; + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( BackgroundAttributes ) +}; // End of class BackgroundAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::BackgroundAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::BackgroundAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::BackgroundAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::BackgroundAttributes ) + +#endif // KDCHARTBACKGROUNDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartChart.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartChart.cpp new file mode 100644 index 00000000..be7bad07 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartChart.cpp @@ -0,0 +1,1667 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartChart.h" +#include "KDChartChart_p.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "KDChartCartesianCoordinatePlane.h" +#include "KDChartAbstractCartesianDiagram.h" +#include "KDChartHeaderFooter.h" +#include "KDChartEnums.h" +#include "KDChartLegend.h" +#include "KDChartLayoutItems.h" +#include +#include +#include "KDChartPainterSaver_p.h" +#include "KDChartPrintingParameters.h" + +#include + +#if defined KDAB_EVAL +#include "../evaldialog/evaldialog.h" +#endif + +#include + +static const Qt::Alignment s_gridAlignments[ 3 ][ 3 ] = { // [ row ][ column ] + { Qt::AlignTop | Qt::AlignLeft, Qt::AlignTop | Qt::AlignHCenter, Qt::AlignTop | Qt::AlignRight }, + { Qt::AlignVCenter | Qt::AlignLeft, Qt::AlignVCenter | Qt::AlignHCenter, Qt::AlignVCenter | Qt::AlignRight }, + { Qt::AlignBottom | Qt::AlignLeft, Qt::AlignBottom | Qt::AlignHCenter, Qt::AlignBottom | Qt::AlignRight } +}; + +static void getRowAndColumnForPosition(KDChartEnums::PositionValue pos, int* row, int* column) +{ + switch ( pos ) { + case KDChartEnums::PositionNorthWest: *row = 0; *column = 0; + break; + case KDChartEnums::PositionNorth: *row = 0; *column = 1; + break; + case KDChartEnums::PositionNorthEast: *row = 0; *column = 2; + break; + case KDChartEnums::PositionEast: *row = 1; *column = 2; + break; + case KDChartEnums::PositionSouthEast: *row = 2; *column = 2; + break; + case KDChartEnums::PositionSouth: *row = 2; *column = 1; + break; + case KDChartEnums::PositionSouthWest: *row = 2; *column = 0; + break; + case KDChartEnums::PositionWest: *row = 1; *column = 0; + break; + case KDChartEnums::PositionCenter: *row = 1; *column = 1; + break; + default: *row = -1; *column = -1; + break; + } +} + +// Layout widgets even if they are not visible +class MyWidgetItem : public QWidgetItem +{ +public: + explicit MyWidgetItem(QWidget *w, Qt::Alignment alignment = 0) + : QWidgetItem( w ) + { + setAlignment( alignment ); + } + + /*reimp*/ + bool isEmpty() const { + QWidget* w = const_cast< MyWidgetItem * >( this )->widget(); + // legend->hide() should indeed hide the legend, + // but a legend in a chart that hasn't been shown yet isn't hidden + // (as can happen when using Chart::paint() without showing the chart) + return w->isHidden() && w->testAttribute( Qt::WA_WState_ExplicitShowHide ); + } +}; + +// When "abusing" QLayouts to lay out items with different geometry from the backing QWidgets, +// some manual work is required to correctly update all the sublayouts. +// This is because all the convenient ways to deal with QLayouts assume QWidgets somewhere. +// What this does is somewhat similar to QLayout::activate(), but it never refers to the parent +// QWidget which has the wrong geometry. +static void invalidateLayoutTree( QLayoutItem *item ) +{ + QLayout *layout = item->layout(); + if ( layout ) { + const int count = layout->count(); + for ( int i = 0; i < count; i++ ) { + invalidateLayoutTree( layout->itemAt( i ) ); + } + } + item->invalidate(); +} + +using namespace KDChart; + +void Chart::Private::slotUnregisterDestroyedLegend( Legend *l ) +{ + chart->takeLegend( l ); +} + +void Chart::Private::slotUnregisterDestroyedHeaderFooter( HeaderFooter* hf ) +{ + chart->takeHeaderFooter( hf ); +} + +void Chart::Private::slotUnregisterDestroyedPlane( AbstractCoordinatePlane* plane ) +{ + coordinatePlanes.removeAll( plane ); + Q_FOREACH ( AbstractCoordinatePlane* p, coordinatePlanes ) { + if ( p->referenceCoordinatePlane() == plane) { + p->setReferenceCoordinatePlane( 0 ); + } + } + plane->layoutPlanes(); +} + +Chart::Private::Private( Chart* chart_ ) + : chart( chart_ ) + , useNewLayoutSystem( false ) + , layout( 0 ) + , vLayout( 0 ) + , planesLayout( 0 ) + , headerLayout( 0 ) + , footerLayout( 0 ) + , dataAndLegendLayout( 0 ) + , leftOuterSpacer( 0 ) + , rightOuterSpacer( 0 ) + , topOuterSpacer( 0 ) + , bottomOuterSpacer( 0 ) + , isFloatingLegendsLayoutDirty( true ) + , isPlanesLayoutDirty( true ) + , globalLeadingLeft( 0 ) + , globalLeadingRight( 0 ) + , globalLeadingTop( 0 ) + , globalLeadingBottom( 0 ) +{ + for ( int row = 0; row < 3; ++row ) { + for ( int column = 0; column < 3; ++column ) { + for ( int i = 0; i < 2; i++ ) { + innerHdFtLayouts[ i ][ row ][ column ] = 0; + } + } + } +} + +Chart::Private::~Private() +{ +} + +enum VisitorState{ Visited, Unknown }; +struct ConnectedComponentsComparator{ + bool operator()( const LayoutGraphNode *lhs, const LayoutGraphNode *rhs ) const + { + return lhs->priority < rhs->priority; + } +}; + +static QVector< LayoutGraphNode* > getPrioritySortedConnectedComponents( QVector< LayoutGraphNode* > &nodeList ) +{ + QVector< LayoutGraphNode* >connectedComponents; + QHash< LayoutGraphNode*, VisitorState > visitedComponents; + Q_FOREACH ( LayoutGraphNode* node, nodeList ) + visitedComponents[ node ] = Unknown; + for ( int i = 0; i < nodeList.size(); ++i ) + { + LayoutGraphNode *curNode = nodeList[ i ]; + LayoutGraphNode *representativeNode = curNode; + if ( visitedComponents[ curNode ] != Visited ) + { + QStack< LayoutGraphNode* > stack; + stack.push( curNode ); + while ( !stack.isEmpty() ) + { + curNode = stack.pop(); + Q_ASSERT( visitedComponents[ curNode ] != Visited ); + visitedComponents[ curNode ] = Visited; + if ( curNode->bottomSuccesor && visitedComponents[ curNode->bottomSuccesor ] != Visited ) + stack.push( curNode->bottomSuccesor ); + if ( curNode->leftSuccesor && visitedComponents[ curNode->leftSuccesor ] != Visited ) + stack.push( curNode->leftSuccesor ); + if ( curNode->sharedSuccesor && visitedComponents[ curNode->sharedSuccesor ] != Visited ) + stack.push( curNode->sharedSuccesor ); + if ( curNode->priority < representativeNode->priority ) + representativeNode = curNode; + } + connectedComponents.append( representativeNode ); + } + } + std::sort( connectedComponents.begin(), connectedComponents.end(), ConnectedComponentsComparator() ); + return connectedComponents; +} + +struct PriorityComparator{ +public: + PriorityComparator( QHash< AbstractCoordinatePlane*, LayoutGraphNode* > mapping ) + : m_mapping( mapping ) + {} + bool operator() ( AbstractCoordinatePlane *lhs, AbstractCoordinatePlane *rhs ) const + { + const LayoutGraphNode *lhsNode = m_mapping[ lhs ]; + Q_ASSERT( lhsNode ); + const LayoutGraphNode *rhsNode = m_mapping[ rhs ]; + Q_ASSERT( rhsNode ); + return lhsNode->priority < rhsNode->priority; + } + + const QHash< AbstractCoordinatePlane*, LayoutGraphNode* > m_mapping; +}; + +void checkExistingAxes( LayoutGraphNode* node ) +{ + if ( node && node->diagramPlane && node->diagramPlane->diagram() ) + { + AbstractCartesianDiagram *diag = qobject_cast< AbstractCartesianDiagram* >( node->diagramPlane->diagram() ); + if ( diag ) + { + Q_FOREACH( const CartesianAxis* axis, diag->axes() ) + { + switch ( axis->position() ) + { + case( CartesianAxis::Top ): + node->topAxesLayout = true; + break; + case( CartesianAxis::Bottom ): + node->bottomAxesLayout = true; + break; + case( CartesianAxis::Left ): + node->leftAxesLayout = true; + break; + case( CartesianAxis::Right ): + node->rightAxesLayout = true; + break; + } + } + } + } +} + +static void mergeNodeAxisInformation( LayoutGraphNode* lhs, LayoutGraphNode* rhs ) +{ + lhs->topAxesLayout |= rhs->topAxesLayout; + rhs->topAxesLayout = lhs->topAxesLayout; + + lhs->bottomAxesLayout |= rhs->bottomAxesLayout; + rhs->bottomAxesLayout = lhs->bottomAxesLayout; + + lhs->leftAxesLayout |= rhs->leftAxesLayout; + rhs->leftAxesLayout = lhs->leftAxesLayout; + + lhs->rightAxesLayout |= rhs->rightAxesLayout; + rhs->rightAxesLayout = lhs->rightAxesLayout; +} + +static CoordinatePlaneList findSharingAxisDiagrams( AbstractCoordinatePlane* plane, + const CoordinatePlaneList& list, + Chart::Private::AxisType type, + QVector< CartesianAxis* >* sharedAxes ) +{ + if ( !plane || !plane->diagram() ) + return CoordinatePlaneList(); + Q_ASSERT( plane ); + Q_ASSERT( plane->diagram() ); + CoordinatePlaneList result; + AbstractCartesianDiagram* diagram = qobject_cast< AbstractCartesianDiagram* >( plane->diagram() ); + if ( !diagram ) + return CoordinatePlaneList(); + + QList< CartesianAxis* > axes; + KDAB_FOREACH( CartesianAxis* axis, diagram->axes() ) { + if ( ( type == Chart::Private::Ordinate && + ( axis->position() == CartesianAxis::Left || axis->position() == CartesianAxis::Right ) ) + || + ( type == Chart::Private::Abscissa && + ( axis->position() == CartesianAxis::Top || axis->position() == CartesianAxis::Bottom ) ) ) { + axes.append( axis ); + } + } + Q_FOREACH( AbstractCoordinatePlane *curPlane, list ) + { + AbstractCartesianDiagram* diagram = + qobject_cast< AbstractCartesianDiagram* > ( curPlane->diagram() ); + if ( !diagram ) + continue; + Q_FOREACH( CartesianAxis* curSearchedAxis, axes ) + { + Q_FOREACH( CartesianAxis* curAxis, diagram->axes() ) + { + if ( curSearchedAxis == curAxis ) + { + result.append( curPlane ); + if ( !sharedAxes->contains( curSearchedAxis ) ) + sharedAxes->append( curSearchedAxis ); + } + } + } + } + + return result; +} + +/** + * this method determines the needed layout of the graph + * taking care of the sharing problematic + * its NOT allowed to have a diagram that shares + * more than one axis in the same direction + */ +QVector< LayoutGraphNode* > Chart::Private::buildPlaneLayoutGraph() +{ + QHash< AbstractCoordinatePlane*, LayoutGraphNode* > planeNodeMapping; + QVector< LayoutGraphNode* > allNodes; + // create all nodes and a mapping between plane and nodes + Q_FOREACH( AbstractCoordinatePlane* curPlane, coordinatePlanes ) + { + if ( curPlane->diagram() ) + { + allNodes.append( new LayoutGraphNode ); + allNodes[ allNodes.size() - 1 ]->diagramPlane = curPlane; + allNodes[ allNodes.size() - 1 ]->priority = allNodes.size(); + checkExistingAxes( allNodes[ allNodes.size() - 1 ] ); + planeNodeMapping[ curPlane ] = allNodes[ allNodes.size() - 1 ]; + } + } + // build the graph connections + Q_FOREACH( LayoutGraphNode* curNode, allNodes ) + { + QVector< CartesianAxis* > sharedAxes; + CoordinatePlaneList xSharedPlanes = findSharingAxisDiagrams( curNode->diagramPlane, coordinatePlanes, Abscissa, &sharedAxes ); + Q_ASSERT( sharedAxes.size() < 2 ); + // TODO duplicated code make a method out of it + if ( sharedAxes.size() == 1 && xSharedPlanes.size() > 1 ) + { + //xSharedPlanes.removeAll( sharedAxes.first()->diagram()->coordinatePlane() ); + //std::sort( xSharedPlanes.begin(), xSharedPlanes.end(), PriorityComparator( planeNodeMapping ) ); + for ( int i = 0; i < xSharedPlanes.size() - 1; ++i ) + { + LayoutGraphNode *tmpNode = planeNodeMapping[ xSharedPlanes[ i ] ]; + Q_ASSERT( tmpNode ); + LayoutGraphNode *tmpNode2 = planeNodeMapping[ xSharedPlanes[ i + 1 ] ]; + Q_ASSERT( tmpNode2 ); + tmpNode->bottomSuccesor = tmpNode2; + } +// if ( sharedAxes.first()->diagram() && sharedAxes.first()->diagram()->coordinatePlane() ) +// { +// LayoutGraphNode *lastNode = planeNodeMapping[ xSharedPlanes.last() ]; +// Q_ASSERT( lastNode ); +// Q_ASSERT( sharedAxes.first()->diagram()->coordinatePlane() ); +// LayoutGraphNode *ownerNode = planeNodeMapping[ sharedAxes.first()->diagram()->coordinatePlane() ]; +// Q_ASSERT( ownerNode ); +// lastNode->bottomSuccesor = ownerNode; +// } + //merge AxisInformation, needs a two pass run + LayoutGraphNode axisInfoNode; + for ( int count = 0; count < 2; ++count ) + { + for ( int i = 0; i < xSharedPlanes.size(); ++i ) + { + mergeNodeAxisInformation( &axisInfoNode, planeNodeMapping[ xSharedPlanes[ i ] ] ); + } + } + } + sharedAxes.clear(); + CoordinatePlaneList ySharedPlanes = findSharingAxisDiagrams( curNode->diagramPlane, coordinatePlanes, Ordinate, &sharedAxes ); + Q_ASSERT( sharedAxes.size() < 2 ); + if ( sharedAxes.size() == 1 && ySharedPlanes.size() > 1 ) + { + //ySharedPlanes.removeAll( sharedAxes.first()->diagram()->coordinatePlane() ); + //std::sort( ySharedPlanes.begin(), ySharedPlanes.end(), PriorityComparator( planeNodeMapping ) ); + for ( int i = 0; i < ySharedPlanes.size() - 1; ++i ) + { + LayoutGraphNode *tmpNode = planeNodeMapping[ ySharedPlanes[ i ] ]; + Q_ASSERT( tmpNode ); + LayoutGraphNode *tmpNode2 = planeNodeMapping[ ySharedPlanes[ i + 1 ] ]; + Q_ASSERT( tmpNode2 ); + tmpNode->leftSuccesor = tmpNode2; + } +// if ( sharedAxes.first()->diagram() && sharedAxes.first()->diagram()->coordinatePlane() ) +// { +// LayoutGraphNode *lastNode = planeNodeMapping[ ySharedPlanes.last() ]; +// Q_ASSERT( lastNode ); +// Q_ASSERT( sharedAxes.first()->diagram()->coordinatePlane() ); +// LayoutGraphNode *ownerNode = planeNodeMapping[ sharedAxes.first()->diagram()->coordinatePlane() ]; +// Q_ASSERT( ownerNode ); +// lastNode->bottomSuccesor = ownerNode; +// } + //merge AxisInformation, needs a two pass run + LayoutGraphNode axisInfoNode; + for ( int count = 0; count < 2; ++count ) + { + for ( int i = 0; i < ySharedPlanes.size(); ++i ) + { + mergeNodeAxisInformation( &axisInfoNode, planeNodeMapping[ ySharedPlanes[ i ] ] ); + } + } + } + sharedAxes.clear(); + if ( curNode->diagramPlane->referenceCoordinatePlane() ) + curNode->sharedSuccesor = planeNodeMapping[ curNode->diagramPlane->referenceCoordinatePlane() ]; + } + + return allNodes; +} + +QHash Chart::Private::buildPlaneLayoutInfos() +{ + /* There are two ways in which planes can be caused to interact in + * where they are put layouting wise: The first is the reference plane. If + * such a reference plane is set, on a plane, it will use the same cell in the + * layout as that one. In addition to this, planes can share an axis. In that case + * they will be laid out in relation to each other as suggested by the position + * of the axis. If, for example Plane1 and Plane2 share an axis at position Left, + * that will result in the layout: Axis Plane1 Plane 2, vertically. If Plane1 + * also happens to be Plane2's referece plane, both planes are drawn over each + * other. The reference plane concept allows two planes to share the same space + * even if neither has any axis, and in case there are shared axis, it is used + * to decided, whether the planes should be painted on top of each other or + * laid out vertically or horizontally next to each other. */ + QHash axisInfos; + QHash planeInfos; + Q_FOREACH(AbstractCoordinatePlane* plane, coordinatePlanes ) { + PlaneInfo p; + // first check if we share space with another plane + p.referencePlane = plane->referenceCoordinatePlane(); + planeInfos.insert( plane, p ); + + Q_FOREACH( AbstractDiagram* abstractDiagram, plane->diagrams() ) { + AbstractCartesianDiagram* diagram = + qobject_cast ( abstractDiagram ); + if ( !diagram ) { + continue; + } + + Q_FOREACH( CartesianAxis* axis, diagram->axes() ) { + if ( !axisInfos.contains( axis ) ) { + /* If this is the first time we see this axis, add it, with the + * current plane. The first plane added to the chart that has + * the axis associated with it thus "owns" it, and decides about + * layout. */ + AxisInfo i; + i.plane = plane; + axisInfos.insert( axis, i ); + } else { + AxisInfo i = axisInfos[axis]; + if ( i.plane == plane ) { + continue; // we don't want duplicates, only shared + } + + /* The user expects diagrams to be added on top, and to the right + * so that horizontally we need to move the new diagram, vertically + * the reference one. */ + PlaneInfo pi = planeInfos[plane]; + // plane-to-plane linking overrides linking via axes + if ( !pi.referencePlane ) { + // we're not the first plane to see this axis, mark us as a slave + pi.referencePlane = i.plane; + if ( axis->position() == CartesianAxis::Left || + axis->position() == CartesianAxis::Right ) { + pi.horizontalOffset += 1; + } + planeInfos[plane] = pi; + + pi = planeInfos[i.plane]; + if ( axis->position() == CartesianAxis::Top || + axis->position() == CartesianAxis::Bottom ) { + pi.verticalOffset += 1; + } + + planeInfos[i.plane] = pi; + } + } + } + } + // Create a new grid layout for each plane that has no reference. + p = planeInfos[plane]; + if ( p.referencePlane == 0 ) { + p.gridLayout = new QGridLayout(); + p.gridLayout->setMargin( 0 ); + planeInfos[plane] = p; + } + } + return planeInfos; +} + +void Chart::Private::slotLayoutPlanes() +{ + /*TODO make sure this is really needed */ + const QBoxLayout::Direction oldPlanesDirection = planesLayout ? planesLayout->direction() + : QBoxLayout::TopToBottom; + if ( planesLayout && dataAndLegendLayout ) + dataAndLegendLayout->removeItem( planesLayout ); + + const bool hadPlanesLayout = planesLayout != 0; + int left, top, right, bottom; + if ( hadPlanesLayout ) + planesLayout->getContentsMargins(&left, &top, &right, &bottom); + + KDAB_FOREACH( KDChart::AbstractLayoutItem* plane, planeLayoutItems ) { + plane->removeFromParentLayout(); + } + //TODO they should get a correct parent, but for now it works + KDAB_FOREACH( KDChart::AbstractLayoutItem* plane, planeLayoutItems ) { + if ( dynamic_cast< KDChart::AutoSpacerLayoutItem* >( plane ) ) + delete plane; + } + + planeLayoutItems.clear(); + delete planesLayout; + //hint: The direction is configurable by the user now, as + // we are using a QBoxLayout rather than a QVBoxLayout. (khz, 2007/04/25) + planesLayout = new QBoxLayout( oldPlanesDirection ); + + isPlanesLayoutDirty = true; // here we create the layouts; we need to "run" them before painting + + if ( useNewLayoutSystem ) + { + gridPlaneLayout = new QGridLayout; + planesLayout->addLayout( gridPlaneLayout ); + + if (hadPlanesLayout) + planesLayout->setContentsMargins(left, top, right, bottom); + planesLayout->setObjectName( QString::fromLatin1( "planesLayout" ) ); + + /* First go through all planes and all axes and figure out whether the planes + * need to coordinate. If they do, they share a grid layout, if not, each + * get their own. See buildPlaneLayoutInfos() for more details. */ + + QVector< LayoutGraphNode* > vals = buildPlaneLayoutGraph(); + //qDebug() << Q_FUNC_INFO << "GraphNodes" << vals.size(); + QVector< LayoutGraphNode* > connectedComponents = getPrioritySortedConnectedComponents( vals ); + //qDebug() << Q_FUNC_INFO << "SubGraphs" << connectedComponents.size(); + int row = 0; + int col = 0; + QHash< CartesianAxis*, bool > layoutedAxes; + for ( int i = 0; i < connectedComponents.size(); ++i ) + { + LayoutGraphNode *curComponent = connectedComponents[ i ]; + for ( LayoutGraphNode *curRowComponent = curComponent; curRowComponent; curRowComponent = curRowComponent->bottomSuccesor ) + { + col = 0; + for ( LayoutGraphNode *curColComponent = curRowComponent; curColComponent; curColComponent = curColComponent->leftSuccesor ) + { + Q_ASSERT( curColComponent->diagramPlane->diagrams().size() == 1 ); + Q_FOREACH( AbstractDiagram* diagram, curColComponent->diagramPlane->diagrams() ) + { + const int planeRowOffset = 1;//curColComponent->topAxesLayout ? 1 : 0; + const int planeColOffset = 1;//curColComponent->leftAxesLayout ? 1 : 0; + //qDebug() << Q_FUNC_INFO << row << col << planeRowOffset << planeColOffset; + + //qDebug() << Q_FUNC_INFO << row + planeRowOffset << col + planeColOffset; + planeLayoutItems << curColComponent->diagramPlane; + AbstractCartesianDiagram *cartDiag = qobject_cast< AbstractCartesianDiagram* >( diagram ); + if ( cartDiag ) + { + gridPlaneLayout->addItem( curColComponent->diagramPlane, row + planeRowOffset, col + planeColOffset, 2, 2 ); + curColComponent->diagramPlane->setParentLayout( gridPlaneLayout ); + QHBoxLayout *leftLayout = 0; + QHBoxLayout *rightLayout = 0; + QVBoxLayout *topLayout = 0; + QVBoxLayout *bottomLayout = 0; + if ( curComponent->sharedSuccesor ) + { + gridPlaneLayout->addItem( curColComponent->sharedSuccesor->diagramPlane, row + planeRowOffset, col + planeColOffset, 2, 2 ); + curColComponent->sharedSuccesor->diagramPlane->setParentLayout( gridPlaneLayout ); + planeLayoutItems << curColComponent->sharedSuccesor->diagramPlane; + } + Q_FOREACH( CartesianAxis* axis, cartDiag->axes() ) + { + if ( axis->isAbscissa() ) + { + if ( curColComponent->bottomSuccesor ) + continue; + } + if ( layoutedAxes.contains( axis ) ) + continue; + // if ( axis->diagram() != diagram ) + // continue; + switch ( axis->position() ) + { + case( CartesianAxis::Top ): + if ( !topLayout ) + topLayout = new QVBoxLayout; + topLayout->addItem( axis ); + axis->setParentLayout( topLayout ); + break; + case( CartesianAxis::Bottom ): + if ( !bottomLayout ) + bottomLayout = new QVBoxLayout; + bottomLayout->addItem( axis ); + axis->setParentLayout( bottomLayout ); + break; + case( CartesianAxis::Left ): + if ( !leftLayout ) + leftLayout = new QHBoxLayout; + leftLayout->addItem( axis ); + axis->setParentLayout( leftLayout ); + break; + case( CartesianAxis::Right ): + if ( !rightLayout ) + { + rightLayout = new QHBoxLayout; + } + rightLayout->addItem( axis ); + axis->setParentLayout( rightLayout ); + break; + } + planeLayoutItems << axis; + layoutedAxes[ axis ] = true; + } + if ( leftLayout ) + gridPlaneLayout->addLayout( leftLayout, row + planeRowOffset, col, 2, 1 ); + if ( rightLayout ) + gridPlaneLayout->addLayout( rightLayout, row, col + planeColOffset + 2, 2, 1 ); + if ( topLayout ) + gridPlaneLayout->addLayout( topLayout, row, col + planeColOffset, 1, 2 ); + if ( bottomLayout ) + gridPlaneLayout->addLayout( bottomLayout, row + planeRowOffset + 2, col + planeColOffset, 1, 2 ); + } + else + { + gridPlaneLayout->addItem( curColComponent->diagramPlane, row, col, 4, 4 ); + curColComponent->diagramPlane->setParentLayout( gridPlaneLayout ); + } + col += planeColOffset + 2 + ( 1 ); + } + } + int axisOffset = 2;//curRowComponent->topAxesLayout ? 1 : 0; + //axisOffset += curRowComponent->bottomAxesLayout ? 1 : 0; + const int rowOffset = axisOffset + 2; + row += rowOffset; + } + + // if ( planesLayout->direction() == QBoxLayout::TopToBottom ) + // ++row; + // else + // ++col; + } + + qDeleteAll( vals ); + // re-add our grid(s) to the chart's layout + if ( dataAndLegendLayout ) { + dataAndLegendLayout->addLayout( planesLayout, 1, 1 ); + dataAndLegendLayout->setRowStretch( 1, 1000 ); + dataAndLegendLayout->setColumnStretch( 1, 1000 ); + } + slotResizePlanes(); +#ifdef NEW_LAYOUT_DEBUG + for ( int i = 0; i < gridPlaneLayout->rowCount(); ++i ) + { + for ( int j = 0; j < gridPlaneLayout->columnCount(); ++j ) + { + if ( gridPlaneLayout->itemAtPosition( i, j ) ) + qDebug() << Q_FUNC_INFO << "item at" << i << j << gridPlaneLayout->itemAtPosition( i, j )->geometry(); + else + qDebug() << Q_FUNC_INFO << "item at" << i << j << "no item present"; + } + } + //qDebug() << Q_FUNC_INFO << "Relayout ended"; +#endif + } else { + if ( hadPlanesLayout ) { + planesLayout->setContentsMargins( left, top, right, bottom ); + } + + planesLayout->setMargin( 0 ); + planesLayout->setSpacing( 0 ); + planesLayout->setObjectName( QString::fromLatin1( "planesLayout" ) ); + + /* First go through all planes and all axes and figure out whether the planes + * need to coordinate. If they do, they share a grid layout, if not, each + * gets their own. See buildPlaneLayoutInfos() for more details. */ + QHash planeInfos = buildPlaneLayoutInfos(); + QHash axisInfos; + KDAB_FOREACH( AbstractCoordinatePlane* plane, coordinatePlanes ) { + Q_ASSERT( planeInfos.contains(plane) ); + PlaneInfo& pi = planeInfos[ plane ]; + const int column = pi.horizontalOffset; + const int row = pi.verticalOffset; + //qDebug() << "processing plane at column" << column << "and row" << row; + QGridLayout *planeLayout = pi.gridLayout; + + if ( !planeLayout ) { + PlaneInfo& refPi = pi; + // if this plane is sharing an axis with another one, recursively check for the original plane and use + // the grid of that as planeLayout. + while ( !planeLayout && refPi.referencePlane ) { + refPi = planeInfos[refPi.referencePlane]; + planeLayout = refPi.gridLayout; + } + Q_ASSERT_X( planeLayout, + "Chart::Private::slotLayoutPlanes()", + "Invalid reference plane. Please check that the reference plane has been added to the Chart." ); + } else { + planesLayout->addLayout( planeLayout ); + } + + /* Put the plane in the center of the layout. If this is our own, that's + * the middle of the layout, if we are sharing, it's a cell in the center + * column of the shared grid. */ + planeLayoutItems << plane; + plane->setParentLayout( planeLayout ); + planeLayout->addItem( plane, row, column, 1, 1, 0 ); + //qDebug() << "Chart slotLayoutPlanes() calls planeLayout->addItem("<< row << column << ")"; + planeLayout->setRowStretch( row, 2 ); + planeLayout->setColumnStretch( column, 2 ); + KDAB_FOREACH( AbstractDiagram* abstractDiagram, plane->diagrams() ) + { + AbstractCartesianDiagram* diagram = + qobject_cast< AbstractCartesianDiagram* >( abstractDiagram ); + if ( !diagram ) { + continue; // FIXME what about polar ? + } + + if ( pi.referencePlane != 0 ) + { + pi.topAxesLayout = planeInfos[ pi.referencePlane ].topAxesLayout; + pi.bottomAxesLayout = planeInfos[ pi.referencePlane ].bottomAxesLayout; + pi.leftAxesLayout = planeInfos[ pi.referencePlane ].leftAxesLayout; + pi.rightAxesLayout = planeInfos[ pi.referencePlane ].rightAxesLayout; + } + + // collect all axes of a kind into sublayouts + if ( pi.topAxesLayout == 0 ) + { + pi.topAxesLayout = new QVBoxLayout; + pi.topAxesLayout->setMargin( 0 ); + pi.topAxesLayout->setObjectName( QString::fromLatin1( "topAxesLayout" ) ); + } + if ( pi.bottomAxesLayout == 0 ) + { + pi.bottomAxesLayout = new QVBoxLayout; + pi.bottomAxesLayout->setMargin( 0 ); + pi.bottomAxesLayout->setObjectName( QString::fromLatin1( "bottomAxesLayout" ) ); + } + if ( pi.leftAxesLayout == 0 ) + { + pi.leftAxesLayout = new QHBoxLayout; + pi.leftAxesLayout->setMargin( 0 ); + pi.leftAxesLayout->setObjectName( QString::fromLatin1( "leftAxesLayout" ) ); + } + if ( pi.rightAxesLayout == 0 ) + { + pi.rightAxesLayout = new QHBoxLayout; + pi.rightAxesLayout->setMargin( 0 ); + pi.rightAxesLayout->setObjectName( QString::fromLatin1( "rightAxesLayout" ) ); + } + + if ( pi.referencePlane != 0 ) + { + planeInfos[ pi.referencePlane ].topAxesLayout = pi.topAxesLayout; + planeInfos[ pi.referencePlane ].bottomAxesLayout = pi.bottomAxesLayout; + planeInfos[ pi.referencePlane ].leftAxesLayout = pi.leftAxesLayout; + planeInfos[ pi.referencePlane ].rightAxesLayout = pi.rightAxesLayout; + } + + //pi.leftAxesLayout->setSizeConstraint( QLayout::SetFixedSize ); + KDAB_FOREACH( CartesianAxis* axis, diagram->axes() ) { + if ( axisInfos.contains( axis ) ) { + continue; // already laid out this one + } + Q_ASSERT ( axis ); + axis->setCachedSizeDirty(); + //qDebug() << "--------------- axis added to planeLayoutItems -----------------"; + planeLayoutItems << axis; + + switch ( axis->position() ) { + case CartesianAxis::Top: + axis->setParentLayout( pi.topAxesLayout ); + pi.topAxesLayout->addItem( axis ); + break; + case CartesianAxis::Bottom: + axis->setParentLayout( pi.bottomAxesLayout ); + pi.bottomAxesLayout->addItem( axis ); + break; + case CartesianAxis::Left: + axis->setParentLayout( pi.leftAxesLayout ); + pi.leftAxesLayout->addItem( axis ); + break; + case CartesianAxis::Right: + axis->setParentLayout( pi.rightAxesLayout ); + pi.rightAxesLayout->addItem( axis ); + break; + default: + Q_ASSERT_X( false, "Chart::paintEvent", "unknown axis position" ); + break; + }; + axisInfos.insert( axis, AxisInfo() ); + } + /* Put each stack of axes-layouts in the cells surrounding the + * associated plane. We are laying out in the oder the planes + * were added, and the first one gets to lay out shared axes. + * Private axes go here as well, of course. */ + + if ( !pi.topAxesLayout->parent() ) { + planeLayout->addLayout( pi.topAxesLayout, row - 1, column ); + } + if ( !pi.bottomAxesLayout->parent() ) { + planeLayout->addLayout( pi.bottomAxesLayout, row + 1, column ); + } + if ( !pi.leftAxesLayout->parent() ) { + planeLayout->addLayout( pi.leftAxesLayout, row, column - 1 ); + } + if ( !pi.rightAxesLayout->parent() ) { + planeLayout->addLayout( pi.rightAxesLayout,row, column + 1 ); + } + } + + // use up to four auto-spacer items in the corners around the diagrams: + #define ADD_AUTO_SPACER_IF_NEEDED( \ + spacerRow, spacerColumn, hLayoutIsAtTop, hLayout, vLayoutIsAtLeft, vLayout ) \ + { \ + if ( hLayout || vLayout ) { \ + AutoSpacerLayoutItem * spacer \ + = new AutoSpacerLayoutItem( hLayoutIsAtTop, hLayout, vLayoutIsAtLeft, vLayout ); \ + planeLayout->addItem( spacer, spacerRow, spacerColumn, 1, 1 ); \ + spacer->setParentLayout( planeLayout ); \ + planeLayoutItems << spacer; \ + } \ + } + + if ( plane->isCornerSpacersEnabled() ) { + ADD_AUTO_SPACER_IF_NEEDED( row - 1, column - 1, false, pi.leftAxesLayout, false, pi.topAxesLayout ) + ADD_AUTO_SPACER_IF_NEEDED( row + 1, column - 1, true, pi.leftAxesLayout, false, pi.bottomAxesLayout ) + ADD_AUTO_SPACER_IF_NEEDED( row - 1, column + 1, false, pi.rightAxesLayout, true, pi.topAxesLayout ) + ADD_AUTO_SPACER_IF_NEEDED( row + 1, column + 1, true, pi.rightAxesLayout, true, pi.bottomAxesLayout ) + } + } + // re-add our grid(s) to the chart's layout + if ( dataAndLegendLayout ) { + dataAndLegendLayout->addLayout( planesLayout, 1, 1 ); + dataAndLegendLayout->setRowStretch( 1, 1000 ); + dataAndLegendLayout->setColumnStretch( 1, 1000 ); + } + + slotResizePlanes(); + } +} + +void Chart::Private::createLayouts() +{ + // The toplevel layout provides the left and right global margins + layout = new QHBoxLayout( chart ); + layout->setMargin( 0 ); + layout->setObjectName( QString::fromLatin1( "Chart::Private::layout" ) ); + layout->addSpacing( globalLeadingLeft ); + leftOuterSpacer = layout->itemAt( layout->count() - 1 )->spacerItem(); + + // The vLayout provides top and bottom global margins and lays + // out headers, footers and the diagram area. + vLayout = new QVBoxLayout(); + vLayout->setMargin( 0 ); + vLayout->setObjectName( QString::fromLatin1( "vLayout" ) ); + + layout->addLayout( vLayout, 1000 ); + layout->addSpacing( globalLeadingRight ); + rightOuterSpacer = layout->itemAt( layout->count() - 1 )->spacerItem(); + + // 1. the spacing above the header area + vLayout->addSpacing( globalLeadingTop ); + topOuterSpacer = vLayout->itemAt( vLayout->count() - 1 )->spacerItem(); + // 2. the header area + headerLayout = new QGridLayout(); + headerLayout->setMargin( 0 ); + vLayout->addLayout( headerLayout ); + // 3. the area containing coordinate planes, axes, and legends + dataAndLegendLayout = new QGridLayout(); + dataAndLegendLayout->setMargin( 0 ); + dataAndLegendLayout->setObjectName( QString::fromLatin1( "dataAndLegendLayout" ) ); + vLayout->addLayout( dataAndLegendLayout, 1000 ); + // 4. the footer area + footerLayout = new QGridLayout(); + footerLayout->setMargin( 0 ); + footerLayout->setObjectName( QString::fromLatin1( "footerLayout" ) ); + vLayout->addLayout( footerLayout ); + + // 5. Prepare the header / footer layout cells: + // Each of the 9 header cells (the 9 footer cells) + // contain their own QVBoxLayout + // since there can be more than one header (footer) per cell. + for ( int row = 0; row < 3; ++row ) { + for ( int column = 0; column < 3; ++ column ) { + const Qt::Alignment align = s_gridAlignments[ row ][ column ]; + for ( int headOrFoot = 0; headOrFoot < 2; headOrFoot++ ) { + QVBoxLayout* innerLayout = new QVBoxLayout(); + innerLayout->setMargin( 0 ); + innerLayout->setAlignment( align ); + innerHdFtLayouts[ headOrFoot ][ row ][ column ] = innerLayout; + + QGridLayout* outerLayout = headOrFoot == 0 ? headerLayout : footerLayout; + outerLayout->addLayout( innerLayout, row, column, align ); + } + } + } + + // 6. the spacing below the footer area + vLayout->addSpacing( globalLeadingBottom ); + bottomOuterSpacer = vLayout->itemAt( vLayout->count() - 1 )->spacerItem(); + + // the data+axes area + dataAndLegendLayout->addLayout( planesLayout, 1, 1 ); + dataAndLegendLayout->setRowStretch( 1, 1 ); + dataAndLegendLayout->setColumnStretch( 1, 1 ); +} + +void Chart::Private::slotResizePlanes() +{ + if ( !dataAndLegendLayout ) { + return; + } + if ( !overrideSize.isValid() ) { + // activate() takes the size from the layout's parent QWidget, which is not updated when overrideSize + // is set. So don't let the layout grab the wrong size in that case. + // When overrideSize *is* set, we call layout->setGeometry() in paint( QPainter*, const QRect& ), + // which also "activates" the layout in the sense that it distributes space internally. + layout->activate(); + } + // Adapt diagram drawing to the new size + KDAB_FOREACH (AbstractCoordinatePlane* plane, coordinatePlanes ) { + plane->layoutDiagrams(); + } +} + +void Chart::Private::updateDirtyLayouts() +{ + if ( isPlanesLayoutDirty ) { + Q_FOREACH ( AbstractCoordinatePlane* p, coordinatePlanes ) { + p->setGridNeedsRecalculate(); + p->layoutPlanes(); + p->layoutDiagrams(); + } + } + if ( isPlanesLayoutDirty || isFloatingLegendsLayoutDirty ) { + chart->reLayoutFloatingLegends(); + } + isPlanesLayoutDirty = false; + isFloatingLegendsLayoutDirty = false; +} + +void Chart::Private::reapplyInternalLayouts() +{ + QRect geo = layout->geometry(); + + invalidateLayoutTree( layout ); + layout->setGeometry( geo ); + slotResizePlanes(); +} + +void Chart::Private::paintAll( QPainter* painter ) +{ + updateDirtyLayouts(); + + QRect rect( QPoint( 0, 0 ), overrideSize.isValid() ? overrideSize : chart->size() ); + + //qDebug() << this<<"::paintAll() uses layout size" << currentLayoutSize; + + // Paint the background (if any) + KDChart::AbstractAreaBase::paintBackgroundAttributes( *painter, rect, backgroundAttributes ); + // Paint the frame (if any) + KDChart::AbstractAreaBase::paintFrameAttributes( *painter, rect, frameAttributes ); + + chart->reLayoutFloatingLegends(); + + KDAB_FOREACH( KDChart::AbstractLayoutItem* planeLayoutItem, planeLayoutItems ) { + planeLayoutItem->paintAll( *painter ); + } + KDAB_FOREACH( KDChart::TextArea* textLayoutItem, textLayoutItems ) { + textLayoutItem->paintAll( *painter ); + } + KDAB_FOREACH( Legend *legend, legends ) { + const bool hidden = legend->isHidden() && legend->testAttribute( Qt::WA_WState_ExplicitShowHide ); + if ( !hidden ) { + //qDebug() << "painting legend at " << legend->geometry(); + legend->paintIntoRect( *painter, legend->geometry() ); + } + } +} + +// ******** Chart interface implementation *********** + +#define d d_func() + +Chart::Chart ( QWidget* parent ) + : QWidget ( parent ) + , _d( new Private( this ) ) +{ +#if defined KDAB_EVAL + EvalDialog::checkEvalLicense( "KD Chart" ); +#endif + + FrameAttributes frameAttrs; +// no frame per default... +// frameAttrs.setVisible( true ); + frameAttrs.setPen( QPen( Qt::black ) ); + frameAttrs.setPadding( 1 ); + setFrameAttributes( frameAttrs ); + + addCoordinatePlane( new CartesianCoordinatePlane ( this ) ); + + d->createLayouts(); +} + +Chart::~Chart() +{ + delete d; +} + +void Chart::setFrameAttributes( const FrameAttributes &a ) +{ + d->frameAttributes = a; +} + +FrameAttributes Chart::frameAttributes() const +{ + return d->frameAttributes; +} + +void Chart::setBackgroundAttributes( const BackgroundAttributes &a ) +{ + d->backgroundAttributes = a; +} + +BackgroundAttributes Chart::backgroundAttributes() const +{ + return d->backgroundAttributes; +} + +//TODO KDChart 3.0; change QLayout into QBoxLayout::Direction +void Chart::setCoordinatePlaneLayout( QLayout * layout ) +{ + if (layout == d->planesLayout) + return; + if (d->planesLayout) { + // detach all QLayoutItem's the previous planesLayout has cause + // otherwise deleting the planesLayout would delete them too. + for(int i = d->planesLayout->count() - 1; i >= 0; --i) { + d->planesLayout->takeAt(i); + } + delete d->planesLayout; + } + d->planesLayout = qobject_cast( layout ); + d->slotLayoutPlanes(); +} + +QLayout* Chart::coordinatePlaneLayout() +{ + return d->planesLayout; +} + +AbstractCoordinatePlane* Chart::coordinatePlane() +{ + if ( d->coordinatePlanes.isEmpty() ) { + qWarning() << "Chart::coordinatePlane: warning: no coordinate plane defined."; + return 0; + } else { + return d->coordinatePlanes.first(); + } +} + +CoordinatePlaneList Chart::coordinatePlanes() +{ + return d->coordinatePlanes; +} + +void Chart::addCoordinatePlane( AbstractCoordinatePlane* plane ) +{ + // Append + insertCoordinatePlane( d->coordinatePlanes.count(), plane ); +} + +void Chart::insertCoordinatePlane( int index, AbstractCoordinatePlane* plane ) +{ + if ( index < 0 || index > d->coordinatePlanes.count() ) { + return; + } + + connect( plane, SIGNAL( destroyedCoordinatePlane( AbstractCoordinatePlane* ) ), + d, SLOT( slotUnregisterDestroyedPlane( AbstractCoordinatePlane* ) ) ); + connect( plane, SIGNAL( needUpdate() ), this, SLOT( update() ) ); + connect( plane, SIGNAL( needRelayout() ), d, SLOT( slotResizePlanes() ) ) ; + connect( plane, SIGNAL( needLayoutPlanes() ), d, SLOT( slotLayoutPlanes() ) ) ; + connect( plane, SIGNAL( propertiesChanged() ),this, SIGNAL( propertiesChanged() ) ); + d->coordinatePlanes.insert( index, plane ); + plane->setParent( this ); + d->slotLayoutPlanes(); +} + +void Chart::replaceCoordinatePlane( AbstractCoordinatePlane* plane, + AbstractCoordinatePlane* oldPlane_ ) +{ + if ( plane && oldPlane_ != plane ) { + AbstractCoordinatePlane* oldPlane = oldPlane_; + if ( d->coordinatePlanes.count() ) { + if ( ! oldPlane ) { + oldPlane = d->coordinatePlanes.first(); + if ( oldPlane == plane ) + return; + } + takeCoordinatePlane( oldPlane ); + } + delete oldPlane; + addCoordinatePlane( plane ); + } +} + +void Chart::takeCoordinatePlane( AbstractCoordinatePlane* plane ) +{ + const int idx = d->coordinatePlanes.indexOf( plane ); + if ( idx != -1 ) { + d->coordinatePlanes.takeAt( idx ); + disconnect( plane, 0, d, 0 ); + disconnect( plane, 0, this, 0 ); + plane->removeFromParentLayout(); + plane->setParent( 0 ); + d->mouseClickedPlanes.removeAll(plane); + } + d->slotLayoutPlanes(); + // Need to emit the signal: In case somebody has connected the signal + // to her own slot for e.g. calling update() on a widget containing the chart. + emit propertiesChanged(); +} + +void Chart::setGlobalLeading( int left, int top, int right, int bottom ) +{ + setGlobalLeadingLeft( left ); + setGlobalLeadingTop( top ); + setGlobalLeadingRight( right ); + setGlobalLeadingBottom( bottom ); +} + +void Chart::setGlobalLeadingLeft( int leading ) +{ + d->globalLeadingLeft = leading; + d->leftOuterSpacer->changeSize( leading, 0, QSizePolicy::Fixed, QSizePolicy::Minimum ); + d->reapplyInternalLayouts(); +} + +int Chart::globalLeadingLeft() const +{ + return d->globalLeadingLeft; +} + +void Chart::setGlobalLeadingTop( int leading ) +{ + d->globalLeadingTop = leading; + d->topOuterSpacer->changeSize( 0, leading, QSizePolicy::Minimum, QSizePolicy::Fixed ); + d->reapplyInternalLayouts(); +} + +int Chart::globalLeadingTop() const +{ + return d->globalLeadingTop; +} + +void Chart::setGlobalLeadingRight( int leading ) +{ + d->globalLeadingRight = leading; + d->rightOuterSpacer->changeSize( leading, 0, QSizePolicy::Fixed, QSizePolicy::Minimum ); + d->reapplyInternalLayouts(); +} + +int Chart::globalLeadingRight() const +{ + return d->globalLeadingRight; +} + +void Chart::setGlobalLeadingBottom( int leading ) +{ + d->globalLeadingBottom = leading; + d->bottomOuterSpacer->changeSize( 0, leading, QSizePolicy::Minimum, QSizePolicy::Fixed ); + d->reapplyInternalLayouts(); +} + +int Chart::globalLeadingBottom() const +{ + return d->globalLeadingBottom; +} + +void Chart::paint( QPainter* painter, const QRect& target ) +{ + if ( target.isEmpty() || !painter ) { + return; + } + + QPaintDevice* prevDevice = GlobalMeasureScaling::paintDevice(); + GlobalMeasureScaling::setPaintDevice( painter->device() ); + + // Output on a widget + if ( dynamic_cast< QWidget* >( painter->device() ) != 0 ) { + GlobalMeasureScaling::setFactors( qreal( target.width() ) / qreal( geometry().size().width() ), + qreal( target.height() ) / qreal( geometry().size().height() ) ); + } else { + // Output onto a QPixmap + PrintingParameters::setScaleFactor( qreal( painter->device()->logicalDpiX() ) / qreal( logicalDpiX() ) ); + + const qreal resX = qreal( logicalDpiX() ) / qreal( painter->device()->logicalDpiX() ); + const qreal resY = qreal( logicalDpiY() ) / qreal( painter->device()->logicalDpiY() ); + + GlobalMeasureScaling::setFactors( qreal( target.width() ) / qreal( geometry().size().width() ) * resX, + qreal( target.height() ) / qreal( geometry().size().height() ) * resY ); + } + + const QPoint translation = target.topLeft(); + painter->translate( translation ); + + // the following layout logic has the disadvantage that repeatedly calling this method can + // cause a relayout every time, but since this method's main use seems to be printing, the + // gratuitous relayouts shouldn't be much of a performance problem. + const bool differentSize = target.size() != size(); + QRect oldGeometry; + if ( differentSize ) { + oldGeometry = geometry(); + d->isPlanesLayoutDirty = true; + d->isFloatingLegendsLayoutDirty = true; + invalidateLayoutTree( d->dataAndLegendLayout ); + d->dataAndLegendLayout->setGeometry( QRect( QPoint(), target.size() ) ); + } + + d->overrideSize = target.size(); + d->paintAll( painter ); + d->overrideSize = QSize(); + + if ( differentSize ) { + invalidateLayoutTree( d->dataAndLegendLayout ); + d->dataAndLegendLayout->setGeometry( oldGeometry ); + d->isPlanesLayoutDirty = true; + d->isFloatingLegendsLayoutDirty = true; + } + + // for debugging + // painter->setPen( QPen( Qt::blue, 8 ) ); + // painter->drawRect( target ); + + painter->translate( -translation.x(), -translation.y() ); + + GlobalMeasureScaling::instance()->resetFactors(); + PrintingParameters::resetScaleFactor(); + GlobalMeasureScaling::setPaintDevice( prevDevice ); +} + +void Chart::resizeEvent ( QResizeEvent* event ) +{ + d->isPlanesLayoutDirty = true; + d->isFloatingLegendsLayoutDirty = true; + QWidget::resizeEvent( event ); +} + +void Chart::reLayoutFloatingLegends() +{ + KDAB_FOREACH( Legend *legend, d->legends ) { + const bool hidden = legend->isHidden() && legend->testAttribute( Qt::WA_WState_ExplicitShowHide ); + if ( legend->position().isFloating() && !hidden ) { + // resize the legend + const QSize legendSize( legend->sizeHint() ); + legend->setGeometry( QRect( legend->geometry().topLeft(), legendSize ) ); + // find the legends corner point (reference point plus any paddings) + const RelativePosition relPos( legend->floatingPosition() ); + QPointF pt( relPos.calculatedPoint( size() ) ); + //qDebug() << pt; + // calculate the legend's top left point + const Qt::Alignment alignTopLeft = Qt::AlignBottom | Qt::AlignLeft; + if ( (relPos.alignment() & alignTopLeft) != alignTopLeft ) { + if ( relPos.alignment() & Qt::AlignRight ) + pt.rx() -= legendSize.width(); + else if ( relPos.alignment() & Qt::AlignHCenter ) + pt.rx() -= 0.5 * legendSize.width(); + + if ( relPos.alignment() & Qt::AlignBottom ) + pt.ry() -= legendSize.height(); + else if ( relPos.alignment() & Qt::AlignVCenter ) + pt.ry() -= 0.5 * legendSize.height(); + } + //qDebug() << pt << endl; + legend->move( static_cast(pt.x()), static_cast(pt.y()) ); + } + } +} + + +void Chart::paintEvent( QPaintEvent* ) +{ + QPainter painter( this ); + d->paintAll( &painter ); + emit finishedDrawing(); +} + +void Chart::addHeaderFooter( HeaderFooter* hf ) +{ + Q_ASSERT( hf->type() == HeaderFooter::Header || hf->type() == HeaderFooter::Footer ); + int row; + int column; + getRowAndColumnForPosition( hf->position().value(), &row, &column ); + if ( row == -1 ) { + qWarning( "Unknown header/footer position" ); + return; + } + + d->headerFooters.append( hf ); + d->textLayoutItems.append( hf ); + connect( hf, SIGNAL( destroyedHeaderFooter( HeaderFooter* ) ), + d, SLOT( slotUnregisterDestroyedHeaderFooter( HeaderFooter* ) ) ); + connect( hf, SIGNAL( positionChanged( HeaderFooter* ) ), + d, SLOT( slotHeaderFooterPositionChanged( HeaderFooter* ) ) ); + + // set the text attributes (why?) + + TextAttributes textAttrs( hf->textAttributes() ); + KDChart::Measure measure( textAttrs.fontSize() ); + measure.setRelativeMode( this, KDChartEnums::MeasureOrientationMinimum ); + measure.setValue( 20 ); + textAttrs.setFontSize( measure ); + hf->setTextAttributes( textAttrs ); + + // add it to the appropriate layout + + int innerLayoutIdx = hf->type() == HeaderFooter::Header ? 0 : 1; + QVBoxLayout* headerFooterLayout = d->innerHdFtLayouts[ innerLayoutIdx ][ row ][ column ]; + + hf->setParentLayout( headerFooterLayout ); + hf->setAlignment( s_gridAlignments[ row ][ column ] ); + headerFooterLayout->addItem( hf ); + + d->slotResizePlanes(); +} + +void Chart::replaceHeaderFooter( HeaderFooter* headerFooter, + HeaderFooter* oldHeaderFooter_ ) +{ + if ( headerFooter && oldHeaderFooter_ != headerFooter ) { + HeaderFooter* oldHeaderFooter = oldHeaderFooter_; + if ( d->headerFooters.count() ) { + if ( ! oldHeaderFooter ) { + oldHeaderFooter = d->headerFooters.first(); + if ( oldHeaderFooter == headerFooter ) + return; + } + takeHeaderFooter( oldHeaderFooter ); + } + delete oldHeaderFooter; + addHeaderFooter( headerFooter ); + } +} + +void Chart::takeHeaderFooter( HeaderFooter* headerFooter ) +{ + const int idx = d->headerFooters.indexOf( headerFooter ); + if ( idx == -1 ) { + return; + } + disconnect( headerFooter, SIGNAL( destroyedHeaderFooter( HeaderFooter* ) ), + d, SLOT( slotUnregisterDestroyedHeaderFooter( HeaderFooter* ) ) ); + + d->headerFooters.takeAt( idx ); + headerFooter->removeFromParentLayout(); + headerFooter->setParentLayout( 0 ); + d->textLayoutItems.remove( d->textLayoutItems.indexOf( headerFooter ) ); + + d->slotResizePlanes(); +} + +void Chart::Private::slotHeaderFooterPositionChanged( HeaderFooter* hf ) +{ + chart->takeHeaderFooter( hf ); + chart->addHeaderFooter( hf ); +} + +HeaderFooter* Chart::headerFooter() +{ + if ( d->headerFooters.isEmpty() ) { + return 0; + } else { + return d->headerFooters.first(); + } +} + +HeaderFooterList Chart::headerFooters() +{ + return d->headerFooters; +} + +void Chart::Private::slotLegendPositionChanged( AbstractAreaWidget* aw ) +{ + Legend* legend = qobject_cast< Legend* >( aw ); + Q_ASSERT( legend ); + chart->takeLegend( legend ); + chart->addLegendInternal( legend, false ); +} + +void Chart::addLegend( Legend* legend ) +{ + legend->show(); + addLegendInternal( legend, true ); + emit propertiesChanged(); +} + +void Chart::addLegendInternal( Legend* legend, bool setMeasures ) +{ + if ( !legend ) { + return; + } + + KDChartEnums::PositionValue pos = legend->position().value(); + if ( pos == KDChartEnums::PositionCenter ) { + qWarning( "Not showing legend because PositionCenter is not supported for legends." ); + } + + int row; + int column; + getRowAndColumnForPosition( pos, &row, &column ); + if ( row < 0 && pos != KDChartEnums::PositionFloating ) { + qWarning( "Not showing legend because of unknown legend position." ); + return; + } + + d->legends.append( legend ); + legend->setParent( this ); + + // set text attributes (why?) + + if ( setMeasures ) { + TextAttributes textAttrs( legend->textAttributes() ); + KDChart::Measure measure( textAttrs.fontSize() ); + measure.setRelativeMode( this, KDChartEnums::MeasureOrientationMinimum ); + measure.setValue( 20 ); + textAttrs.setFontSize( measure ); + legend->setTextAttributes( textAttrs ); + + textAttrs = legend->titleTextAttributes(); + measure.setRelativeMode( this, KDChartEnums::MeasureOrientationMinimum ); + measure.setValue( 24 ); + textAttrs.setFontSize( measure ); + + legend->setTitleTextAttributes( textAttrs ); + legend->setReferenceArea( this ); + } + + // add it to the appropriate layout + + if ( pos != KDChartEnums::PositionFloating ) { + legend->needSizeHint(); + + // in each edge and corner of the outer layout, there's a grid for the different alignments that we create + // on demand. we don't remove it when empty. + + QLayoutItem* edgeItem = d->dataAndLegendLayout->itemAtPosition( row, column ); + QGridLayout* alignmentsLayout = dynamic_cast< QGridLayout* >( edgeItem ); + Q_ASSERT( !edgeItem || alignmentsLayout ); // if it exists, it must be a QGridLayout + if ( !alignmentsLayout ) { + alignmentsLayout = new QGridLayout; + d->dataAndLegendLayout->addLayout( alignmentsLayout, row, column ); + alignmentsLayout->setMargin( 0 ); + } + + // in case there are several legends in the same edge or corner with the same alignment, they are stacked + // vertically using a QVBoxLayout. it is created on demand as above. + + row = 1; + column = 1; + for ( int i = 0; i < 3; i++ ) { + for ( int j = 0; j < 3; j++ ) { + Qt::Alignment align = s_gridAlignments[ i ][ j ]; + if ( align == legend->alignment() ) { + row = i; + column = j; + break; + } + } + } + + QLayoutItem* alignmentItem = alignmentsLayout->itemAtPosition( row, column ); + QVBoxLayout* sameAlignmentLayout = dynamic_cast< QVBoxLayout* >( alignmentItem ); + Q_ASSERT( !alignmentItem || sameAlignmentLayout ); // if it exists, it must be a QVBoxLayout + if ( !sameAlignmentLayout ) { + sameAlignmentLayout = new QVBoxLayout; + alignmentsLayout->addLayout( sameAlignmentLayout, row, column ); + sameAlignmentLayout->setMargin( 0 ); + } + + sameAlignmentLayout->addItem( new MyWidgetItem( legend, legend->alignment() ) ); + } + + connect( legend, SIGNAL( destroyedLegend( Legend* ) ), + d, SLOT( slotUnregisterDestroyedLegend( Legend* ) ) ); + connect( legend, SIGNAL( positionChanged( AbstractAreaWidget* ) ), + d, SLOT( slotLegendPositionChanged( AbstractAreaWidget* ) ) ); + connect( legend, SIGNAL( propertiesChanged() ), this, SIGNAL( propertiesChanged() ) ); + + d->slotResizePlanes(); +} + +void Chart::replaceLegend( Legend* legend, Legend* oldLegend_ ) +{ + if ( legend && oldLegend_ != legend ) { + Legend* oldLegend = oldLegend_; + if ( d->legends.count() ) { + if ( ! oldLegend ) { + oldLegend = d->legends.first(); + if ( oldLegend == legend ) + return; + } + takeLegend( oldLegend ); + } + delete oldLegend; + addLegend( legend ); + } +} + +void Chart::takeLegend( Legend* legend ) +{ + const int idx = d->legends.indexOf( legend ); + if ( idx == -1 ) { + return; + } + + d->legends.takeAt( idx ); + disconnect( legend, 0, d, 0 ); + disconnect( legend, 0, this, 0 ); + // the following removes the legend from its layout and destroys its MyWidgetItem (the link to the layout) + legend->setParent( 0 ); + + d->slotResizePlanes(); + emit propertiesChanged(); +} + +Legend* Chart::legend() +{ + return d->legends.isEmpty() ? 0 : d->legends.first(); +} + +LegendList Chart::legends() +{ + return d->legends; +} + +void Chart::mousePressEvent( QMouseEvent* event ) +{ + const QPoint pos = mapFromGlobal( event->globalPos() ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, d->coordinatePlanes ) { + if ( plane->geometry().contains( event->pos() ) && plane->diagrams().size() > 0 ) { + QMouseEvent ev( QEvent::MouseButtonPress, pos, event->globalPos(), + event->button(), event->buttons(), event->modifiers() ); + plane->mousePressEvent( &ev ); + d->mouseClickedPlanes.append( plane ); + } + } +} + +void Chart::mouseDoubleClickEvent( QMouseEvent* event ) +{ + const QPoint pos = mapFromGlobal( event->globalPos() ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, d->coordinatePlanes ) { + if ( plane->geometry().contains( event->pos() ) && plane->diagrams().size() > 0 ) { + QMouseEvent ev( QEvent::MouseButtonPress, pos, event->globalPos(), + event->button(), event->buttons(), event->modifiers() ); + plane->mouseDoubleClickEvent( &ev ); + } + } +} + +void Chart::mouseMoveEvent( QMouseEvent* event ) +{ + QSet< AbstractCoordinatePlane* > eventReceivers = QSet< AbstractCoordinatePlane* >::fromList( d->mouseClickedPlanes ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, d->coordinatePlanes ) { + if ( plane->geometry().contains( event->pos() ) && plane->diagrams().size() > 0 ) { + eventReceivers.insert( plane ); + } + } + + const QPoint pos = mapFromGlobal( event->globalPos() ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, eventReceivers ) { + QMouseEvent ev( QEvent::MouseMove, pos, event->globalPos(), + event->button(), event->buttons(), event->modifiers() ); + plane->mouseMoveEvent( &ev ); + } +} + +void Chart::mouseReleaseEvent( QMouseEvent* event ) +{ + QSet< AbstractCoordinatePlane* > eventReceivers = QSet< AbstractCoordinatePlane* >::fromList( d->mouseClickedPlanes ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, d->coordinatePlanes ) { + if ( plane->geometry().contains( event->pos() ) && plane->diagrams().size() > 0 ) { + eventReceivers.insert( plane ); + } + } + + const QPoint pos = mapFromGlobal( event->globalPos() ); + + KDAB_FOREACH( AbstractCoordinatePlane* plane, eventReceivers ) { + QMouseEvent ev( QEvent::MouseButtonRelease, pos, event->globalPos(), + event->button(), event->buttons(), event->modifiers() ); + plane->mouseReleaseEvent( &ev ); + } + + d->mouseClickedPlanes.clear(); +} + +bool Chart::event( QEvent* event ) +{ + if ( event->type() == QEvent::ToolTip ) { + const QHelpEvent* const helpEvent = static_cast< QHelpEvent* >( event ); + KDAB_FOREACH( const AbstractCoordinatePlane* const plane, d->coordinatePlanes ) { + // iterate diagrams in reverse, so that the top-most painted diagram is + // queried first for a tooltip before the diagrams behind it + const ConstAbstractDiagramList& diagrams = plane->diagrams(); + for (int i = diagrams.size() - 1; i >= 0; --i) { + const AbstractDiagram* diagram = diagrams[i]; + if (diagram->isHidden()) { + continue; + } + const QModelIndex index = diagram->indexAt( helpEvent->pos() ); + const QVariant toolTip = index.data( Qt::ToolTipRole ); + if ( toolTip.isValid() ) { + QPoint pos = mapFromGlobal( helpEvent->pos() ); + QRect rect( pos - QPoint( 1, 1 ), QSize( 3, 3 ) ); + QToolTip::showText( QCursor::pos(), toolTip.toString(), this, rect ); + return true; + } + } + } + } + return QWidget::event( event ); +} + +bool Chart::useNewLayoutSystem() const +{ + return d_func()->useNewLayoutSystem; +} +void Chart::setUseNewLayoutSystem( bool value ) +{ + if ( d_func()->useNewLayoutSystem != value ) + d_func()->useNewLayoutSystem = value; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartChart.h b/massif-visualizer/kdchart/src/KDChart/KDChartChart.h new file mode 100644 index 00000000..99fda1a5 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartChart.h @@ -0,0 +1,576 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCHART_H +#define KDCHARTCHART_H + +#include + +#include "kdchart_export.h" +#include "KDChartGlobal.h" + +/* +Simplified(*) overview of object ownership in a chart: + + Chart is-a QWidget + | + n CoordinatePlanes is-a AbstractArea is-a AbstractLayoutItem is-a QLayoutItem + | + n Diagrams is-a QAbstractItemView is-a QWidget + / | \ + AbstractGrid | Axes (can be shared between diagrams) is-a AbstractArea is-a... QLayoutItem + (no base class) | + Legends is-a AbstractAreaWidget is-a QWidget + +(*) less important classes, including base classes, removed. + + +Layout rules: + +In principle, every size or existence change in one of the objects listed above must be propagated +to all other objects. This could change their size. +There are also settings changes that invalidate the size of other components, where the size changes +are detected and propagated. + + +Painting call tree (simplified): + +Chart::paint() (from users) / paintEvent() (from framework) +ChartPrivate::paintAll()-----------------------------------------------\ +CoordinatePlane::paintAll() (from AbstractArea)--------\ Axis::paintAll()-\ +CoordinatePlane::paint() (from AbstractLayoutItem) Grid::drawGrid() Axis::paint() +Diagram::paint( PaintContext* paintContext ) + +Note that grids are painted from the coordinate plane, not from the diagram as ownership would suggest. + +*/ + +namespace KDChart { + + class BackgroundAttributes; + class FrameAttributes; + class AbstractDiagram; + class AbstractCoordinatePlane; + class HeaderFooter; + class Legend; + + typedef QList CoordinatePlaneList; + typedef QList HeaderFooterList; + typedef QList LegendList; + + + /** + * @class Chart KDChartChart.h KDChartChart + * @brief A chart with one or more diagrams. + * + * The Chart class represents a drawing consisting of one or more diagrams + * and various optional elements such as legends, axes, text boxes, headers + * or footers. It takes ownership of all these elements when they are assigned + * to it. Each diagram is associated with a coordinate plane, of which the chart + * can have more than one. The coordinate planes (and thus the associated diagrams) + * can be laid out in various ways. + * + * The Chart class makes heavy use of the Qt Interview framework for model/view + * programming, and thus requires data to be presented to it in a QAbstractItemModel + * compatible way. For many simple charts, especially if the visualized data is + * static, KDChart::Widget provides an abstracted interface, that hides the complexity + * of Interview to a large extent. + */ + class KDCHART_EXPORT Chart : public QWidget + { + Q_OBJECT + // KD Chart 3.0: leading is inter-line distance of text. this here is MARGIN or SPACING. + Q_PROPERTY( int globalLeadingTop READ globalLeadingTop WRITE setGlobalLeadingTop ) + Q_PROPERTY( int globalLeadingBottom READ globalLeadingBottom WRITE setGlobalLeadingBottom ) + Q_PROPERTY( int globalLeadingLeft READ globalLeadingLeft WRITE setGlobalLeadingLeft ) + Q_PROPERTY( int globalLeadingRight READ globalLeadingRight WRITE setGlobalLeadingRight ) + Q_PROPERTY( bool useNewLayoutSystem READ useNewLayoutSystem WRITE setUseNewLayoutSystem ) + + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( Chart ) + + public: + explicit Chart ( QWidget* parent = 0 ); + ~Chart(); + + /** + * @brief useNewLayoutSystem + * Be very careful activating the new layout system, + * its still experimental and works only if the user knows + * what he is doing. The reason is that the system does not prevent + * the user from creating sharing graphs that are not layoutable in a + * plane and still needs assistance from the user. + */ + bool useNewLayoutSystem() const; + void setUseNewLayoutSystem( bool value ); + + /** + \brief Specify the frame attributes to be used, by default is it a thin black line. + + To hide the frame line, you could do something like this: + \verbatim + KDChart::FrameAttributes frameAttrs( my_chart->frameAttributes() ); + frameAttrs.setVisible( false ); + my_chart->setFrameAttributes( frameAttrs ); + \endverbatim + + \sa setBackgroundAttributes + */ + void setFrameAttributes( const FrameAttributes &a ); + FrameAttributes frameAttributes() const; + + /** + \brief Specify the background attributes to be used, by default there is no background. + + To set a light blue background, you could do something like this: + \verbatim + KDChart::BackgroundAttributes backgroundAttrs( my_chart->backgroundAttributes() ); + backgroundAttrs.setVisible( true ); + backgroundAttrs.setBrush( QColor(0xd0,0xd0,0xff) ); + my_chart->setBackgroundAttributes( backgroundAttrs ); + \endverbatim + + \sa setFrameAttributes + */ + void setBackgroundAttributes( const BackgroundAttributes &a ); + BackgroundAttributes backgroundAttributes() const; + + /** + * Each chart must have at least one coordinate plane. + * Initially a default CartesianCoordinatePlane is created. + * Use replaceCoordinatePlane() to replace it with a different + * one, such as a PolarCoordinatePlane. + * @return The first coordinate plane of the chart. + */ + AbstractCoordinatePlane* coordinatePlane(); + + /** + * The list of coordinate planes. + * @return The list of coordinate planes. + */ + CoordinatePlaneList coordinatePlanes(); + + /** + * Adds a coordinate plane to the chart. The chart takes ownership. + * @param plane The coordinate plane to add. + * + * \sa replaceCoordinatePlane, takeCoordinatePlane + */ + void addCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Inserts a coordinate plane to the chart at index @p index. + * The chart takes ownership. + * + * @param index The index where to add the plane + * @param plane The coordinate plane to add. + * + * \sa replaceCoordinatePlane, takeCoordinatePlane + */ + void insertCoordinatePlane( int index, AbstractCoordinatePlane* plane ); + + /** + * Replaces the old coordinate plane, or appends the + * plane, it there is none yet. + * + * @param plane The coordinate plane to be used instead of the old plane. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldPlane The coordinate plane to be removed by the new plane. This + * plane will be deleted automatically. If the parameter is omitted, + * the very first coordinate plane will be replaced. In case, there was no + * plane yet, the new plane will just be added. + * + * \note If you want to re-use the old coordinate plane, call takeCoordinatePlane and + * addCoordinatePlane, instead of using replaceCoordinatePlane. + * + * \sa addCoordinatePlane, takeCoordinatePlane + */ + void replaceCoordinatePlane( AbstractCoordinatePlane* plane, + AbstractCoordinatePlane* oldPlane = 0 ); + + /** + * Removes the coordinate plane from the chart, without deleting it. + * + * The chart no longer owns the plane, so it is + * the caller's responsibility to delete the plane. + * + * \sa addCoordinatePlane, takeCoordinatePlane + */ + void takeCoordinatePlane( AbstractCoordinatePlane* plane ); + + /** + * Set the coordinate plane layout that should be used as model for + * the internal used layout. The layout needs to be an instance of + * QHBoxLayout or QVBoxLayout. + */ + void setCoordinatePlaneLayout( QLayout * layout ); + QLayout* coordinatePlaneLayout(); + + /** + * The first header or footer of the chart. By default there is none. + * @return The first header or footer of the chart or 0 if there was none + * added to the chart. + */ + HeaderFooter* headerFooter(); + + /** + * The list of headers and footers associated with the chart. + * @return The list of headers and footers associated with the chart. + */ + HeaderFooterList headerFooters(); + + /** + * Adds a header or a footer to the chart. The chart takes ownership. + * @param headerFooter The header (or footer, resp.) to add. + * + * \sa replaceHeaderFooter, takeHeaderFooter + */ + void addHeaderFooter( HeaderFooter* headerFooter ); + + /** + * Replaces the old header (or footer, resp.), or appends the + * new header or footer, it there is none yet. + * + * @param headerFooter The header or footer to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldHeaderFooter The header or footer to be removed by the new one. This + * header or footer will be deleted automatically. If the parameter is omitted, + * the very first header or footer will be replaced. In case, there was no + * header and no footer yet, the new header or footer will just be added. + * + * \note If you want to re-use the old header or footer, call takeHeaderFooter and + * addHeaderFooter, instead of using replaceHeaderFooter. + * + * \sa addHeaderFooter, takeHeaderFooter + */ + void replaceHeaderFooter ( HeaderFooter* headerFooter, + HeaderFooter* oldHeaderFooter = 0 ); + + /** + * Removes the header (or footer, resp.) from the chart, without deleting it. + * + * The chart no longer owns the header or footer, so it is + * the caller's responsibility to delete the header or footer. + * + * \sa addHeaderFooter, replaceHeaderFooter + */ + void takeHeaderFooter( HeaderFooter* headerFooter ); + + /** + * The first legend of the chart or 0 if there was none added to the chart. + * @return The first legend of the chart or 0 if none exists. + */ + Legend* legend(); + + /** + * The list of all legends associated with the chart. + * @return The list of all legends associated with the chart. + */ + LegendList legends(); + + /** + * Add the given legend to the chart. The chart takes ownership. + * @param legend The legend to add. + * + * \sa replaceLegend, takeLegend + */ + void addLegend( Legend* legend ); + + /** + * Replaces the old legend, or appends the + * new legend, it there is none yet. + * + * @param legend The legend to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldLegend The legend to be removed by the new one. This + * legend will be deleted automatically. If the parameter is omitted, + * the very first legend will be replaced. In case, there was no + * legend yet, the new legend will just be added. + * + * If you want to re-use the old legend, call takeLegend and + * addLegend, instead of using replaceLegend. + * + * \note Whenever addLegend is called the font sizes used by the + * Legend are set to relative and they get coupled to the Chart's size, + * with their relative values being 20 for the item texts and 24 to the + * title text. So if you want to use custom font sizes for the Legend + * make sure to set them after calling addLegend. + * + * \sa addLegend, takeLegend + */ + void replaceLegend ( Legend* legend, Legend* oldLegend = 0 ); + + /** + * Removes the legend from the chart, without deleting it. + * + * The chart no longer owns the legend, so it is + * the caller's responsibility to delete the legend. + * + * \sa addLegend, takeLegend + */ + void takeLegend( Legend* legend ); + + /** + * Set the padding between the margin of the widget and the area that + * the contents are drawn into. + * @param left The padding on the left side. + * @param top The padding at the top. + * @param right The padding on the left hand side. + * @param bottom The padding on the bottom. + * + * \note Using previous versions of KD Chart you might have called + * setGlobalLeading() to make room for long Abscissa labels (or for an + * overlapping top label of an Ordinate axis, resp.) that would not fit + * into the normal axis area. This is \em no \em longer \em needed + * because KD Chart now is using hidden auto-spacer items reserving + * as much free space as is needed for axes with overlaping content + * at the respective sides. + * + * \sa setGlobalLeadingTop, setGlobalLeadingBottom, setGlobalLeadingLeft, setGlobalLeadingRight + * \sa globalLeadingTop, globalLeadingBottom, globalLeadingLeft, globalLeadingRight + */ + void setGlobalLeading( int left, int top, int right, int bottom ); + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingLeft( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing on the left. + * + * \sa setGlobalLeading + */ + int globalLeadingLeft() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingTop( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing at the top. + * + * \sa setGlobalLeading + */ + int globalLeadingTop() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingRight( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing on the right. + * + * \sa setGlobalLeading + */ + int globalLeadingRight() const; + + /** + * Set the padding between the start of the widget and the start + * of the area that is used for drawing on the bottom. + * @param leading The padding value. + * + * \sa setGlobalLeading + */ + void setGlobalLeadingBottom( int leading ); + + /** + * The padding between the start of the widget and the start + * of the area that is used for drawing at the bottom. + * @return The padding between the start of the widget and the start + * of the area that is used for drawing at the bottom. + * + * \sa setGlobalLeading + */ + int globalLeadingBottom() const; + + /** + * Paints all the contents of the chart. Use this method to make KDChart + * draw into your QPainter. + * + * \note Any global leading settings will be used by the paint method too, + * so make sure to set them to zero, if you want the drawing to have the exact + * size of the target rectangle. + * + * \param painter The painter to be drawn into. + * \param target The rectangle to be filled by the Chart's drawing. + * + * \sa setGlobalLeading + */ + void paint( QPainter* painter, const QRect& target ); + + void reLayoutFloatingLegends(); + + Q_SIGNALS: + /** Emitted upon change of a property of the Chart or any of its components. */ + void propertiesChanged(); + void finishedDrawing(); + + protected: + /** + * Adjusts the internal layout when the chart is resized. + */ + /* reimp */ void resizeEvent ( QResizeEvent * event ); + + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to override this method in a derived + * class, but if you do, do not forget to call paint(). + * @sa paint + */ + /* reimp */ void paintEvent( QPaintEvent* event ); + + /** reimp */ + void mousePressEvent( QMouseEvent* event ); + /** reimp */ + void mouseDoubleClickEvent( QMouseEvent* event ); + /** reimp */ + void mouseMoveEvent( QMouseEvent* event ); + /** reimp */ + void mouseReleaseEvent( QMouseEvent* event ); + /** reimp */ + bool event( QEvent* event ); + + private: + // TODO move this to the private class + void addLegendInternal( Legend *legend, bool setMeasures ); + }; + +// Here we have a few docu block to be included into the API documentation: +/** + * \dir src + * \brief Implementation directory of KDChart. + * + * This directory contains the header files and the source files of both, + * the private and the public classes. + * + * \note Only classes that have an include wrapper in the \c $KDCHARTDIR/include + * directory are part of the supported API. + * All other classes are to be considered as implemntation details, they + * could be changed in future versions of KDChart without notice. + * + * In other words: No class that is not mentioned in the \c $KDCHARTDIR/include + * directory may be directly used by your application. + * + * The recommended way to include classes of the KDChart API is including + * them by class name, so instead of including KDChartChart.h you would say: + * + \verbatim +#include + \endverbatim + * + * When following this there is no reason to include the \c $KDCHARTDIR/src + * directory, it is sufficient to include \c $KDCHARTDIR/include + */ +} +/** + * @class QAbstractItemView "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QAbstractProxyModel "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QFrame "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QObject "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QSortFilterProxyModel "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QWidget "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QTextDocument "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QLayoutItem "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ +/** + * @class QGraphicsPolygonItem "(do not include)" + * @brief Class only listed here to document inheritance of some KDChart classes. + * + * Please consult the respective Qt documentation for details: + * http://doc.trolltech.com/ + */ + + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartChart_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartChart_p.h new file mode 100644 index 00000000..8207ecf6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartChart_p.h @@ -0,0 +1,199 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTCHART_P_H +#define KDCHARTCHART_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +#include "KDChartChart.h" +#include "KDChartAbstractArea.h" +#include "KDChartTextArea.h" +#include "KDChartFrameAttributes.h" +#include "KDChartBackgroundAttributes.h" +#include "KDChartLayoutItems.h" + +#include + + +namespace KDChart { + +class AbstractAreaWidget; +class CartesianAxis; + +/* + struct PlaneInfo can't be declared inside Chart::Private, otherwise MSVC.net says: + qhash.h(195) : error C2248: 'KDChart::Chart::Private' : cannot access protected class declared in class 'KDChart::Chart' + KDChartChart_p.h(58) : see declaration of 'KDChart::Chart::Private' + KDChartChart.h(61) : see declaration of 'KDChart::Chart' + KDChartChart.cpp(262) : see reference to class template instantiation 'QHash' being compiled, with + Key=KDChart::AbstractCoordinatePlane *, + T=KDChart::Chart::Private::PlaneInfo +*/ +/** + * \internal + */ +struct PlaneInfo { + PlaneInfo() + : referencePlane( 0 ), + horizontalOffset( 1 ), + verticalOffset( 1 ), + gridLayout( 0 ), + topAxesLayout( 0 ), + bottomAxesLayout( 0 ), + leftAxesLayout( 0 ), + rightAxesLayout( 0 ) + {} + AbstractCoordinatePlane *referencePlane; + int horizontalOffset; + int verticalOffset; + QGridLayout* gridLayout; + QVBoxLayout* topAxesLayout; + QVBoxLayout* bottomAxesLayout; + QHBoxLayout* leftAxesLayout; + QHBoxLayout* rightAxesLayout; +}; + +struct LayoutGraphNode +{ + LayoutGraphNode() + : diagramPlane( 0 ) + , leftSuccesor( 0 ) + , bottomSuccesor( 0 ) + , sharedSuccesor( 0 ) + , gridLayout( 0 ) + , topAxesLayout( false ) + , bottomAxesLayout( false ) + , leftAxesLayout( false ) + , rightAxesLayout( false ) + , priority( -1 ) + {} + AbstractCoordinatePlane* diagramPlane; + LayoutGraphNode* leftSuccesor; + LayoutGraphNode* bottomSuccesor; + LayoutGraphNode* sharedSuccesor; + QGridLayout* gridLayout; + bool topAxesLayout; + bool bottomAxesLayout; + bool leftAxesLayout; + bool rightAxesLayout; + int priority; + bool operator<( const LayoutGraphNode &other ) const + { + return priority < other.priority; + } +}; + + +/** + * \internal + */ +class Chart::Private : public QObject +{ + Q_OBJECT + public: + Chart* chart; + + enum AxisType { Abscissa, Ordinate }; + bool useNewLayoutSystem; + CoordinatePlaneList coordinatePlanes; + HeaderFooterList headerFooters; + LegendList legends; + + QHBoxLayout* layout; + QVBoxLayout* vLayout; + QBoxLayout* planesLayout; + QGridLayout* gridPlaneLayout; + QGridLayout* headerLayout; + QGridLayout* footerLayout; + QGridLayout* dataAndLegendLayout; + QSpacerItem* leftOuterSpacer; + QSpacerItem* rightOuterSpacer; + QSpacerItem* topOuterSpacer; + QSpacerItem* bottomOuterSpacer; + + QVBoxLayout* innerHdFtLayouts[2][3][3]; + + QVector textLayoutItems; + QVector planeLayoutItems; + QVector legendLayoutItems; + + QSize overrideSize; + bool isFloatingLegendsLayoutDirty; + bool isPlanesLayoutDirty; + + // since we do not want to derive Chart from AbstractAreaBase, we store the attributes + // here and call two static painting methods to draw the background and frame. + KDChart::FrameAttributes frameAttributes; + KDChart::BackgroundAttributes backgroundAttributes; + + // ### wrong names, "leading" means inter-line distance of text. spacing? margin? + int globalLeadingLeft, globalLeadingRight, globalLeadingTop, globalLeadingBottom; + + QList< AbstractCoordinatePlane* > mouseClickedPlanes; + + Qt::LayoutDirection layoutDirection; + + Private( Chart* ); + + virtual ~Private(); + + void createLayouts(); + void updateDirtyLayouts(); + void reapplyInternalLayouts(); // TODO: see if this can be merged with updateDirtyLayouts() + void paintAll( QPainter* painter ); + + struct AxisInfo { + AxisInfo() + :plane(0) + {} + AbstractCoordinatePlane *plane; + }; + QHash buildPlaneLayoutInfos(); + QVector< LayoutGraphNode* > buildPlaneLayoutGraph(); + + public Q_SLOTS: + void slotLayoutPlanes(); + void slotResizePlanes(); + void slotLegendPositionChanged( AbstractAreaWidget* legend ); + void slotHeaderFooterPositionChanged( HeaderFooter* hf ); + void slotUnregisterDestroyedLegend( Legend * legend ); + void slotUnregisterDestroyedHeaderFooter( HeaderFooter* headerFooter ); + void slotUnregisterDestroyedPlane( AbstractCoordinatePlane* plane ); +}; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDataValueAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartDataValueAttributes.cpp new file mode 100644 index 00000000..88ed1fb7 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDataValueAttributes.cpp @@ -0,0 +1,347 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartDataValueAttributes.h" + +#include +#include +#include "KDChartRelativePosition.h" +#include "KDChartPosition.h" +#include +#include +#include +#include + +#include + +// FIXME till +#define KDCHART_DATA_VALUE_AUTO_DIGITS 4 + + +#define d d_func() + +using namespace KDChart; + +class DataValueAttributes::Private +{ + friend class DataValueAttributes; +public: + Private(); +private: + TextAttributes textAttributes; + FrameAttributes frameAttributes; + BackgroundAttributes backgroundAttributes; + MarkerAttributes markerAttributes; + QString prefix; + QString suffix; + QString dataLabel; + RelativePosition negativeRelPos; + RelativePosition positiveRelPos; + qint16 decimalDigits; + qint16 powerOfTenDivisor; + bool visible : 1; + bool showInfinite : 1; + bool showRepetitiveDataLabels : 1; + bool showOverlappingDataLabels : 1; + bool usePercentage : 1; + bool mirrorNegativeValueTextRotation : 1; +}; + +DataValueAttributes::Private::Private() : + decimalDigits( KDCHART_DATA_VALUE_AUTO_DIGITS ), + powerOfTenDivisor( 0 ), + visible( false ), + showInfinite( true ) +{ + Measure me( 20.0, KDChartEnums::MeasureCalculationModeAuto, KDChartEnums::MeasureOrientationAuto ); + textAttributes.setFontSize( me ); + me.setValue( 8.0 ); + me.setCalculationMode( KDChartEnums::MeasureCalculationModeAbsolute ); + textAttributes.setMinimalFontSize( me ); + textAttributes.setRotation( -45 ); + + // we set the Position to unknown: so the diagrams can take their own decisions + positiveRelPos.setReferencePosition( Position::Unknown ); + negativeRelPos.setReferencePosition( Position::Unknown ); + + positiveRelPos.setAlignment( Qt::AlignTop | Qt::AlignRight ); + negativeRelPos.setAlignment( Qt::AlignBottom | Qt::AlignRight ); + + showRepetitiveDataLabels = false; + showOverlappingDataLabels = false; + + usePercentage = false; + mirrorNegativeValueTextRotation = false; +} + + +DataValueAttributes::DataValueAttributes() + : _d( new Private() ) +{ +} + +DataValueAttributes::DataValueAttributes( const DataValueAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +DataValueAttributes & DataValueAttributes::operator=( const DataValueAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +DataValueAttributes::~DataValueAttributes() +{ + delete _d; _d = 0; +} + + +bool DataValueAttributes::operator==( const DataValueAttributes& r ) const +{ + return isVisible() == r.isVisible() && + textAttributes() == r.textAttributes() && + frameAttributes() == r.frameAttributes() && + backgroundAttributes() == r.backgroundAttributes() && + markerAttributes() == r.markerAttributes() && + decimalDigits() == r.decimalDigits() && + prefix() == r.prefix() && + suffix() == r.suffix() && + dataLabel() == r.dataLabel() && + powerOfTenDivisor() == r.powerOfTenDivisor() && + showInfinite() == r.showInfinite() && + negativePosition() == r.negativePosition() && + positivePosition() == r.positivePosition() && + showRepetitiveDataLabels() == r.showRepetitiveDataLabels() && + showOverlappingDataLabels() == r.showOverlappingDataLabels() && + usePercentage() == r.usePercentage() && + mirrorNegativeValueTextRotation() == r.mirrorNegativeValueTextRotation(); +} + +/*static*/ +const DataValueAttributes& DataValueAttributes::defaultAttributes() +{ + static const DataValueAttributes theDefaultDataValueAttributes; + return theDefaultDataValueAttributes; +} + +/*static*/ +const QVariant& DataValueAttributes::defaultAttributesAsVariant() +{ + static const QVariant theDefaultDataValueAttributesVariant = qVariantFromValue(defaultAttributes()); + return theDefaultDataValueAttributesVariant; +} + + +void DataValueAttributes::setVisible( bool visible ) +{ + d->visible = visible; +} + +bool DataValueAttributes::isVisible() const +{ + return d->visible; +} + +void DataValueAttributes::setTextAttributes( const TextAttributes &a ) +{ + d->textAttributes = a; +} + +TextAttributes DataValueAttributes::textAttributes() const +{ + return d->textAttributes; +} + +void DataValueAttributes::setFrameAttributes( const FrameAttributes &a ) +{ + d->frameAttributes = a; +} + +FrameAttributes DataValueAttributes::frameAttributes() const +{ + return d->frameAttributes; +} + +void DataValueAttributes::setBackgroundAttributes( const BackgroundAttributes &a ) +{ + d->backgroundAttributes = a; +} + +BackgroundAttributes DataValueAttributes::backgroundAttributes() const +{ + return d->backgroundAttributes; +} + +void DataValueAttributes::setMarkerAttributes( const MarkerAttributes &a ) +{ + d->markerAttributes = a; +} + +MarkerAttributes DataValueAttributes::markerAttributes() const +{ + return d->markerAttributes; +} + +void DataValueAttributes::setMirrorNegativeValueTextRotation( bool enable ) +{ + d->mirrorNegativeValueTextRotation = enable; +} + +bool DataValueAttributes::mirrorNegativeValueTextRotation() const +{ + return d->mirrorNegativeValueTextRotation; +} + +void DataValueAttributes::setUsePercentage( bool enable ) +{ + d->usePercentage = enable; +} + +bool DataValueAttributes::usePercentage() const +{ + return d->usePercentage; +} + +void DataValueAttributes::setDecimalDigits( int digits ) +{ + d->decimalDigits = digits; +} + +int DataValueAttributes::decimalDigits() const +{ + return d->decimalDigits; +} + +void DataValueAttributes::setPrefix( const QString prefixString ) +{ + d->prefix = prefixString; +} + +QString DataValueAttributes::prefix() const +{ + return d->prefix; +} + +void DataValueAttributes::setSuffix( const QString suffixString ) +{ + d->suffix = suffixString; +} + +QString DataValueAttributes::suffix() const +{ + return d->suffix; +} + +void DataValueAttributes::setDataLabel( const QString label ) +{ + d->dataLabel = label; +} + +QString DataValueAttributes::dataLabel() const +{ + return d->dataLabel; +} + +bool DataValueAttributes::showRepetitiveDataLabels() const +{ + return d->showRepetitiveDataLabels; +} + +void DataValueAttributes::setShowRepetitiveDataLabels( bool showRepetitiveDataLabels ) +{ + d->showRepetitiveDataLabels = showRepetitiveDataLabels; +} + +bool DataValueAttributes::showOverlappingDataLabels() const +{ + return d->showOverlappingDataLabels; +} + +void DataValueAttributes::setShowOverlappingDataLabels( bool showOverlappingDataLabels ) +{ + d->showOverlappingDataLabels = showOverlappingDataLabels; +} + +void DataValueAttributes::setPowerOfTenDivisor( int powerOfTenDivisor ) +{ + d->powerOfTenDivisor = powerOfTenDivisor; +} + +int DataValueAttributes::powerOfTenDivisor() const +{ + return d->powerOfTenDivisor; +} + +void DataValueAttributes::setShowInfinite( bool infinite ) +{ + d->showInfinite = infinite; +} + +bool DataValueAttributes::showInfinite() const +{ + return d->showInfinite; +} + +void DataValueAttributes::setNegativePosition( const RelativePosition& relPosition ) +{ + d->negativeRelPos = relPosition; +} + +const RelativePosition DataValueAttributes::negativePosition() const +{ + return d->negativeRelPos; +} + +void DataValueAttributes::setPositivePosition( const RelativePosition& relPosition ) +{ + d->positiveRelPos = relPosition; +} + +const RelativePosition DataValueAttributes::positivePosition() const +{ + return d->positiveRelPos; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::DataValueAttributes& val ) +{ + dbg << "RelativePosition DataValueAttributes(" + << "visible="< +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" +#include "KDChartRelativePosition.h" + +/** \file KDChartDataValueAttributes.h + * \brief Declaring the class KDChart::DataValueAttributes. + * + * + */ + + +namespace KDChart { + + class TextAttributes; + class BackgroundAttributes; + class FrameAttributes; + class MarkerAttributes; + + /** + * \class DataValueAttributes KDChartDataValueAttributes.h KDChartDataValueAttributes + * \brief Diagram attributes dealing with data value labels. + * + * The DataValueAttributes group all properties that can be set + * wrt data value labels and if and how they are displayed. This + * includes things like the text attributes (font, color), what + * markers are used, how many decimal digits are displayed, etc. + */ +class KDCHART_EXPORT DataValueAttributes +{ +public: + DataValueAttributes(); + DataValueAttributes( const DataValueAttributes& ); + DataValueAttributes &operator= ( const DataValueAttributes& ); + bool operator==( const DataValueAttributes& ) const; + inline bool operator!=( const DataValueAttributes& other ) const { return !operator==(other); } + + ~DataValueAttributes(); + + static const DataValueAttributes& defaultAttributes(); + static const QVariant& defaultAttributesAsVariant(); + + /** Set whether data value labels should be displayed. + * \param visible Whether data value labels should be displayed. + */ + void setVisible( bool visible ); + + /** + * @return Whether data value labels should be displayed. + */ + bool isVisible() const; + + /** + * Set the text attributes to use for the data value labels. + * \param a The text attributes to set. + * \see TextAttributes + */ + void setTextAttributes( const TextAttributes &a ); + + /** + * \return The text attributes used for painting data value labels. + */ + TextAttributes textAttributes() const; + + /** + * If true, rotation of negative value labels is negated, so that negative + * values are rotated in opposite direction of textAttributes().rotation(), + * and in this sense appear "mirrored" to positive value labels, though the + * text itself is *not* mirrored, only its rotation. + */ + bool mirrorNegativeValueTextRotation() const; + + /** + * \see mirrorNegativeValueTextRotation() + */ + void setMirrorNegativeValueTextRotation( bool enable ); + + /** + * Set the frame attributes to use for the data value labels area. + * \param a The frame attributes to set. + * \see FrameAttributes + */ + void setFrameAttributes( const FrameAttributes &a ); + + /** + * \return The frame attributes used for painting the data + * value labels area. + * \see FrameAttributes + */ + FrameAttributes frameAttributes() const; + + /** + * Set the background attributes to use for the data value labels area. + * \param a The background attributes to set. + * \see BackgroundAttributes + */ + void setBackgroundAttributes( const BackgroundAttributes &a ); + + /** + * \return The background attributes used for painting the data + * value labels area. + * \see BackgroundAttributes + */ + BackgroundAttributes backgroundAttributes() const; + + /** + * Set the marker attributes to use for the data values. This includes + * the marker type. + * \param a The marker attributes to set. + * \see MarkerAttributes + */ + void setMarkerAttributes( const MarkerAttributes &a ); + + /** + * \return The marker attributes used for decorating the data + * values. + * \see MarkerAttributes + */ + MarkerAttributes markerAttributes() const; + + /** + * Specify whether to use percentages instead of actual data point values when no + * specific label is set. In a bar or cartesian diagram, this means that the value + * will be shown in % in relation to the sum of all values in the same category, in + * a polar diagram in relation to the sum of all values in a data set. + * + * When this is turned on, the value will \b not automatically have the '%' postfix. + * \param enable Whether to enable percentage values + */ + void setUsePercentage( bool enable ); + + /** + * \return Whether to use percentage values + * \see setUsePercentage + */ + bool usePercentage() const; + + /** + * Set how many decimal digits to display when rendering the data value + * labels. If there are no decimal digits it will not be displayed. + * \param digits The number of decimal digits to use. + */ + void setDecimalDigits( int digits ); + + /** + * \return The number of decimal digits displayed. + */ + int decimalDigits() const; + + /** + * \brief Prepend a prefix string to the data value label + * \sa prefix + */ + void setPrefix( const QString prefix ); + + /** + * \brief Returns the string used as a prefix to the data value text. + * \sa setPrefix + */ + QString prefix() const; + + /** + * \brief Append a suffix string to the data value label + * \sa suffix + */ + void setSuffix( const QString suffix ); + + /** + * \brief Returns the string used as a suffix to the data value text. + * \sa setSuffix + */ + QString suffix() const; + + /** + * \brief display a string label instead of the original data value label + * Supports HTML code. + * \sa dataLabel + */ + void setDataLabel( const QString label ); + + /** + * \brief Returns the string displayed instead of the data value label + * \sa setDataLabel + */ + QString dataLabel() const; + + /** + * \return Whether data values not different from their predecessors are drawn. + */ + bool showRepetitiveDataLabels() const; + + /** + * + * Set whether data value labels not different from their predecessors should be drawn. + * \param showRepetitiveDataLabels Whether data value not different from their predecessors are drawn. + */ + void setShowRepetitiveDataLabels( bool showRepetitiveDataLabels ); + + /** + * \return Whether data value texts overlapping other data value texts of the same diagram are drawn. + */ + bool showOverlappingDataLabels() const; + + /** + * + * Set whether data value texts overlapping other data value texts of the same diagram should be drawn. + * \param showOverlappingDataLabels Whether data texts overlapping other data value texts of the same diagram are drawn. + */ + void setShowOverlappingDataLabels( bool showOverlappingDataLabels ); + + /** + * \cond PLANNED_FOR_FUTURE + * + * These method are planned for future versions of KD Chart, + * so they are not part of the documented API yet. + * + */ + void setPowerOfTenDivisor( int powerOfTenDivisor ); + int powerOfTenDivisor() const; + /** + * \endcond + */ + + + /** + * \cond PLANNED_FOR_FUTURE + * + * These method are planned for future versions of KD Chart, + * so they are not part of the documented API yet. + */ + void setShowInfinite( bool infinite ); + bool showInfinite() const; + /** + * \endcond + */ + + /** + * \brief Defines the relative positioning of the data value labels for negative values. + * + * The position is specified in relation to the respective data value point, or in + * relation to the respective data representation area, that's one area segment in + * a LineDiagram showing areas, or one bar in a BarDiagram, one pie slice ... + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa negativePosition + */ + void setNegativePosition( const RelativePosition& relPosition ); + + /** + * \brief Return the relative positioning of the data value labels + * \sa setNegativePosition + */ + const RelativePosition negativePosition() const; + + /** + * \brief Defines the relative position of the data value labels for positive values. + * + * The position is specified in relation to the respective data value point, or in + * relation to the respective data representation area, that's one area segment in + * a LineDiagram showing areas, or one bar in a BarDiagram, one pie slice ... + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa positivePosition + */ + void setPositivePosition( const RelativePosition& relPosition ); + + /** + * \brief Return the relative positioning of the data value labels + * \sa setPositivePosition + */ + const RelativePosition positivePosition() const; + + const RelativePosition position( bool positive ) const + { + return positive ? positivePosition() : negativePosition(); + } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( DataValueAttributes ) + +}; // End of class DataValueAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::DataValueAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::DataValueAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::DataValueAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::DataValueAttributes ) + +#endif // KDCHARTDATAVALUEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.cpp new file mode 100644 index 00000000..d2505a20 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.cpp @@ -0,0 +1,297 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartDatasetProxyModel.h" + +#include + +#include + + +using namespace KDChart; + +DatasetProxyModel::DatasetProxyModel(QObject* parent) + : QSortFilterProxyModel( parent ) +{ +} + +QModelIndex DatasetProxyModel::buddy( const QModelIndex& index ) const +{ + return index; +} + +Qt::ItemFlags DatasetProxyModel::flags( const QModelIndex& index ) const +{ + return sourceModel()->flags( mapToSource( index ) ); +} + +void DatasetProxyModel::setDatasetRowDescriptionVector( + const DatasetDescriptionVector& configuration ) +{ + Q_ASSERT_X( sourceModel(), "DatasetProxyModel::setDatasetRowDescriptionVector", + "A source model must be set before the selection can be configured." ); + initializeDatasetDecriptors( configuration, sourceModel()->rowCount(mRootIndex), + mRowSrcToProxyMap, mRowProxyToSrcMap ); + clear(); // clear emits layoutChanged() +} + +void DatasetProxyModel::setDatasetColumnDescriptionVector( + const DatasetDescriptionVector& configuration ) +{ + Q_ASSERT_X( sourceModel(), "DatasetProxyModel::setDatasetColumnDescriptionVector", + "A source model must be set before the selection can be configured." ); + initializeDatasetDecriptors( configuration, sourceModel()->columnCount(mRootIndex), + mColSrcToProxyMap, mColProxyToSrcMap ); + clear(); // clear emits layoutChanged() +} + +void DatasetProxyModel::setDatasetDescriptionVectors( + const DatasetDescriptionVector& rowConfig, + const DatasetDescriptionVector& columnConfig ) +{ + setDatasetRowDescriptionVector( rowConfig ); + setDatasetColumnDescriptionVector( columnConfig ); +} + +QModelIndex DatasetProxyModel::index( int row, int column, + const QModelIndex &parent ) const +{ + return mapFromSource( sourceModel()->index( mapProxyRowToSource(row), + mapProxyColumnToSource(column), + parent ) ); +} + +QModelIndex DatasetProxyModel::parent( const QModelIndex& child ) const +{ +// return mapFromSource( sourceModel()->parent( child ) ); + return mapFromSource( sourceModel()->parent( mapToSource( child ) ) ); +} + +QModelIndex DatasetProxyModel::mapFromSource( const QModelIndex & sourceIndex ) const +{ + Q_ASSERT_X( sourceModel(), "DatasetProxyModel::mapFromSource", "A source " + "model must be set before the selection can be configured." ); + + if ( !sourceIndex.isValid() ) return sourceIndex; + + if ( mRowSrcToProxyMap.isEmpty() && mColSrcToProxyMap.isEmpty() ) + { + return createIndex( sourceIndex.row(), sourceIndex.column(), + sourceIndex.internalPointer() ); + } else { + int row = mapSourceRowToProxy( sourceIndex.row() ); + int column = mapSourceColumnToProxy( sourceIndex.column() ); + return createIndex( row, column, sourceIndex.internalPointer() ); + } +} + +QModelIndex DatasetProxyModel::mapToSource( const QModelIndex& proxyIndex ) const +{ + Q_ASSERT_X( sourceModel(), "DatasetProxyModel::mapToSource", "A source " + "model must be set before the selection can be configured." ); + + if ( !proxyIndex.isValid() ) return proxyIndex; + if ( mRowSrcToProxyMap.isEmpty() && mColSrcToProxyMap.isEmpty() ) + { + return sourceModel()->index( proxyIndex.row(), proxyIndex.column(), mRootIndex ); + } else { + int row = mapProxyRowToSource( proxyIndex.row() ); + int column = mapProxyColumnToSource( proxyIndex.column() ); + return sourceModel()->index( row, column, mRootIndex ); + } +} + +bool DatasetProxyModel::filterAcceptsRow( int sourceRow, + const QModelIndex & ) const +{ + if ( mRowSrcToProxyMap.isEmpty() ) + { // no row mapping set, all rows are passed down: + return true; + } else { + Q_ASSERT( sourceModel() ); + Q_ASSERT( mRowSrcToProxyMap.size() == sourceModel()->rowCount(mRootIndex) ); + if ( mRowSrcToProxyMap[sourceRow] == -1 ) + { // this row is explicitly not accepted: + return false; + } else { + Q_ASSERT( mRowSrcToProxyMap[sourceRow] >= 0 + && mRowSrcToProxyMap[sourceRow] < mRowSrcToProxyMap.size() ); + return true; + } + } +} + +bool DatasetProxyModel::filterAcceptsColumn( int sourceColumn, + const QModelIndex & ) const +{ + if ( mColSrcToProxyMap.isEmpty() ) + { // no column mapping set up yet, all columns are passed down: + return true; + } else { + Q_ASSERT( sourceModel() ); + Q_ASSERT( mColSrcToProxyMap.size() == sourceModel()->columnCount(mRootIndex) ); + if ( mColSrcToProxyMap[sourceColumn] == -1 ) + { // this column is explicitly not accepted: + return false; + } else { + Q_ASSERT( mColSrcToProxyMap[sourceColumn] >= 0 + && mColSrcToProxyMap[sourceColumn] < mColSrcToProxyMap.size() ); + return true; + } + } +} + +int DatasetProxyModel::mapProxyRowToSource( const int& proxyRow ) const +{ + if ( mRowProxyToSrcMap.isEmpty() ) + { // if no row mapping is set, we pass down the row: + return proxyRow; + } else { + Q_ASSERT( proxyRow >= 0 && proxyRow < mRowProxyToSrcMap.size() ); + return mRowProxyToSrcMap[ proxyRow ]; + } +} + +int DatasetProxyModel::mapProxyColumnToSource( const int& proxyColumn ) const +{ + if ( mColProxyToSrcMap.isEmpty() ) + { // if no column mapping is set, we pass down the column: + return proxyColumn; + } else { + Q_ASSERT( proxyColumn >= 0 && proxyColumn < mColProxyToSrcMap.size() ); + return mColProxyToSrcMap[ proxyColumn ]; + } +} + +int DatasetProxyModel::mapSourceRowToProxy( const int& sourceRow ) const +{ + if ( mRowSrcToProxyMap.isEmpty() ) + { + return sourceRow; + } else { + Q_ASSERT( sourceRow >= 0 && sourceRow < mRowSrcToProxyMap.size() ); + return mRowSrcToProxyMap[sourceRow]; + } +} + +int DatasetProxyModel::mapSourceColumnToProxy( const int& sourceColumn ) const +{ + if ( mColSrcToProxyMap.isEmpty() ) + { + return sourceColumn; + } else { + Q_ASSERT( sourceColumn >= 0 && sourceColumn < mColSrcToProxyMap.size() ); + return mColSrcToProxyMap.at( sourceColumn ) ; + } +} + +void DatasetProxyModel::resetDatasetDescriptions() +{ + mRowSrcToProxyMap.clear(); + mRowProxyToSrcMap.clear(); + mColSrcToProxyMap.clear(); + mColProxyToSrcMap.clear(); + clear(); +} + +QVariant DatasetProxyModel::data(const QModelIndex &index, int role) const +{ + return sourceModel()->data( mapToSource( index ), role ); +} + +bool DatasetProxyModel::setData( const QModelIndex& index, const QVariant& value, int role ) +{ + return sourceModel()->setData( mapToSource( index ), value, role ); +} + +QVariant DatasetProxyModel::headerData( int section, Qt::Orientation orientation, int role ) const +{ + if ( orientation == Qt::Horizontal ) + { + if ( mapProxyColumnToSource ( section ) == -1 ) + { + return QVariant(); + } else { + return sourceModel()->headerData( mapProxyColumnToSource( section ), orientation, role ); + } + } else { + if ( mapProxyRowToSource ( section ) == -1 ) + { + return QVariant(); + } else { + return sourceModel()->headerData( mapProxyRowToSource ( section ), orientation, role ); + } + } +} + +void DatasetProxyModel::initializeDatasetDecriptors( + const DatasetDescriptionVector& inConfiguration, + const int sourceCount, + DatasetDescriptionVector& outSourceToProxyMap, + DatasetDescriptionVector& outProxyToSourceMap ) +{ + // in the current mapping implementation, the proxy-to-source map is + // identical to the configuration vector: + outProxyToSourceMap = inConfiguration; + outSourceToProxyMap.fill( -1, sourceCount ); + + for ( int index = 0; index < inConfiguration.size(); ++index ) { + // make sure the values in inConfiguration point to columns in the + // source model: + + if ( inConfiguration[index] == -1 ) { + continue; + } + + Q_ASSERT_X( inConfiguration[ index ] >= 0 && inConfiguration[ index ] < sourceCount, + "DatasetProxyModel::initializeDatasetDecriptors", + "column index outside of source model" ); + Q_ASSERT_X( outSourceToProxyMap[ inConfiguration[ index ] ] == -1 , + "DatasetProxyModel::initializeDatasetDecriptors", + "no duplicates allowed in mapping configuration, mapping has to be reversible" ); + + outSourceToProxyMap[ inConfiguration[ index ] ] = index; + } +} + +void DatasetProxyModel::setSourceModel(QAbstractItemModel *m) +{ + if ( sourceModel() ) { + disconnect( sourceModel(), SIGNAL( layoutChanged() ), + this, SLOT( resetDatasetDescriptions() ) ); + } + QSortFilterProxyModel::setSourceModel( m ); + mRootIndex = QModelIndex(); + if ( m ) { + connect( m, SIGNAL( layoutChanged() ), + this, SLOT( resetDatasetDescriptions() ) ); + connect( m, SIGNAL( layoutChanged() ), this, SIGNAL( layoutChanged() ) ); + } + resetDatasetDescriptions(); +} + +void DatasetProxyModel::setSourceRootIndex(const QModelIndex& rootIdx) +{ + mRootIndex = rootIdx; + resetDatasetDescriptions(); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.h b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.h new file mode 100644 index 00000000..bbe26c38 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetProxyModel.h @@ -0,0 +1,188 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTDATASETPROXYMODEL_H +#define KDCHARTDATASETPROXYMODEL_H + +#include +#include + +#include "kdchart_export.h" + +namespace KDChart { + + class IndexOutOfBoundsException; + + typedef QVector DatasetDescriptionVector; + + /** DatasetProxyModel takes a KDChart dataset configuration and translates + it into a filtering proxy model. + + The resulting model will only contain the part of the model that is + selected by the dataset, and the according row and column header + data. + + Currently, this model is implemented for table models only. The way it + would work with models representing a tree is to be decided. + + The column selection is configured by passing a dataset description + vector to the model. This vector (of integers) is supposed to have one + value for each column of the original model. If the value at position + x is -1, column x of the original model is not included in the + dataset. If it is between 0 and (columnCount() -1), it is the column + the source column is mapped to in the resulting model. Any other value + is an error. + */ + class KDCHART_EXPORT DatasetProxyModel : public QSortFilterProxyModel + { + Q_OBJECT + public: + /** Create a DatasetProxyModel. + Without further configuration, this model is invalid. + @see setDatasetDescriptionVector + */ + explicit DatasetProxyModel ( QObject* parent = 0 ); + + QModelIndex buddy( const QModelIndex& index ) const; + + Qt::ItemFlags flags( const QModelIndex& index ) const; + + QModelIndex index( int row, int column, + const QModelIndex &parent = QModelIndex() ) const; + QModelIndex parent(const QModelIndex &child ) const; + + /** Implements the mapping from the source to the proxy indexes. */ + QModelIndex mapFromSource ( const QModelIndex & sourceIndex ) const; + + /** Implements the mapping from the proxy to the source indexes. */ + QModelIndex mapToSource ( const QModelIndex& proxyIndex ) const; + + /** Overloaded from base class. */ + QVariant data(const QModelIndex &index, int role) const; + + /** Overloaded from base class. */ + bool setData( const QModelIndex& index, const QVariant& value, int role ); + + /** Overloaded from base class. */ + QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + + /** Overloaded from base class. */ + void setSourceModel(QAbstractItemModel *sourceModel); + + /** Set the root index of the table in + the source model */ + void setSourceRootIndex(const QModelIndex& rootIdx); + + + public Q_SLOTS: + /** Reset all dataset description. + After that, the result of the proxying is an empty model (a new + dataset description needs to be set to achieve a non-empty result). + */ + void resetDatasetDescriptions(); + + /** Configure the dataset selection for the columns. + Every call to this method resets the previous dataset + description. + */ + void setDatasetColumnDescriptionVector ( const DatasetDescriptionVector& columnConfig ); + + /** Configure the dataset selection for the rows. + Every call to this method resets the previous dataset + description. + */ + void setDatasetRowDescriptionVector ( const DatasetDescriptionVector& rowConfig ); + + /** Convenience method to configure rows and columns in one step. */ + void setDatasetDescriptionVectors ( + const DatasetDescriptionVector& rowConfig, + const DatasetDescriptionVector& columnConfig ); + + // FIXME: add convenience methods to configure common dataset + // selections (like rectangular areas etc) + + protected: + /** Decide whether the column is accepted. */ + bool filterAcceptsColumn ( int sourceColumn, + const QModelIndex & ) const; + + + /** Decide whether the row is accepted. */ + bool filterAcceptsRow ( int source_row, const QModelIndex & source_parent ) const; + + private: + + /** Map a proxy column to a source column. */ + int mapProxyColumnToSource ( const int& proxyColumn ) const; + + /** Map a source column to a proxy column. */ + int mapSourceColumnToProxy ( const int& sourceColumn ) const; + + /** Map a proxy row to a source row. */ + int mapProxyRowToSource ( const int& proxyRow ) const; + + /** Map a source row to a proxy row. */ + int mapSourceRowToProxy ( const int& sourceRow ) const; + + /** Initialize the transformation vectors from the dataset + description. + + The input parameter "Configuration" is a vector that specifies + what srce column will be mapped to what proxy column. Example: + + position: [0][1][2] + value: [2][0][1] + + This will map the source column 2 to proxy column 0, source 0 to + proxy 1, and source 1 to proxy 2. Source needs to have at least 2 + column. The source-to-proxy mapping looks the same, except that it + may contain values of -1, which means this column is not part of + the resulting model. The values in the configuration vector must + be unique (otherwise, a 1-to-1 mapping in both directions is + impossible). + + sourceCount is the number of columns in the source model. The proxy-to-source map has + as many elements as the proxy has columns, the source-to-proxy map + has as many elements as the source has columns. Same goes for rows + (the mapping logic is the same). + + */ + void initializeDatasetDecriptors ( + const DatasetDescriptionVector& inConfiguration, + int sourceCount, + DatasetDescriptionVector& outSourceToProxyMap, + DatasetDescriptionVector& outProxyToSourceMap ); + + DatasetDescriptionVector mColSrcToProxyMap; + DatasetDescriptionVector mColProxyToSrcMap; + DatasetDescriptionVector mRowSrcToProxyMap; + DatasetDescriptionVector mRowProxyToSrcMap; + + int mProxyRowCount; + int mProxyColumnCount; + QModelIndex mRootIndex; + }; + +} + + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.cpp new file mode 100644 index 00000000..65a2d551 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.cpp @@ -0,0 +1,191 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include + +#include "KDChartDatasetSelector.h" + +#include "ui_KDChartDatasetSelector.h" + +#include + +using namespace KDChart; + +DatasetSelectorWidget::DatasetSelectorWidget( QWidget* parent ) + : QFrame( parent ) + , mUi( new Ui::DatasetSelector() ) + , mSourceRowCount( 0 ) + , mSourceColumnCount( 0 ) +{ + qWarning( "For DatasetSelectorWidget to become useful, it has to be connected to the proxy model it configures!" ); + + mUi->setupUi( this ); + setMinimumSize( minimumSizeHint() ); +} + +DatasetSelectorWidget::~DatasetSelectorWidget() +{ + delete mUi; +} + +void DatasetSelectorWidget::on_sbStartColumn_valueChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_sbStartRow_valueChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_sbColumnCount_valueChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_sbRowCount_valueChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_cbReverseRows_stateChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_cbReverseColumns_stateChanged( int ) +{ + calculateMapping(); +} + +void DatasetSelectorWidget::on_groupBox_toggled( bool state ) +{ + if ( state ) + { + calculateMapping(); + } else { + emit mappingDisabled(); + } +} + + +void DatasetSelectorWidget::setSourceRowCount( const int& rowCount ) +{ + if ( rowCount != mSourceRowCount ) + { + mSourceRowCount = rowCount; + resetDisplayValues(); + } +} + +void DatasetSelectorWidget::setSourceColumnCount( const int& columnCount ) +{ + if ( columnCount != mSourceColumnCount ) + { + mSourceColumnCount = columnCount; + resetDisplayValues(); + } +} + +void DatasetSelectorWidget::resetDisplayValues() +{ + mUi->sbStartRow->setValue( 0 ); + mUi->sbStartRow->setMinimum( 0 ); + mUi->sbStartRow->setMaximum( qMax( mSourceRowCount - 1, 0 ) ); + mUi->sbStartColumn->setValue( 0 ); + mUi->sbStartColumn->setMinimum( 0 ); + mUi->sbStartColumn->setMaximum( qMax( mSourceColumnCount - 1, 0 ) ); + mUi->sbRowCount->setMinimum( 1 ); + mUi->sbRowCount->setMaximum( mSourceRowCount ); + mUi->sbRowCount->setValue( mSourceRowCount ); + mUi->sbColumnCount->setMinimum( 1 ); + mUi->sbColumnCount->setMaximum( mSourceColumnCount ); + mUi->sbColumnCount->setValue( mSourceColumnCount ); + mUi->groupBox->setChecked( false ); + emit mappingDisabled(); +} + +void DatasetSelectorWidget::calculateMapping() +{ + if ( mSourceColumnCount < 2 && mSourceRowCount < 2 ) + { + mUi->groupBox->setEnabled( false ); + emit mappingDisabled(); + } else { + mUi->groupBox->setEnabled( true ); + + if ( ! mUi->groupBox->isChecked() ) + { + emit mappingDisabled(); + return; + } + + // retrieve values: + int startRow = mUi->sbStartRow->value(); + int startColumn = mUi->sbStartColumn->value(); + int rowCount = mUi->sbRowCount->value(); + int columnCount = mUi->sbColumnCount->value(); + bool reverseColumns = mUi->cbReverseColumns->checkState() == Qt::Checked; + bool reverseRows = mUi->cbReverseRows->checkState() == Qt::Checked; + + // verify values: + startRow = qMin( startRow, mSourceRowCount - 2 ); + startRow = qMax( 0, startRow ); + startColumn = qMin( startColumn, mSourceColumnCount - 2 ); + startColumn = qMax( 0, startColumn ); + + rowCount = qMin( rowCount, mSourceRowCount - startRow ); + rowCount = qMax( 1, rowCount ); + columnCount = qMin( columnCount, mSourceColumnCount - startColumn ); + columnCount = qMax( 1, columnCount ); + + DatasetDescriptionVector rowConfig( rowCount ); + Q_ASSERT( rowConfig.size() > 0 ); + DatasetDescriptionVector columnConfig( columnCount ); + Q_ASSERT( columnConfig.size() > 0 ); + + // fill the dataset description vectors: + for ( int row = 0; row < rowCount; ++row ) + { + if ( reverseRows ) + { + rowConfig[row] = startRow + rowCount - row - 1; + } else { + rowConfig[row] = startRow + row; + } + } + + for ( int column = 0; column < columnCount; ++ column ) + { + if ( reverseColumns ) + { + columnConfig[column] = startColumn + columnCount - column -1; + } else { + columnConfig[column] = startColumn + column; + } + } + + // and tell the world: + emit configureDatasetProxyModel( rowConfig, columnConfig ); + } +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.h b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.h new file mode 100644 index 00000000..02ff90a0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTDATASETSELECTOR_H +#define KDCHARTDATASETSELECTOR_H + +#include + +#include "KDChartDatasetProxyModel.h" + + +/** + * \cond PRIVATE_API_DOCU + * + * ( This class is used internally by DatasetSelectorWidget. ) + */ +QT_BEGIN_NAMESPACE +namespace Ui { + class DatasetSelector; +} +QT_END_NAMESPACE +/** + * \endcond + */ + +namespace KDChart { + + class KDCHART_EXPORT DatasetSelectorWidget : public QFrame + { + Q_OBJECT + + public: + explicit DatasetSelectorWidget ( QWidget* parent = 0 ); + ~DatasetSelectorWidget(); + + public Q_SLOTS: + void setSourceRowCount ( const int& rowCount ); + void setSourceColumnCount ( const int& columnCount ); + + Q_SIGNALS: + void configureDatasetProxyModel ( + const DatasetDescriptionVector& rowConfig, + const DatasetDescriptionVector& columnConfig ); + + void mappingDisabled (); + + private Q_SLOTS: + void on_sbStartColumn_valueChanged ( int ); + void on_sbStartRow_valueChanged ( int ); + void on_sbColumnCount_valueChanged( int ); + void on_sbRowCount_valueChanged( int ); + void on_cbReverseRows_stateChanged ( int ); + void on_cbReverseColumns_stateChanged ( int ); + void on_groupBox_toggled ( bool ); + + + private: + void resetDisplayValues (); + void calculateMapping(); + + Ui::DatasetSelector* mUi; + int mSourceRowCount; + int mSourceColumnCount; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.ui b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.ui new file mode 100644 index 00000000..5c55d3ea --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDatasetSelector.ui @@ -0,0 +1,164 @@ + + Mirko Boehm <mirko@kdab.com> + + + DatasetSelector + + + + 0 + 0 + 728 + 344 + + + + + 3 + 3 + 0 + 0 + + + + + 0 + 0 + + + + Data Selector + + + + 9 + + + 6 + + + + + Only display a subset of the model in the chart: + + + true + + + false + + + + 9 + + + 6 + + + + + in reverse order. + + + + + + + ... + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + columns starting at column + + + Qt::AlignCenter + + + + + + + + + + Display + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + ... + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + rows starting at row + + + Qt::AlignCenter + + + + + + + in reverse order. + + + + + + + Display + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::Vertical + + + + 169 + 31 + + + + + + + + + + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.cpp new file mode 100644 index 00000000..6632545e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.cpp @@ -0,0 +1,155 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include +#include +#include + +#include + +#include + +using namespace KDChart; + +DiagramObserver::DiagramObserver( AbstractDiagram * diagram, QObject* parent ) + : QObject( parent ), m_diagram( diagram ) +{ + if ( m_diagram ) { + connect( m_diagram, SIGNAL(destroyed(QObject*)), SLOT(slotDestroyed(QObject*))); + connect( m_diagram, SIGNAL(aboutToBeDestroyed()), SLOT(slotAboutToBeDestroyed())); + connect( m_diagram, SIGNAL(modelsChanged()), SLOT(slotModelsChanged())); + } + init(); +} + +DiagramObserver::~DiagramObserver() +{ +} + +const AbstractDiagram* DiagramObserver::diagram() const +{ + return m_diagram; +} + +AbstractDiagram* DiagramObserver::diagram() +{ + return m_diagram; +} + + +void DiagramObserver::init() +{ + if ( !m_diagram ) + return; + + if ( m_model ) + disconnect(m_model); + + if ( m_attributesmodel ) + disconnect(m_attributesmodel); + + const bool con = connect( m_diagram, SIGNAL( viewportCoordinateSystemChanged() ), this, SLOT( slotDataChanged() ) ); + Q_ASSERT( con ); + Q_UNUSED( con ) + connect( m_diagram, SIGNAL(dataHidden()), SLOT(slotDataHidden()) ); + + if ( m_diagram->model() ) { + connect( m_diagram->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), + SLOT(slotDataChanged(QModelIndex,QModelIndex))); + connect( m_diagram->model(), SIGNAL(rowsInserted(QModelIndex,int,int)), + SLOT(slotDataChanged())); + connect( m_diagram->model(), SIGNAL(columnsInserted(QModelIndex,int,int)), + SLOT(slotDataChanged())); + connect( m_diagram->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)), + SLOT(slotDataChanged())); + connect( m_diagram->model(), SIGNAL(columnsRemoved(QModelIndex,int,int)), + SLOT(slotDataChanged())); + connect( m_diagram->model(), SIGNAL(modelReset()), + SLOT(slotDataChanged())); + connect( m_diagram->model(), SIGNAL(headerDataChanged(Qt::Orientation,int,int)), + SLOT(slotHeaderDataChanged(Qt::Orientation,int,int))); + } + + if ( m_diagram->attributesModel() ) + connect( m_diagram->attributesModel(), SIGNAL(attributesChanged(QModelIndex,QModelIndex)), + SLOT(slotAttributesChanged(QModelIndex,QModelIndex))); + m_model = m_diagram->model(); + m_attributesmodel = m_diagram->attributesModel(); +} + + +void DiagramObserver::slotDestroyed(QObject*) +{ + //qDebug() << this << "emits signal\n" + // " emit diagramDestroyed(" << m_diagram << ")"; + AbstractDiagram* diag = m_diagram; + disconnect( m_diagram, 0, this, 0); + m_diagram = 0; + emit diagramDestroyed( diag ); +} + +void DiagramObserver::slotAboutToBeDestroyed() +{ + emit diagramAboutToBeDestroyed( m_diagram ); +} + +void DiagramObserver::slotModelsChanged() +{ + init(); + slotDataChanged(); + slotAttributesChanged(); +} + +void DiagramObserver::slotHeaderDataChanged(Qt::Orientation,int,int) +{ + //qDebug() << "DiagramObserver::slotHeaderDataChanged()"; + emit diagramDataChanged( m_diagram ); +} + +void DiagramObserver::slotDataChanged(QModelIndex,QModelIndex) +{ + slotDataChanged(); +} + +void DiagramObserver::slotDataChanged() +{ + //qDebug() << "DiagramObserver::slotDataChanged()"; + emit diagramDataChanged( m_diagram ); +} + +void DiagramObserver::slotDataHidden() +{ + //qDebug() << "DiagramObserver::slotDataHidden()"; + emit diagramDataHidden( m_diagram ); +} + +void DiagramObserver::slotAttributesChanged(QModelIndex,QModelIndex) +{ + slotAttributesChanged(); +} + +void DiagramObserver::slotAttributesChanged() +{ + //qDebug() << "DiagramObserver::slotAttributesChanged()"; + emit diagramAttributesChanged( m_diagram ); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.h b/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.h new file mode 100644 index 00000000..9a1e0bc0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartDiagramObserver.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTDIAGRAMOBSERVER_H_ +#define __KDCHARTDIAGRAMOBSERVER_H_ + +#include "KDChartGlobal.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QAbstractItemModel; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractDiagram; + + /** + * \brief A DiagramObserver watches the associated diagram for + * changes and deletion and emits corresponsing signals. + */ + class KDCHART_EXPORT DiagramObserver : public QObject + { + Q_OBJECT + public: + /** + * Constructs a new observer observing the given diagram. + */ + explicit DiagramObserver( AbstractDiagram * diagram, QObject* parent = 0 ); + ~DiagramObserver(); + + const AbstractDiagram* diagram() const; + AbstractDiagram* diagram(); + + Q_SIGNALS: + /** This signal is emitted immediately before the diagram is + * being destroyed. */ + void diagramDestroyed( AbstractDiagram* diagram ); + /** Emitted when a diagram is being destroyed, but before its data is invalidated **/ + void diagramAboutToBeDestroyed( AbstractDiagram* diagram ); + /** This signal is emitted whenever the data of the diagram changes. */ + void diagramDataChanged( AbstractDiagram* diagram ); + /** This signal is emitted whenever any of the data of the diagram was set (un)hidden. */ + void diagramDataHidden( AbstractDiagram* diagram ); + /** This signal is emitted whenever the attributes of the diagram change. */ + void diagramAttributesChanged( AbstractDiagram* diagram ); + + private Q_SLOTS: + void slotDestroyed(QObject*); + void slotAboutToBeDestroyed(); + void slotHeaderDataChanged(Qt::Orientation,int,int); + void slotDataChanged(QModelIndex,QModelIndex); + void slotDataChanged(); + void slotDataHidden(); + void slotAttributesChanged(); + void slotAttributesChanged(QModelIndex,QModelIndex); + void slotModelsChanged(); + + private: + void init(); + + AbstractDiagram* m_diagram; + QPointer m_model; + QPointer m_attributesmodel; + }; +} + +#endif // KDChartDiagramObserver_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartEnums.h b/massif-visualizer/kdchart/src/KDChart/KDChartEnums.h new file mode 100644 index 00000000..e90ab2aa --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartEnums.h @@ -0,0 +1,346 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTENUMS_H__ +#define __KDCHARTENUMS_H__ + +#include "KDChartGlobal.h" + +#include +#include +#include + +/** \file KDChartEnums.h + \brief Definition of global enums. + */ + +/** + Project global class providing some enums needed both by KDChartParams + and by KDChartCustomBox. + */ +class KDCHART_EXPORT KDChartEnums :public QObject +{ + Q_OBJECT + Q_ENUMS( TextLayoutPolicy ) + Q_ENUMS( AreaName ) + Q_ENUMS( PositionFlag ) + +public: + /** + GranularitySequence specifies the values, that may be applied, + to determine a step width within a given data range. + + \note Granularity with can be set for Linear axis calculation mode only, + there is no way to specify a step width for Logarithmic axes. + + Value occurring in the GranularitySequence names only are showing + their respective relation ship. For real data they will most times not + be used directly, but be multiplied by positive (or negative, resp.) + powers of ten. + + A granularity sequence is a sequence of values from the following set: + 1, 1.25, 2, 2.5, 5. + + The reason for using one of the following three pre-defined granularity + sequences (instead of just using the best matching step width) is to + follow a simple rule: If scaling becomes finer (== smaller step width) + no value, that has been on a grid line before, shall loose its line + and be NOT on a grid line anymore! + + This means: Smaller step width may not remove any grid lines, but it + may add additional lines in between. + + \li \c GranularitySequence_10_20 Step widths can be 1, or 2, but they never can be 2.5 nor 5, nor 1.25. + \li \c GranularitySequence_10_50 Step widths can be 1, or 5, but they never can be 2, nor 2.5, nor 1.25. + \li \c GranularitySequence_25_50 Step widths can be 2.5, or 5, but they never can be 1, nor 2, nor 1.25. + \li \c GranularitySequence_125_25 Step widths can be 1.25 or 2.5 but they never can be 1, nor 2, nor 5. + \li \c GranularitySequenceIrregular Step widths can be all of these values: 1, or 1.25, or 2, or 2.5, or 5. + + \note When ever possible, try to avoid using GranularitySequenceIrregular! + Allowing all possible step values, using this granularity sequence involves a + serious risk: Your users might be irritated due to 'jumping' grid lines, when step size + is changed from 2.5 to 2 (or vice versa, resp.). + In case you still want to use GranularitySequenceIrregular just make sure to NOT draw + any sub-grid lines, because in most cases you will get not-matching step widths for + the sub-grid. + In short: GranularitySequenceIrregular can safely be used if your data range is not + changing at all AND (b) you will not allow the coordinate plane to be zoomed + AND (c) you are not displaying any sub-grid lines. + + Since you probably like having the value 1 as an allowed step width, + the granularity sequence decision boils down to a boolean question: + \li To get ten divided by five you use GranularitySequence_10_20, while + \li for having it divided by two GranularitySequence_10_50 is your choice. + + */ + enum GranularitySequence { + GranularitySequence_10_20, + GranularitySequence_10_50, + GranularitySequence_25_50, + GranularitySequence_125_25, + GranularitySequenceIrregular }; + + /** + Converts the specified granularity sequence enum to a + string representation. + + \param sequence the granularity sequence enum to convert + \return the string representation of the granularity sequence + */ + static QString granularitySequenceToString( GranularitySequence sequence ) { + switch ( sequence ) { + case GranularitySequence_10_20: + return QString::fromLatin1("GranularitySequence_10_20"); + case GranularitySequence_10_50: + return QString::fromLatin1("GranularitySequence_10_50"); + case GranularitySequence_25_50: + return QString::fromLatin1("GranularitySequence_25_50"); + case GranularitySequence_125_25: + return QString::fromLatin1("GranularitySequence_125_25"); + case GranularitySequenceIrregular: + return QString::fromLatin1("GranularitySequenceIrregular"); + } + Q_ASSERT( !"Unknown GranularitySequenceValue" ); + return QString::fromLatin1("GranularitySequence_10_20"); + } + + + /** + Converts the specified string to a granularity sequence enum value. + + \param string the string to convert + \return the granularity sequence enum value + */ + static GranularitySequence stringToGranularitySequence( const QString& string ) { + if ( string == QString::fromLatin1("GranularitySequence_10_20") ) + return GranularitySequence_10_20; + if ( string == QString::fromLatin1("GranularitySequence_10_50") ) + return GranularitySequence_10_50; + if ( string == QString::fromLatin1("GranularitySequence_25_50") ) + return GranularitySequence_25_50; + if ( string == QString::fromLatin1("GranularitySequence_125") ) + return GranularitySequence_125_25; + if ( string == QString::fromLatin1("GranularitySequenceIrregular") ) + return GranularitySequenceIrregular; + // default, should not happen + return GranularitySequence_10_20; + } + + + /** + Text layout policy: what to do if text that is to be drawn would + cover neighboring text or neighboring areas. + + \li \c LayoutJustOverwrite Just ignore the layout collision and write the text nevertheless. + \li \c LayoutPolicyRotate Try counter-clockwise rotation to make the text fit into the space. + \li \c LayoutPolicyShiftVertically Shift the text baseline upwards (or downwards, resp.) and draw a connector line between the text and its anchor. + \li \c LayoutPolicyShiftHorizontally Shift the text baseline to the left (or to the right, resp.) and draw a connector line between the text and its anchor. + \li \c LayoutPolicyShrinkFontSize Reduce the text font size. + + \sa KDChartParams::setPrintDataValues + */ + enum TextLayoutPolicy { LayoutJustOverwrite, + LayoutPolicyRotate, + LayoutPolicyShiftVertically, + LayoutPolicyShiftHorizontally, + LayoutPolicyShrinkFontSize }; + + /** + Converts the specified text layout policy enum to a + string representation. + + \param type the text layout policy to convert + \return the string representation of the text layout policy enum + */ + static QString layoutPolicyToString( TextLayoutPolicy type ); + + + /** + Converts the specified string to a text layout policy enum value. + + \param string the string to convert + \return the text layout policy enum value + */ + static TextLayoutPolicy stringToLayoutPolicy( const QString& string ); + + + /** + Numerical values of the static KDChart::Position instances, + for using a Position::value() with a switch () statement. + + \sa Position + */ + enum PositionValue { + PositionUnknown = 0, + PositionCenter = 1, + PositionNorthWest = 2, + PositionNorth = 3, + PositionNorthEast = 4, + PositionEast = 5, + PositionSouthEast = 6, + PositionSouth = 7, + PositionSouthWest = 8, + PositionWest = 9, + PositionFloating =10 + }; + + + /** + Measure calculation mode: the way how the absolute value of a KDChart::Measure is determined during KD Chart's internal geometry calculation time. + + KDChart::Measure values either are relative (calculated in relation to a given AbstractArea), or they are absolute (used as fixed values). + + Values stored in relative measure always are interpreted as per-mille of a reference area's height (or width, resp.) depending on the orientation set for the KDChart::Measure. + + \li \c MeasureCalculationModeAbsolute Value set by setValue() is absolute, to be used unchanged. + \li \c MeasureCalculationModeRelative Value is relative, the reference area is specified by setReferenceArea(), and orientation specified by setOrientation(). + \li \c MeasureCalculationModeAuto Value is relative, KD Chart will automatically determine which reference area to use, and it will determine the orientation too. + \li \c MeasureCalculationModeAutoArea Value is relative, Orientation is specified by setOrientation(), and KD Chart will automatically determine which reference area to use. + \li \c MeasureCalculationModeAutoOrientation Value is relative, Area is specified by setReferenceArea(), and KD Chart will automatically determine which orientation to use. + + \sa KDChart::Measure::setCalculationMode + */ + enum MeasureCalculationMode { MeasureCalculationModeAbsolute, + MeasureCalculationModeRelative, + MeasureCalculationModeAuto, + MeasureCalculationModeAutoArea, + MeasureCalculationModeAutoOrientation }; + + /** + Converts the specified measure calculation mode enum to a + string representation. + + \param mode the measure calculation mode to convert + \return the string representation of the Measure calculation mode enum + */ + static QString measureCalculationModeToString( MeasureCalculationMode mode ) { + switch ( mode ) { + case MeasureCalculationModeAbsolute: + return QString::fromLatin1("MeasureCalculationModeAbsolute"); + case MeasureCalculationModeAuto: + return QString::fromLatin1("MeasureCalculationModeAuto"); + case MeasureCalculationModeAutoArea: + return QString::fromLatin1("MeasureCalculationModeAutoArea"); + case MeasureCalculationModeAutoOrientation: + return QString::fromLatin1("MeasureCalculationModeAutoOrientation"); + case MeasureCalculationModeRelative: + return QString::fromLatin1("MeasureCalculationModeRelative"); + } + Q_ASSERT( !"unhandled MeasureCalculationMode" ); + return QString::fromLatin1("MeasureCalculationModeAuto"); + } + + + /** + Converts the specified string to a measure calculation mode enum value. + + \param string the string to convert + \return the measure calculation mode enum value + */ + static MeasureCalculationMode stringToMeasureCalculationMode( const QString& string ) { + if ( string == QString::fromLatin1("MeasureCalculationModeAbsolute") ) + return MeasureCalculationModeAbsolute; + if ( string == QString::fromLatin1("MeasureCalculationModeAuto") ) + return MeasureCalculationModeAuto; + if ( string == QString::fromLatin1("MeasureCalculationModeAutoArea") ) + return MeasureCalculationModeAutoArea; + if ( string == QString::fromLatin1("MeasureCalculationModeAutoOrientation") ) + return MeasureCalculationModeAutoOrientation; + if ( string == QString::fromLatin1("MeasureCalculationModeRelative") ) + return MeasureCalculationModeRelative; + // default, should not happen + return MeasureCalculationModeAuto; + } + + /** + Measure orientation mode: the way how the absolute value of a KDChart::Measure is determined during KD Chart's internal geometry calculation time. + + KDChart::Measure values either are relative (calculated in relation to a given AbstractArea), or they are absolute (used as fixed values). + + Values stored in relative measure take into account the width (and/or the height, resp.) of a so-called reference area, + that is either specified by KDChart::Measure::setReferenceArea, or determined by KD Chart automatically, respectively. + + \li \c MeasureOrientationAuto Value is calculated, based upon the width (or on the height, resp.) of the reference area: KD Chart will automatically determie an appropriate way. + \li \c MeasureOrientationHorizontal Value is calculated, based upon the width of the reference area. + \li \c MeasureOrientationVertical Value is calculated, based upon the height of the reference area. + \li \c MeasureOrientationMinimum Value is calculated, based upon the width (or on the height, resp.) of the reference area - which ever is smaller. + \li \c MeasureOrientationMaximum Value is calculated, based upon the width (or on the height, resp.) of the reference area - which ever is smaller. + + \sa KDChart::Measure::setOrientationMode + */ + enum MeasureOrientation { MeasureOrientationAuto, + MeasureOrientationHorizontal, + MeasureOrientationVertical, + MeasureOrientationMinimum, + MeasureOrientationMaximum }; + + /** + Converts the specified measure orientation enum to a + string representation. + + \param mode the measure orientation to convert + \return the string representation of the measure orientation enum + */ + static QString measureOrientationToString( MeasureOrientation mode ) { + switch ( mode ) { + case MeasureOrientationAuto: + return QString::fromLatin1("MeasureOrientationAuto"); + case MeasureOrientationHorizontal: + return QString::fromLatin1("MeasureOrientationHorizontal"); + case MeasureOrientationVertical: + return QString::fromLatin1("MeasureOrientationVertical"); + case MeasureOrientationMinimum: + return QString::fromLatin1("MeasureOrientationMinimum"); + case MeasureOrientationMaximum: + return QString::fromLatin1("MeasureOrientationMaximum"); + } + Q_ASSERT( !"Unknown MeasureOrientation value" ); + return QString::fromLatin1("MeasureOrientationAuto"); + } + + + /** + Converts the specified string to a measure orientation enum value. + + \param string the string to convert + \return the measure orientation enum value + */ + static MeasureOrientation stringToMeasureOrientation( const QString& string ) { + if ( string == QString::fromLatin1("MeasureOrientationAuto") ) + return MeasureOrientationAuto; + if ( string == QString::fromLatin1("MeasureOrientationHorizontal") ) + return MeasureOrientationHorizontal; + if ( string == QString::fromLatin1("MeasureOrientationVertical") ) + return MeasureOrientationVertical; + if ( string == QString::fromLatin1("MeasureOrientationMinimum") ) + return MeasureOrientationMinimum; + if ( string == QString::fromLatin1("MeasureOrientationMaximum") ) + return MeasureOrientationMaximum; + // default, should not happen + return MeasureOrientationAuto; + } + + +}; + + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartFrameAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartFrameAttributes.cpp new file mode 100644 index 00000000..d195b397 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartFrameAttributes.cpp @@ -0,0 +1,139 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartFrameAttributes.h" + +#include + +#define d d_func() + +using namespace KDChart; + +class FrameAttributes::Private +{ + friend class FrameAttributes; +public: + Private(); +private: + bool visible; + QPen pen; + qreal cornerRadius; + int padding; +}; + +FrameAttributes::Private::Private() : + visible( false ), + cornerRadius( 0 ), + padding( 0 ) +{ +} + + +FrameAttributes::FrameAttributes() + : _d( new Private() ) +{ +} + +FrameAttributes::FrameAttributes( const FrameAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +FrameAttributes & FrameAttributes::operator=( const FrameAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +FrameAttributes::~FrameAttributes() +{ + delete _d; _d = 0; +} + + +bool FrameAttributes::operator==( const FrameAttributes& r ) const +{ + return ( isVisible() == r.isVisible() && + pen() == r.pen() && + cornerRadius() == r.cornerRadius() && + padding() == r.padding() ); +} + + + + +void FrameAttributes::setVisible( bool visible ) +{ + d->visible = visible; +} + +bool FrameAttributes::isVisible() const +{ + return d->visible; +} + +void FrameAttributes::setPen( const QPen & pen ) +{ + d->pen = pen; +} + +QPen FrameAttributes::pen() const +{ + return d->pen; +} + +void FrameAttributes::setCornerRadius(qreal radius) +{ + d->cornerRadius = radius; +} + +qreal FrameAttributes::cornerRadius() const +{ + return d->cornerRadius; +} + +void FrameAttributes::setPadding( int padding ) +{ + d->padding = padding; +} + +int FrameAttributes::padding() const +{ + return d->padding; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::FrameAttributes& fa) +{ + dbg << "KDChart::FrameAttributes(" + << "visible="< +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A set of attributes for frames around items + */ +class KDCHART_EXPORT FrameAttributes +{ +public: + FrameAttributes(); + FrameAttributes( const FrameAttributes& ); + FrameAttributes &operator= ( const FrameAttributes& ); + + ~FrameAttributes(); + + void setVisible( bool visible ); + bool isVisible() const; + + void setPen( const QPen & pen ); + QPen pen() const; + + void setCornerRadius( qreal radius ); + qreal cornerRadius() const; + + void setPadding( int padding ); + int padding() const; + + bool operator==( const FrameAttributes& ) const; + inline bool operator!=( const FrameAttributes& other ) const { return !operator==(other); } + +private: + + KDCHART_DECLARE_PRIVATE_BASE_VALUE( FrameAttributes ) +}; // End of class FrameAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::FrameAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::FrameAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::FrameAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::FrameAttributes ) + +#endif // KDCHARTFRAMEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartGlobal.h b/massif-visualizer/kdchart/src/KDChart/KDChartGlobal.h new file mode 100644 index 00000000..69ee16e0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartGlobal.h @@ -0,0 +1,207 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ +/** \file KDChartGlobal +\brief Contains KDChart macros. + +Contains KDChart macros. */ + +#ifndef __KDCHARTGLOBAL_H__ +#define __KDCHARTGLOBAL_H__ + +#include + +#include "kdchart_export.h" + +#ifndef KDAB_SET_OBJECT_NAME +template +inline T & __kdab__dereference_for_methodcall( T & o ) { + return o; +} + +template +inline T & __kdab__dereference_for_methodcall( T * o ) { + return *o; +} + +#define KDAB_SET_OBJECT_NAME( x ) __kdab__dereference_for_methodcall( x ).setObjectName( QLatin1String( #x ) ) +#endif + +#define KDCHART_DECLARE_PRIVATE_DERIVED( X ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private * ); \ +private: \ + void init(); + +#define KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( X, ParentType ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private *, ParentType ); \ +private: \ + void init(); + +#define KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( X ) \ + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( X, QWidget* ) + +#define KDCHART_DECLARE_PRIVATE_BASE_VALUE( X ) \ +public: \ + inline void swap( X & other ) { qSwap( _d, other._d ); } \ +protected: \ + class Private; \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( X ) \ +public: \ + class Private; \ +protected: \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ + explicit inline X( Private * ); \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( X ) \ +public: \ + class Private; \ +protected: \ + Private * d_func() { return _d; } \ + const Private * d_func() const { return _d; } \ + explicit inline X( Private *, QWidget* ); \ +private: \ + void init(); \ + Private * _d; + +#define KDCHART_DERIVED_PRIVATE_FOOTER( CLASS, PARENT ) \ +inline CLASS::CLASS( Private * p ) \ + : PARENT( p ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ +{ return static_cast( PARENT::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ +{ return static_cast( PARENT::d_func() ); } + + +#define KDCHART_DECLARE_DERIVED_DIAGRAM( X, PLANE ) \ +public: \ + class Private; \ +protected: \ + inline Private * d_func(); \ + inline const Private * d_func() const; \ + explicit inline X( Private * ); \ + explicit inline X( Private *, QWidget *, PLANE * ); \ +private: \ + void init(); + +#define KDCHART_IMPL_DERIVED_DIAGRAM( CLASS, PARENT, PLANE ) \ +inline CLASS::CLASS( Private * p ) \ + : PARENT( p ) { init(); } \ +inline CLASS::CLASS( \ + Private * p, QWidget* parent, PLANE * plane ) \ + : PARENT( p, parent, plane ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ + { return static_cast( PARENT::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ + { return static_cast( PARENT::d_func() ); } + + +#define KDCHART_IMPL_DERIVED_PLANE( CLASS, BASEPLANE ) \ +inline CLASS::CLASS( Private * p, Chart* parent ) \ + : BASEPLANE( p, parent ) { init(); } \ +inline CLASS::Private * CLASS::d_func() \ + { return static_cast( BASEPLANE::d_func() ); } \ +inline const CLASS::Private * CLASS::d_func() const \ + { return static_cast( BASEPLANE::d_func() ); } + + +#include // qSwap +#ifndef QT_NO_STL +#include +#define KDCHART_DECLARE_SWAP_SPECIALISATION( X ) \ +QT_BEGIN_NAMESPACE \ + template <> inline void qSwap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ +QT_END_NAMESPACE \ + namespace std { \ + template <> inline void swap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ + } +#else +#define KDCHART_DECLARE_SWAP_SPECIALISATION( X ) \ +QT_BEGIN_NAMESPACE \ + template <> inline void qSwap( X & lhs, X & rhs ) \ + { lhs.swap( rhs ); } \ +QT_END_NAMESPACE +#endif + +#define KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( X ) \ + KDCHART_DECLARE_SWAP_SPECIALISATION( X ) + +#define KDCHART_DECLARE_SWAP_BASE( X ) \ +protected: \ + void doSwap( X& other ) \ + { qSwap( _d, other._d); } + +#define KDCHART_DECLARE_SWAP_DERIVED( X ) \ + void swap( X& other ) { doSwap( other ); } + +#if defined(Q_OS_WIN) && defined(QT_DLL) +#if defined(_MSC_VER) && _MSC_VER >= 1300 +// workaround http://support.microsoft.com/default.aspx?scid=kb;en-us;309801 +#include +#include +template class Q_DECL_IMPORT QVector; +#endif +#endif + +#include + +namespace KDChart { + +enum DisplayRoles { + DatasetPenRole = 0x0A79EF95, + DatasetBrushRole, + DataValueLabelAttributesRole, + ThreeDAttributesRole, + LineAttributesRole, + ThreeDLineAttributesRole, + BarAttributesRole, + StockBarAttributesRole, + ThreeDBarAttributesRole, + PieAttributesRole, + ThreeDPieAttributesRole, + DataHiddenRole, + ValueTrackerAttributesRole, + CommentRole +}; +} + +#endif // __KDCHARTGLOBAL_H__ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartGridAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartGridAttributes.cpp new file mode 100644 index 00000000..ee155003 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartGridAttributes.cpp @@ -0,0 +1,317 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartGridAttributes.h" + +#include +#include + +#include + +#define d d_func() + +using namespace KDChart; + +class GridAttributes::Private +{ + friend class GridAttributes; +public: + Private(); +private: + bool visible; + KDChartEnums::GranularitySequence sequence; + bool linesOnAnnotations; + qreal stepWidth; + qreal subStepWidth; + bool adjustLower; + bool adjustUpper; + QPen pen; + bool subVisible; + QPen subPen; + bool outerVisible; + QPen zeroPen; +}; + +GridAttributes::Private::Private() + : visible( true ), + sequence( KDChartEnums::GranularitySequence_10_20 ), + linesOnAnnotations( false ), + stepWidth( 0.0 ), + subStepWidth( 0.0 ), + adjustLower( true ), + adjustUpper( true ), + pen( QColor(0xa0, 0xa0, 0xa0 ) ), + subVisible( true ), + subPen( QColor(0xd0, 0xd0, 0xd0 ) ), + outerVisible( true ), + zeroPen( QColor( 0x00, 0x00, 0x80 ) ) +{ + pen.setCapStyle( Qt::FlatCap ); + subPen.setCapStyle( Qt::FlatCap ); + zeroPen.setCapStyle( Qt::FlatCap ); +} + + +GridAttributes::GridAttributes() + : _d( new Private() ) +{ + // this bloc left empty intentionally +} + +GridAttributes::GridAttributes( const GridAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +GridAttributes & GridAttributes::operator=( const GridAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +GridAttributes::~GridAttributes() +{ + delete _d; _d = 0; +} + + +bool GridAttributes::operator==( const GridAttributes& r ) const +{ + return isGridVisible() == r.isGridVisible() && + gridGranularitySequence() == r.gridGranularitySequence() && + linesOnAnnotations() == r.linesOnAnnotations() && + adjustLowerBoundToGrid() == r.adjustLowerBoundToGrid() && + adjustUpperBoundToGrid() == r.adjustUpperBoundToGrid() && + gridPen() == r.gridPen() && + isSubGridVisible() == r.isSubGridVisible() && + subGridPen() == r.subGridPen() && + isOuterLinesVisible() == r.isOuterLinesVisible() && + zeroLinePen() == r.zeroLinePen(); +} + + +void GridAttributes::setGridVisible( bool visible ) +{ + d->visible = visible; +} + +bool GridAttributes::isGridVisible() const +{ + return d->visible; +} + +void GridAttributes::setLinesOnAnnotations( bool b ) +{ + d->linesOnAnnotations = b; +} + +bool GridAttributes::linesOnAnnotations() const +{ + return d->linesOnAnnotations; +} + +/** + * Specifies the step width to be used for calculating + * the grid lines. + * + * \note Step with can be set for Linear axis calculation mode only, + * there is no way to specify a step width for Logarithmic axes. + * + * By default the GridAttributes class does not use a fixed step width, + * but it uses KDChartEnums::GranularitySequence_10_20. + * + * \param stepWidth the step width to be used. + * If this parameter is omitted (or set to Zero, resp.) + * the automatic step width calculation will be done, + * using the granularity sequence specified. + * This is the default. + * + * \sa gridStepWidth, setGranularitySequence + */ +void GridAttributes::setGridStepWidth( qreal stepWidth ) +{ + d->stepWidth = stepWidth; +} + +/** + * Returns the step width to be used for calculating + * the grid lines. + * + * \sa setGridStepWidth + */ +qreal GridAttributes::gridStepWidth() const +{ + return d->stepWidth; +} + + +/** + * Specifies the sub-step width to be used for calculating + * the grid sub-lines. + * + * + * \param subStepWidth the sub-step width to be used. + * If this parameter is omitted (or set to Zero, resp.) + * the automatic calculation will be done, using the + * granularity sequence specified. + * This is the default. + * + * \sa gridSubStepWidth + */ + +void GridAttributes::setGridSubStepWidth( qreal subStepWidth ) +{ + d->subStepWidth = subStepWidth; +} + +/** + * Returns the sub-step width to be used for calculating + * the sub-grid lines. + * + * \sa setGridStepWidth + */ +qreal GridAttributes::gridSubStepWidth() const +{ + return d->subStepWidth; +} + +/** + * Specifies the granularity sequence to be used for calculating + * the grid lines. + * + * By default the GridAttributes class uses KDChartEnums::GranularitySequence_10_20. + * + * \note Granularity can be set for Linear axis calculation mode only, + * there is no way to specify a step width for Logarithmic axes. + * + * \note The sequence specified by this method is ignored, if + * a fixed step width was specified via setStepWidth. + * + * \param sequence one of the sequences declared in + * KDChartEnums::GranularitySequence. + * + * \sa gridGranularitySequence, setStepWidth + */ +void GridAttributes::setGridGranularitySequence( KDChartEnums::GranularitySequence sequence ) +{ + d->sequence = sequence; +} + +/** + * Returns the granularity sequence to be used for calculating + * the grid lines. + * + * \sa setGridGranularitySequence + */ +KDChartEnums::GranularitySequence GridAttributes::gridGranularitySequence() const +{ + return d->sequence; +} + +void GridAttributes::setAdjustBoundsToGrid( bool adjustLower, bool adjustUpper ) +{ + d->adjustLower = adjustLower; + d->adjustUpper = adjustUpper; +} +bool GridAttributes::adjustLowerBoundToGrid() const +{ + return d->adjustLower; +} +bool GridAttributes::adjustUpperBoundToGrid() const +{ + return d->adjustUpper; +} + +void GridAttributes::setGridPen( const QPen & pen ) +{ + d->pen = pen; + d->pen.setCapStyle( Qt::FlatCap ); +} + +QPen GridAttributes::gridPen() const +{ + return d->pen; +} + +void GridAttributes::setSubGridVisible( bool visible ) +{ + d->subVisible = visible; +} + +bool GridAttributes::isSubGridVisible() const +{ + return d->subVisible; +} + +void GridAttributes::setSubGridPen( const QPen & pen ) +{ + d->subPen = pen; + d->subPen.setCapStyle( Qt::FlatCap ); +} + +QPen GridAttributes::subGridPen() const +{ + return d->subPen; +} + +void GridAttributes::setOuterLinesVisible( bool visible ) +{ + d->outerVisible = visible; +} + +bool GridAttributes::isOuterLinesVisible() const +{ + return d->outerVisible; +} + +void GridAttributes::setZeroLinePen( const QPen & pen ) +{ + d->zeroPen = pen; + d->zeroPen.setCapStyle( Qt::FlatCap ); +} + +QPen GridAttributes::zeroLinePen() const +{ + return d->zeroPen; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::GridAttributes& a) +{ + dbg << "KDChart::GridAttributes(" + << "visible="< +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of grids + */ +class KDCHART_EXPORT GridAttributes +{ +public: + GridAttributes(); + GridAttributes( const GridAttributes& ); + GridAttributes &operator= ( const GridAttributes& ); + + ~GridAttributes(); + + void setGridVisible( bool visible ); + bool isGridVisible() const; + + /** + * When this is enabled, grid lines are drawn only where axis annotations are. + * Otherwise annotations are disregarded as far as the grid is concerned. + * + * The default is false. + */ + void setLinesOnAnnotations( bool ); + bool linesOnAnnotations() const; + + void setGridStepWidth( qreal stepWidth = 0.0 ); + qreal gridStepWidth() const; + + void setGridSubStepWidth( qreal subStepWidth = 0.0 ); + qreal gridSubStepWidth() const; + + /** + * Specify which granularity sequence is to be used to find a matching + * grid granularity. + * + * See details explained at KDChartEnums::GranularitySequence. + * + * You might also want to use setAdjustBoundsToGrid for fine-tuning the + * start/end value. + * + * \sa setAdjustBoundsToGrid, GranularitySequence + */ + void setGridGranularitySequence( KDChartEnums::GranularitySequence sequence ); + KDChartEnums::GranularitySequence gridGranularitySequence() const; + + /** + * By default visible bounds of the data area are adjusted to match + * a main grid line. + * If you set the respective adjust flag to false the bound will + * not start at a grid line's value but it will be the exact value + * of the data range set. + * + * \sa CartesianCoordinatePlane::setHorizontalRange + * \sa CartesianCoordinatePlane::setVerticalRange + */ + void setAdjustBoundsToGrid( bool adjustLower, bool adjustUpper ); + bool adjustLowerBoundToGrid() const; + bool adjustUpperBoundToGrid() const; + + void setGridPen( const QPen & pen ); + QPen gridPen() const; + + void setSubGridVisible( bool visible ); + bool isSubGridVisible() const; + + void setSubGridPen( const QPen & pen ); + QPen subGridPen() const; + + void setOuterLinesVisible( bool visible ); + bool isOuterLinesVisible() const; + + void setZeroLinePen( const QPen & pen ); + QPen zeroLinePen() const; + + bool operator==( const GridAttributes& ) const; + inline bool operator!=( const GridAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( GridAttributes ) +}; // End of class GridAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::GridAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::GridAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::GridAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::GridAttributes ) + +#endif // KDCHARTGRIDATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.cpp new file mode 100644 index 00000000..9a0aa1fe --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.cpp @@ -0,0 +1,137 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartHeaderFooter.h" +#include "KDChartHeaderFooter_p.h" + +#include "KDChartChart.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "KDTextDocument.h" + +#include + +using namespace KDChart; + +HeaderFooter::Private::Private() : + type( Header ), + position( Position::North ) +{ +} + +HeaderFooter::Private::~Private() +{ +} + +#define d d_func() + +HeaderFooter::HeaderFooter( Chart* parent ) : + TextArea( new Private() ) +{ + setParent( parent ); + init(); +} + +HeaderFooter::~HeaderFooter() +{ + emit destroyedHeaderFooter( this ); +} + +void HeaderFooter::setParent( QObject* parent ) +{ + QObject::setParent( parent ); + setParentWidget( qobject_cast( parent ) ); + if ( parent && ! autoReferenceArea() ) + setAutoReferenceArea( parent ); +} + +void HeaderFooter::init() +{ + TextAttributes ta; + ta.setPen( QPen(Qt::black) ); + ta.setFont( QFont( QLatin1String( "helvetica" ), 10, QFont::Bold, false ) ); + + Measure m( 35.0 ); + m.setRelativeMode( autoReferenceArea(), KDChartEnums::MeasureOrientationMinimum ); + ta.setFontSize( m ); + + m.setValue( 8.0 ); + m.setCalculationMode( KDChartEnums::MeasureCalculationModeAbsolute ); + ta.setMinimalFontSize( m ); + + setTextAttributes( ta ); +} + +/** + * Creates an exact copy of this header/footer. + */ +HeaderFooter * HeaderFooter::clone() const +{ + HeaderFooter* headerFooter = new HeaderFooter( new Private( *d ), 0 ); + headerFooter->setType( type() ); + headerFooter->setPosition( position() ); + headerFooter->setText( text() ); + headerFooter->setTextAttributes( textAttributes() ); + return headerFooter; +} + +bool HeaderFooter::compare( const HeaderFooter& other ) const +{ + return (type() == other.type()) && + (position() == other.position()) && + // also compare members inherited from the base class: + (autoReferenceArea() == other.autoReferenceArea()) && + (text() == other.text()) && + (textAttributes() == other.textAttributes()); +} + +void HeaderFooter::setType( HeaderFooterType type ) +{ + if ( d->type != type ) { + d->type = type; + emit positionChanged( this ); + } +} + +HeaderFooter::HeaderFooterType HeaderFooter::type() const +{ + return d->type; +} + +void HeaderFooter::setPosition( Position position ) +{ + if ( d->position != position ) { + d->position = position; + emit positionChanged( this ); + } +} + +Position HeaderFooter::position() const +{ + return d->position; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.h b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.h new file mode 100644 index 00000000..c2005f46 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTHEADERFOOTER_H +#define KDCHARTHEADERFOOTER_H + +#include "KDChartTextArea.h" +#include "KDChartPosition.h" + +namespace KDChart { + + class Chart; + class TextAttributes; + +/** + * @brief A header or footer displaying text above or below charts + */ +class KDCHART_EXPORT HeaderFooter : public TextArea +{ + Q_OBJECT + + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( HeaderFooter, Chart* ) + +public: + HeaderFooter( Chart* parent = 0 ); + virtual ~HeaderFooter(); + + virtual HeaderFooter * clone() const; + + bool compare( const HeaderFooter& other ) const; + + enum HeaderFooterType{ Header, + Footer }; + + void setType( HeaderFooterType type ); + HeaderFooterType type() const; + + void setPosition( Position position ); + Position position() const; + + void setParent( QObject* parent ); + +Q_SIGNALS: + void destroyedHeaderFooter( HeaderFooter* ); + void positionChanged( HeaderFooter* ); + +}; // End of class HeaderFooter + +} + + +#endif // KDCHARTHEADERFOOTER_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter_p.h new file mode 100644 index 00000000..2d76d39b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartHeaderFooter_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTHEADERFOOTER_P_H +#define KDCHARTHEADERFOOTER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartHeaderFooter.h" +#include "KDChartTextArea_p.h" +#include "KDChartChart.h" +#include + +#include + + +class KDTextDocument; + +namespace KDChart { + class Chart; + class TextAttributes; +} + +/** + * \internal + */ +class KDChart::HeaderFooter::Private : public KDChart::TextArea::Private +{ + friend class KDChart::HeaderFooter; +public: + explicit Private(); + ~Private(); + + Private( const Private& rhs ) : + TextArea::Private( rhs ), + type( rhs.type ), + position( rhs.position ) + { + } + + void updateTextDoc(); + +private: + // user-settable + HeaderFooterType type; + Position position; +}; + +inline KDChart::HeaderFooter::HeaderFooter( Private* d, KDChart::Chart* parent ) + : TextArea( d ) +{ + setParent( parent ); + init(); +} +inline KDChart::HeaderFooter::Private * KDChart::HeaderFooter::d_func() +{ + return static_cast( TextArea::d_func() ); +} +inline const KDChart::HeaderFooter::Private * KDChart::HeaderFooter::d_func() const +{ + return static_cast( TextArea::d_func() ); +} + + +#endif /* KDCHARTHEADERFOOTER_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.cpp new file mode 100644 index 00000000..ce07202d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.cpp @@ -0,0 +1,1030 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLayoutItems.h" +#include "KDTextDocument.h" +#include "KDChartAbstractArea.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartBackgroundAttributes.h" +#include "KDChartFrameAttributes.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartPrintingParameters.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + + +//#define DEBUG_ITEMS_PAINT + +/** + Inform the item about its widget: This enables the item, + to trigger that widget's update, whenever the size of the item's + contents has changed. + + Thus, you need to call setParentWidget on every item, that + has a non-fixed size. + */ +void KDChart::AbstractLayoutItem::setParentWidget( QWidget* widget ) +{ + mParent = widget; +} + +void KDChart::AbstractLayoutItem::paintAll( QPainter& painter ) +{ + paint( &painter ); +} + +/** + * Default impl: Paint the complete item using its layouted position and size. + */ +void KDChart::AbstractLayoutItem::paintCtx( PaintContext* context ) +{ + if ( context ) + paint( context->painter() ); +} + +/** + Report changed size hint: ask the parent widget to recalculate the layout. + */ +void KDChart::AbstractLayoutItem::sizeHintChanged() const +{ + // This is exactly like what QWidget::updateGeometry does. +// qDebug("KDChart::AbstractLayoutItem::sizeHintChanged() called"); + if ( mParent ) { + if ( mParent->layout() ) + mParent->layout()->invalidate(); + else + QApplication::postEvent( mParent, new QEvent( QEvent::LayoutRequest ) ); + } +} + +KDChart::TextBubbleLayoutItem::TextBubbleLayoutItem( const QString& text, + const KDChart::TextAttributes& attributes, + const QObject* area, + KDChartEnums::MeasureOrientation orientation, + Qt::Alignment alignment ) + : AbstractLayoutItem( alignment ), + m_text( new TextLayoutItem( text, attributes, area, orientation, alignment ) ) +{ +} + +KDChart::TextBubbleLayoutItem::TextBubbleLayoutItem() + : AbstractLayoutItem( Qt::AlignLeft ), + m_text( new TextLayoutItem() ) +{ +} + +KDChart::TextBubbleLayoutItem::~TextBubbleLayoutItem() +{ + delete m_text; +} + +void KDChart::TextBubbleLayoutItem::setAutoReferenceArea( const QObject* area ) +{ + m_text->setAutoReferenceArea( area ); +} + +const QObject* KDChart::TextBubbleLayoutItem::autoReferenceArea() const +{ + return m_text->autoReferenceArea(); +} + +void KDChart::TextBubbleLayoutItem::setText( const QString& text ) +{ + m_text->setText( text ); +} + +QString KDChart::TextBubbleLayoutItem::text() const +{ + return m_text->text(); +} + +void KDChart::TextBubbleLayoutItem::setTextAttributes( const TextAttributes& a ) +{ + m_text->setTextAttributes( a ); +} + +KDChart::TextAttributes KDChart::TextBubbleLayoutItem::textAttributes() const +{ + return m_text->textAttributes(); +} + +bool KDChart::TextBubbleLayoutItem::isEmpty() const +{ + return m_text->isEmpty(); +} + +Qt::Orientations KDChart::TextBubbleLayoutItem::expandingDirections() const +{ + return m_text->expandingDirections(); +} + +QSize KDChart::TextBubbleLayoutItem::maximumSize() const +{ + const int border = borderWidth(); + return m_text->maximumSize() + QSize( 2 * border, 2 * border ); +} + +QSize KDChart::TextBubbleLayoutItem::minimumSize() const +{ + const int border = borderWidth(); + return m_text->minimumSize() + QSize( 2 * border, 2 * border ); +} + +QSize KDChart::TextBubbleLayoutItem::sizeHint() const +{ + const int border = borderWidth(); + return m_text->sizeHint() + QSize( 2 * border, 2 * border ); +} + +void KDChart::TextBubbleLayoutItem::setGeometry( const QRect& r ) +{ + const int border = borderWidth(); + m_text->setGeometry( r.adjusted( border, border, -border, -border ) ); +} + +QRect KDChart::TextBubbleLayoutItem::geometry() const +{ + const int border = borderWidth(); + return m_text->geometry().adjusted( -border, -border, border, border ); +} + +void KDChart::TextBubbleLayoutItem::paint( QPainter* painter ) +{ + const QPen oldPen = painter->pen(); + const QBrush oldBrush = painter->brush(); + painter->setPen( Qt::black ); + painter->setBrush( QColor( 255, 255, 220 ) ); + painter->drawRoundRect( geometry(), 10 ); + painter->setPen( oldPen ); + painter->setBrush( oldBrush ); + m_text->paint( painter ); +} + +int KDChart::TextBubbleLayoutItem::borderWidth() const +{ + return 1; +} + +KDChart::TextLayoutItem::TextLayoutItem( const QString& text, + const KDChart::TextAttributes& attributes, + const QObject* area, + KDChartEnums::MeasureOrientation orientation, + Qt::Alignment alignment ) + : AbstractLayoutItem( alignment ) + , mText( text ) + , mTextAlignment( alignment ) + , mAttributes( attributes ) + , mAutoReferenceArea( area ) + , mAutoReferenceOrientation( orientation ) + , cachedSizeHint() // default this to invalid to force just-in-time calculation before first use of sizeHint() + , cachedFontSize( 0.0 ) + , cachedFont( mAttributes.font() ) +{ +} + +KDChart::TextLayoutItem::TextLayoutItem() + : AbstractLayoutItem( Qt::AlignLeft ) + , mText() + , mTextAlignment( Qt::AlignLeft ) + , mAttributes() + , mAutoReferenceArea( 0 ) + , mAutoReferenceOrientation( KDChartEnums::MeasureOrientationHorizontal ) + , cachedSizeHint() // default this to invalid to force just-in-time calculation before first use of sizeHint() + , cachedFontSize( 0.0 ) + , cachedFont( mAttributes.font() ) +{ + +} + +void KDChart::TextLayoutItem::setAutoReferenceArea( const QObject* area ) +{ + mAutoReferenceArea = area; + cachedSizeHint = QSize(); + sizeHint(); +} + +const QObject* KDChart::TextLayoutItem::autoReferenceArea() const +{ + return mAutoReferenceArea; +} + +void KDChart::TextLayoutItem::setText(const QString & text) +{ + mText = text; + cachedSizeHint = QSize(); + sizeHint(); + if ( mParent ) + mParent->update(); +} + +QString KDChart::TextLayoutItem::text() const +{ + return mText; +} + +void KDChart::TextLayoutItem::setTextAlignment( Qt::Alignment alignment) +{ + if ( mTextAlignment == alignment ) + return; + mTextAlignment = alignment; + if ( mParent ) + mParent->update(); +} + +Qt::Alignment KDChart::TextLayoutItem::textAlignment() const +{ + return mTextAlignment; +} + +/** + \brief Use this to specify the text attributes to be used for this item. + + \sa textAttributes +*/ +void KDChart::TextLayoutItem::setTextAttributes( const TextAttributes &a ) +{ + mAttributes = a; + cachedFont = a.font(); + cachedSizeHint = QSize(); // invalidate size hint + sizeHint(); + if ( mParent ) + mParent->update(); +} + +/** + Returns the text attributes to be used for this item. + + \sa setTextAttributes +*/ +KDChart::TextAttributes KDChart::TextLayoutItem::textAttributes() const +{ + return mAttributes; +} + + +Qt::Orientations KDChart::TextLayoutItem::expandingDirections() const +{ + return 0; // Grow neither vertically nor horizontally +} + +QRect KDChart::TextLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::TextLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::TextLayoutItem::maximumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +QSize KDChart::TextLayoutItem::minimumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +void KDChart::TextLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +// returns the bounding box of rect rotated around its center +QRectF rotatedRect( const QRectF& rect, qreal rotation ) +{ + QTransform t; + QPointF center = rect.center(); + t.translate( center.x(), center.y() ); + t.rotate( rotation ); + t.translate( -center.x(), -center.y() ); + return t.mapRect( rect ); +} + +qreal KDChart::TextLayoutItem::fitFontSizeToGeometry() const +{ + QFont f = realFont(); + const qreal origResult = f.pointSizeF(); + qreal result = origResult; + const qreal minSize = mAttributes.minimalFontSize().value(); + const QSize mySize = geometry().size(); + if ( mySize.isNull() ) { + return result; + } + + QFontMetrics fm( f ); + while ( true ) { + const QSizeF textSize = rotatedRect( fm.boundingRect( mText ), mAttributes.rotation() ).normalized().size(); + + if ( textSize.height() <= mySize.height() && textSize.width() <= mySize.width() ) { + return result; + } + + result -= 0.5; + if ( minSize > 0 && result < minSize ) { + return result + 0.5; + } else if ( result <= 0.0 ) { + return origResult; + } + f.setPointSizeF( result ); + fm = QFontMetrics( f ); + } +} + +qreal KDChart::TextLayoutItem::realFontSize() const +{ + return mAttributes.calculatedFontSize( mAutoReferenceArea, mAutoReferenceOrientation ); +} + +bool KDChart::TextLayoutItem::maybeUpdateRealFont() const +{ + const qreal fntSiz = realFontSize(); + const bool doUpdate = !cachedSizeHint.isValid() || cachedFontSize != fntSiz; + + if ( doUpdate && fntSiz > 0.0 ) { + cachedFontSize = fntSiz; + cachedFont.setPointSizeF( fntSiz ); + } + return doUpdate; // "didUpdate" by now +} + +QFont KDChart::TextLayoutItem::realFont() const +{ + maybeUpdateRealFont(); + return cachedFont; +} + +QPolygon KDChart::TextLayoutItem::boundingPolygon() const +{ + // should probably call sizeHint() here, but that one is expensive (see TODO there) + return mCachedBoundingPolygon; +} + +bool KDChart::TextLayoutItem::intersects( const TextLayoutItem& other, const QPointF& myPos, const QPointF& otherPos ) const +{ + return intersects( other, myPos.toPoint(), otherPos.toPoint() ); +} + +bool KDChart::TextLayoutItem::intersects( const TextLayoutItem& other, const QPoint& myPos, const QPoint& otherPos ) const +{ + QRegion myRegion( boundingPolygon().translated( myPos - otherPos ) ); + QRegion otherRegion( other.boundingPolygon() ); + + return myRegion.intersects( otherRegion ); +} + +QSize KDChart::TextLayoutItem::sizeHint() const +{ + // ### we only really need to recalculate the size hint when mAttributes.rotation has *changed* + if ( maybeUpdateRealFont() || mAttributes.rotation() || !cachedSizeHint.isValid() ) { + const QSize newSizeHint( calcSizeHint( cachedFont ) ); + Q_ASSERT( newSizeHint.isValid() ); + if ( newSizeHint != cachedSizeHint ) { + cachedSizeHint = newSizeHint; + sizeHintChanged(); + } + } + return cachedSizeHint; +} + +QSize KDChart::TextLayoutItem::sizeHintUnrotated() const +{ + maybeUpdateRealFont(); // make sure the cached font is up to date + return unrotatedSizeHint( cachedFont ); +} + + +// PENDING(kalle) Support auto shrink + + +QSize KDChart::TextLayoutItem::unrotatedTextSize( QFont fnt ) const +{ + if ( fnt == QFont() ) { + fnt = realFont(); // this is the cached font in most cases + } + + const QFontMetricsF fm( fnt, GlobalMeasureScaling::paintDevice() ); + QRect veryLarge( 0, 0, 100000, 100000 ); + // this overload of boundingRect() interprets \n as line breaks, not as regular characters. + return fm.boundingRect( veryLarge, Qt::AlignLeft | Qt::AlignTop, mText ).size().toSize(); +} + +int KDChart::TextLayoutItem::marginWidth() const +{ + return marginWidth( unrotatedTextSize() ); +} + +int KDChart::TextLayoutItem::marginWidth( const QSize& textSize ) const +{ + return qMin ( QApplication::style()->pixelMetric( QStyle::PM_ButtonMargin, 0, 0 ), + // decrease frame size if the text is small + textSize.height() * 2 / 3 ); +} + +QSize KDChart::TextLayoutItem::unrotatedSizeHint( const QFont& fnt ) const +{ + QSize ret = unrotatedTextSize( fnt ); + const int margin = marginWidth( ret ); + ret += QSize( margin, margin ); + return ret; +} + +QSize KDChart::TextLayoutItem::calcSizeHint( const QFont& font ) const +{ + const QSize size = unrotatedSizeHint( font ); + QPoint topLeft( -size.width() * 0.5, -size.height() * 0.5 ); + if ( !mAttributes.rotation() ) { + mCachedBoundingPolygon.resize( 4 ); + // using the same winding order as returned by QPolygon QTransform::mapToPolygon(const QRect&), + // which is: 0-1: top edge, 1-2: right edge, 2-3: bottom edge, 3-0: left edge (of input rect) + mCachedBoundingPolygon[ 0 ] = topLeft; + mCachedBoundingPolygon[ 1 ] = topLeft + QPoint( size.width(), 0 ); // top right + mCachedBoundingPolygon[ 2 ] = topLeft + QPoint( size.width(), size.height() ); // bottom right + mCachedBoundingPolygon[ 3 ] = topLeft + QPoint( 0, size.height() ); // bottom left + return size; + } + + const QRect rect( topLeft, size ); + QTransform t; + t.rotate( mAttributes.rotation() ); + mCachedBoundingPolygon = t.mapToPolygon( rect ); + + return mCachedBoundingPolygon.boundingRect().size(); +} + +void KDChart::TextLayoutItem::paint( QPainter* painter ) +{ + if ( !mRect.isValid() ) { + return; + } + const PainterSaver painterSaver( painter ); + QFont f = realFont(); + if ( mAttributes.autoShrink() ) { + f.setPointSizeF( fitFontSizeToGeometry() ); + } + painter->setFont( f ); + + QSize innerSize = unrotatedTextSize(); + QRectF rect = QRectF( QPointF( 0, 0 ), innerSize ); + rect.translate( -rect.center() ); + painter->translate( mRect.center() ); + painter->rotate( mAttributes.rotation() ); +#ifdef DEBUG_ITEMS_PAINT + painter->setPen( Qt::red ); + painter->drawRect( rect ); +#endif + + painter->setPen( PrintingParameters::scalePen( mAttributes.pen() ) ); + QTextDocument* document = mAttributes.textDocument(); + if ( document ) { + document->setPageSize( rect.size() ); + document->setHtml( mText ); + QAbstractTextDocumentLayout::PaintContext paintcontext; + // ### this doesn't work for rotated painting because clip does not translate the painting + // TODO translate the painting either using a QTransform or one of QPainter's transform stages + paintcontext.clip = rect; + document->documentLayout()->draw( painter, paintcontext ); + } else { + painter->drawText( rect, mTextAlignment, mText ); + } +} + +KDChart::HorizontalLineLayoutItem::HorizontalLineLayoutItem() + : AbstractLayoutItem( Qt::AlignCenter ) +{ +} + +Qt::Orientations KDChart::HorizontalLineLayoutItem::expandingDirections() const +{ + return Qt::Vertical|Qt::Horizontal; // Grow both vertically, and horizontally +} + +QRect KDChart::HorizontalLineLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::HorizontalLineLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::HorizontalLineLayoutItem::maximumSize() const +{ + return QSize( QWIDGETSIZE_MAX, QWIDGETSIZE_MAX ); +} + +QSize KDChart::HorizontalLineLayoutItem::minimumSize() const +{ + return QSize( 0, 0 ); +} + +void KDChart::HorizontalLineLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +QSize KDChart::HorizontalLineLayoutItem::sizeHint() const +{ + return QSize( -1, 3 ); // see qframe.cpp +} + + +void KDChart::HorizontalLineLayoutItem::paint( QPainter* painter ) +{ + if ( !mRect.isValid() ) + return; + + painter->drawLine( QPointF( mRect.left(), mRect.center().y() ), + QPointF( mRect.right(), mRect.center().y() ) ); +} + + +KDChart::VerticalLineLayoutItem::VerticalLineLayoutItem() + : AbstractLayoutItem( Qt::AlignCenter ) +{ +} + +Qt::Orientations KDChart::VerticalLineLayoutItem::expandingDirections() const +{ + return Qt::Vertical|Qt::Vertical; // Grow both vertically, and horizontally +} + +QRect KDChart::VerticalLineLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::VerticalLineLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::VerticalLineLayoutItem::maximumSize() const +{ + return QSize( QWIDGETSIZE_MAX, QWIDGETSIZE_MAX ); +} + +QSize KDChart::VerticalLineLayoutItem::minimumSize() const +{ + return QSize( 0, 0 ); +} + +void KDChart::VerticalLineLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +QSize KDChart::VerticalLineLayoutItem::sizeHint() const +{ + return QSize( 3, -1 ); // see qframe.cpp +} + + +void KDChart::VerticalLineLayoutItem::paint( QPainter* painter ) +{ + if ( !mRect.isValid() ) + return; + + painter->drawLine( QPointF( mRect.center().x(), mRect.top() ), + QPointF( mRect.center().x(), mRect.bottom() ) ); +} + + + +KDChart::MarkerLayoutItem::MarkerLayoutItem( KDChart::AbstractDiagram* diagram, + const MarkerAttributes& marker, + const QBrush& brush, const QPen& pen, + Qt::Alignment alignment ) + : AbstractLayoutItem( alignment ) + , mDiagram( diagram ) + , mMarker( marker ) + , mBrush( brush ) + , mPen( pen ) +{ +} + +Qt::Orientations KDChart::MarkerLayoutItem::expandingDirections() const +{ + return 0; // Grow neither vertically nor horizontally +} + +QRect KDChart::MarkerLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::MarkerLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::MarkerLayoutItem::maximumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +QSize KDChart::MarkerLayoutItem::minimumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +void KDChart::MarkerLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +QSize KDChart::MarkerLayoutItem::sizeHint() const +{ + //qDebug() << "KDChart::MarkerLayoutItem::sizeHint() returns:"<(( rect.width() - siz.width()) / 2.0 ), + static_cast(( rect.height() - siz.height()) / 2.0 ) ); + +#ifdef DEBUG_ITEMS_PAINT + QPointF oldPos = pos; +#endif + +// And finally, drawMarker() assumes the position to be the center + // of the marker, adjust again. + pos += QPointF( static_cast( siz.width() ) / 2.0, + static_cast( siz.height() )/ 2.0 ); + + diagram->paintMarker( painter, marker, brush, pen, pos.toPoint(), siz ); + +#ifdef DEBUG_ITEMS_PAINT + const QPen oldPen( painter->pen() ); + painter->setPen( Qt::red ); + painter->drawRect( QRect( oldPos.toPoint(), siz ) ); + painter->setPen( oldPen ); +#endif +} + + +KDChart::LineLayoutItem::LineLayoutItem( KDChart::AbstractDiagram* diagram, + int length, + const QPen& pen, + Qt::Alignment legendLineSymbolAlignment, + Qt::Alignment alignment ) + : AbstractLayoutItem( alignment ) + , mDiagram( diagram ) + , mLength( length ) + , mPen( pen ) + , mLegendLineSymbolAlignment(legendLineSymbolAlignment) +{ + // enforce a minimum pen width + if ( pen.width() < 2 ) + mPen.setWidth( 2 ); +} + +Qt::Orientations KDChart::LineLayoutItem::expandingDirections() const +{ + return 0; // Grow neither vertically nor horizontally +} + +QRect KDChart::LineLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::LineLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::LineLayoutItem::maximumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +QSize KDChart::LineLayoutItem::minimumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +void KDChart::LineLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +QSize KDChart::LineLayoutItem::sizeHint() const +{ + return QSize( mLength, mPen.width() + 2 ); +} + + +void KDChart::LineLayoutItem::setLegendLineSymbolAlignment(Qt::Alignment legendLineSymbolAlignment) +{ + if (mLegendLineSymbolAlignment == legendLineSymbolAlignment) + return; + + mLegendLineSymbolAlignment = legendLineSymbolAlignment; +} + +Qt::Alignment KDChart::LineLayoutItem::legendLineSymbolAlignment() const +{ + return mLegendLineSymbolAlignment; +} + +void KDChart::LineLayoutItem::paint( QPainter* painter ) +{ + paintIntoRect( painter, mRect, mPen, mLegendLineSymbolAlignment ); +} + +void KDChart::LineLayoutItem::paintIntoRect( + QPainter* painter, + const QRect& rect, + const QPen& pen, + Qt::Alignment lineAlignment) +{ + if ( ! rect.isValid() ) + return; + + const QPen oldPen = painter->pen(); + painter->setPen( PrintingParameters::scalePen( pen ) ); + qreal y = 0; + if (lineAlignment == Qt::AlignTop) + y = rect.top(); + else if (lineAlignment == Qt::AlignBottom) + y = rect.bottom(); + else + y = rect.center().y(); + + painter->drawLine( QPointF( rect.left(), y ), + QPointF( rect.right(), y ) ); + painter->setPen( oldPen ); +} + + +KDChart::LineWithMarkerLayoutItem::LineWithMarkerLayoutItem( + KDChart::AbstractDiagram* diagram, + int lineLength, + const QPen& linePen, + int markerOffs, + const MarkerAttributes& marker, + const QBrush& markerBrush, + const QPen& markerPen, + Qt::Alignment alignment ) + : AbstractLayoutItem( alignment ) + , mDiagram( diagram ) + , mLineLength( lineLength ) + , mLinePen( linePen ) + , mMarkerOffs( markerOffs ) + , mMarker( marker ) + , mMarkerBrush( markerBrush ) + , mMarkerPen( markerPen ) +{ +} + +Qt::Orientations KDChart::LineWithMarkerLayoutItem::expandingDirections() const +{ + return 0; // Grow neither vertically nor horizontally +} + +QRect KDChart::LineWithMarkerLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::LineWithMarkerLayoutItem::isEmpty() const +{ + return false; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::LineWithMarkerLayoutItem::maximumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +QSize KDChart::LineWithMarkerLayoutItem::minimumSize() const +{ + return sizeHint(); // PENDING(kalle) Review, quite inflexible +} + +void KDChart::LineWithMarkerLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + +QSize KDChart::LineWithMarkerLayoutItem::sizeHint() const +{ + const QSize lineSize( mLineLength, mLinePen.width() + 2 ); + return lineSize.expandedTo( mMarker.markerSize().toSize() ); +} + +void KDChart::LineWithMarkerLayoutItem::paint( QPainter* painter ) +{ + // paint the line over the full width, into the vertical middle of the rect + LineLayoutItem::paintIntoRect( painter, mRect, mLinePen, Qt::AlignCenter ); + + // paint the marker with the given offset from the left side of the line + const QRect r( + QPoint( mRect.x()+mMarkerOffs, mRect.y() ), + QSize( mMarker.markerSize().toSize().width(), mRect.height() ) ); + MarkerLayoutItem::paintIntoRect( + painter, r, mDiagram, mMarker, mMarkerBrush, mMarkerPen ); +} + +KDChart::AutoSpacerLayoutItem::AutoSpacerLayoutItem( + bool layoutIsAtTopPosition, QHBoxLayout *rightLeftLayout, + bool layoutIsAtLeftPosition, QVBoxLayout *topBottomLayout ) + : AbstractLayoutItem( Qt::AlignCenter ) + , mLayoutIsAtTopPosition( layoutIsAtTopPosition ) + , mRightLeftLayout( rightLeftLayout ) + , mLayoutIsAtLeftPosition( layoutIsAtLeftPosition ) + , mTopBottomLayout( topBottomLayout ) +{ +} + +Qt::Orientations KDChart::AutoSpacerLayoutItem::expandingDirections() const +{ + return 0; // Grow neither vertically nor horizontally +} + +QRect KDChart::AutoSpacerLayoutItem::geometry() const +{ + return mRect; +} + +bool KDChart::AutoSpacerLayoutItem::isEmpty() const +{ + return true; // never empty, otherwise the layout item would not exist +} + +QSize KDChart::AutoSpacerLayoutItem::maximumSize() const +{ + return sizeHint(); +} + +QSize KDChart::AutoSpacerLayoutItem::minimumSize() const +{ + return sizeHint(); +} + +void KDChart::AutoSpacerLayoutItem::setGeometry( const QRect& r ) +{ + mRect = r; +} + + +static void updateCommonBrush( QBrush& commonBrush, bool& bStart, const KDChart::AbstractArea& area ) +{ + const KDChart::BackgroundAttributes ba( area.backgroundAttributes() ); + const bool hasSimpleBrush = ( + ! area.frameAttributes().isVisible() && + ba.isVisible() && + ba.pixmapMode() == KDChart::BackgroundAttributes::BackgroundPixmapModeNone && + ba.brush().gradient() == 0 ); + if ( bStart ) { + bStart = false; + commonBrush = hasSimpleBrush ? ba.brush() : QBrush(); + } else { + if ( ! hasSimpleBrush || ba.brush() != commonBrush ) + { + commonBrush = QBrush(); + } + } +} + +QSize KDChart::AutoSpacerLayoutItem::sizeHint() const +{ + QBrush commonBrush; + bool bStart=true; + // calculate the maximal overlap of the top/bottom axes: + int topBottomOverlap = 0; + if ( mTopBottomLayout ) { + for (int i = 0; i < mTopBottomLayout->count(); ++i) { + AbstractArea* area = dynamic_cast(mTopBottomLayout->itemAt(i)); + if ( area ) { + //qDebug() << "AutoSpacerLayoutItem testing" << area; + topBottomOverlap = qMax( topBottomOverlap, + mLayoutIsAtLeftPosition ? area->rightOverlap() + : area->leftOverlap() ); + updateCommonBrush( commonBrush, bStart, *area ); + } + } + } + // calculate the maximal overlap of the left/right axes: + int leftRightOverlap = 0; + if ( mRightLeftLayout ) { + for (int i = 0; i < mRightLeftLayout->count(); ++i) { + AbstractArea* area = dynamic_cast(mRightLeftLayout->itemAt(i)); + if ( area ) { + //qDebug() << "AutoSpacerLayoutItem testing" << area; + leftRightOverlap = qMax( leftRightOverlap, + mLayoutIsAtTopPosition ? area->bottomOverlap() + : area->topOverlap() ); + updateCommonBrush( commonBrush, bStart, *area ); + } + } + } + if ( topBottomOverlap > 0 && leftRightOverlap > 0 ) + mCommonBrush = commonBrush; + else + mCommonBrush = QBrush(); + mCachedSize = QSize( topBottomOverlap, leftRightOverlap ); + //qDebug() << mCachedSize; + return mCachedSize; +} + + +void KDChart::AutoSpacerLayoutItem::paint( QPainter* painter ) +{ + if ( mParentLayout && mRect.isValid() && mCachedSize.isValid() && + mCommonBrush.style() != Qt::NoBrush ) + { + QPoint p1( mRect.topLeft() ); + QPoint p2( mRect.bottomRight() ); + if ( mLayoutIsAtLeftPosition ) + p1.rx() += mCachedSize.width() - mParentLayout->spacing(); + else + p2.rx() -= mCachedSize.width() - mParentLayout->spacing(); + if ( mLayoutIsAtTopPosition ) { + p1.ry() += mCachedSize.height() - mParentLayout->spacing() - 1; + p2.ry() -= 1; + } else + p2.ry() -= mCachedSize.height() - mParentLayout->spacing() - 1; + //qDebug() << mLayoutIsAtTopPosition << mLayoutIsAtLeftPosition; + //qDebug() << mRect; + //qDebug() << mParentLayout->margin(); + //qDebug() << QRect( p1, p2 ); + const QPoint oldBrushOrigin( painter->brushOrigin() ); + const QBrush oldBrush( painter->brush() ); + const QPen oldPen( painter->pen() ); + const QPointF newTopLeft( painter->deviceMatrix().map( p1 ) ); + painter->setBrushOrigin( newTopLeft ); + painter->setBrush( mCommonBrush ); + painter->setPen( Qt::NoPen ); + painter->drawRect( QRect( p1, p2 ) ); + painter->setBrushOrigin( oldBrushOrigin ); + painter->setBrush( oldBrush ); + painter->setPen( oldPen ); + } + // debug code: +#if 0 + //qDebug() << "KDChart::AutoSpacerLayoutItem::paint()"; + if ( !mRect.isValid() ) + return; + + painter->drawRect( mRect ); + painter->drawLine( QPointF( mRect.topLeft(), mRect.bottomRight() ) ); + painter->drawLine( QPointF( mRect.topRight(), mRect.bottomLeft() ) ); +#endif +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.h b/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.h new file mode 100644 index 00000000..e5945714 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLayoutItems.h @@ -0,0 +1,479 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLAYOUTITEMS_H +#define KDCHARTLAYOUTITEMS_H + +#include +#include +#include +#include +#include +#include + +#include "KDChartTextAttributes.h" +#include "KDChartMarkerAttributes.h" + +QT_BEGIN_NAMESPACE +class QPainter; +class KDTextDocument; +QT_END_NAMESPACE + +// TODO remove +QRectF rotatedRect( const QRectF& pt, qreal rotation ); + +namespace KDChart { + class AbstractDiagram; + class PaintContext; + + /** + * Base class for all layout items of KD Chart + * \internal + */ + class KDCHART_EXPORT AbstractLayoutItem : public QLayoutItem + { + public: + AbstractLayoutItem( Qt::Alignment itemAlignment = 0 ) : + QLayoutItem( itemAlignment ), + mParent( 0 ), + mParentLayout( 0 ) {} + + /** + * Default impl: just call paint. + * + * Derived classes like KDChart::AbstractArea are providing + * additional action here. + */ + virtual void paintAll( QPainter& painter ); + + virtual void paint( QPainter* ) = 0; + + virtual void paintCtx( PaintContext* context ); + virtual void setParentWidget( QWidget* widget ); + virtual void sizeHintChanged() const; + + void setParentLayout( QLayout* lay ) + { + mParentLayout = lay; + } + QLayout* parentLayout() + { + return mParentLayout; + } + void removeFromParentLayout() + { + if ( mParentLayout ) { + if ( widget() ) + mParentLayout->removeWidget( widget() ); + else + mParentLayout->removeItem( this ); + } + } + protected: + QWidget* mParent; + QLayout* mParentLayout; + }; + + /** + * Layout item showing a text + *\internal + */ + class KDCHART_EXPORT TextLayoutItem : public AbstractLayoutItem + { + public: + TextLayoutItem(); + TextLayoutItem( const QString& text, + const TextAttributes& attributes, + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation, + Qt::Alignment alignment = 0 ); + + void setAutoReferenceArea( const QObject* area ); + const QObject* autoReferenceArea() const; + + void setText(const QString & text); + QString text() const; + + void setTextAlignment( Qt::Alignment ); + Qt::Alignment textAlignment() const; + + void setTextAttributes( const TextAttributes& a ); + TextAttributes textAttributes() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual int marginWidth() const; + + virtual QSize sizeHintUnrotated() const; + + virtual bool intersects( const TextLayoutItem& other, const QPointF& myPos, const QPointF& otherPos ) const; + virtual bool intersects( const TextLayoutItem& other, const QPoint& myPos, const QPoint& otherPos ) const; + + virtual qreal realFontSize() const; + virtual QFont realFont() const; + + virtual void paint( QPainter* ); + + QPolygon boundingPolygon() const; + private: + bool maybeUpdateRealFont() const; + QSize unrotatedSizeHint( const QFont& fnt = QFont() ) const; + QSize unrotatedTextSize( QFont fnt = QFont() ) const; + QSize calcSizeHint( const QFont& font ) const; + int marginWidth( const QSize& textSize ) const; + + qreal fitFontSizeToGeometry() const; + + QRect mRect; + QString mText; + Qt::Alignment mTextAlignment; + TextAttributes mAttributes; + const QObject* mAutoReferenceArea; + KDChartEnums::MeasureOrientation mAutoReferenceOrientation; + mutable QSize cachedSizeHint; + mutable QPolygon mCachedBoundingPolygon; + mutable qreal cachedFontSize; + mutable QFont cachedFont; + }; + + class KDCHART_EXPORT TextBubbleLayoutItem : public AbstractLayoutItem + { + public: + TextBubbleLayoutItem(); + TextBubbleLayoutItem( const QString& text, + const TextAttributes& attributes, + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation, + Qt::Alignment alignment = 0 ); + + ~TextBubbleLayoutItem(); + + void setAutoReferenceArea( const QObject* area ); + const QObject* autoReferenceArea() const; + + void setText(const QString & text); + QString text() const; + + void setTextAttributes( const TextAttributes& a ); + TextAttributes textAttributes() const; + + /** pure virtual in QLayoutItem */ + virtual bool isEmpty() const; + /** pure virtual in QLayoutItem */ + virtual Qt::Orientations expandingDirections() const; + /** pure virtual in QLayoutItem */ + virtual QSize maximumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize minimumSize() const; + /** pure virtual in QLayoutItem */ + virtual QSize sizeHint() const; + /** pure virtual in QLayoutItem */ + virtual void setGeometry( const QRect& r ); + /** pure virtual in QLayoutItem */ + virtual QRect geometry() const; + + virtual void paint( QPainter* painter ); + + protected: + int borderWidth() const; + + private: + TextLayoutItem* const m_text; + }; + + /** + * Layout item showing a data point marker + * \internal + */ + class KDCHART_EXPORT MarkerLayoutItem : public AbstractLayoutItem + { + public: + MarkerLayoutItem( AbstractDiagram* diagram, + const MarkerAttributes& marker, + const QBrush& brush, + const QPen& pen, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + static void paintIntoRect( + QPainter* painter, + const QRect& rect, + AbstractDiagram* diagram, + const MarkerAttributes& marker, + const QBrush& brush, + const QPen& pen ); + + private: + AbstractDiagram* mDiagram; + QRect mRect; + MarkerAttributes mMarker; + QBrush mBrush; + QPen mPen; + }; + + /** + * Layout item showing a coloured line + * \internal + */ + class KDCHART_EXPORT LineLayoutItem : public AbstractLayoutItem + { + public: + LineLayoutItem( AbstractDiagram* diagram, + int length, + const QPen& pen, + Qt::Alignment mLegendLineSymbolAlignment, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + void setLegendLineSymbolAlignment(Qt::Alignment legendLineSymbolAlignment); + virtual Qt::Alignment legendLineSymbolAlignment() const; + + virtual void paint( QPainter* ); + + static void paintIntoRect( + QPainter* painter, + const QRect& rect, + const QPen& pen, + Qt::Alignment lineAlignment); + + private: + AbstractDiagram* mDiagram; + int mLength; + QPen mPen; + QRect mRect; + Qt::Alignment mLegendLineSymbolAlignment; + }; + + /** + * Layout item showing a coloured line and a data point marker + * \internal + */ + class KDCHART_EXPORT LineWithMarkerLayoutItem : public AbstractLayoutItem + { + public: + LineWithMarkerLayoutItem( AbstractDiagram* diagram, + int lineLength, + const QPen& linePen, + int markerOffs, + const MarkerAttributes& marker, + const QBrush& markerBrush, + const QPen& markerPen, + Qt::Alignment alignment = 0 ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + AbstractDiagram* mDiagram; + QRect mRect; + int mLineLength; + QPen mLinePen; + int mMarkerOffs; + MarkerAttributes mMarker; + QBrush mMarkerBrush; + QPen mMarkerPen; + }; + + + /** + * Layout item showing a horizontal line + * \internal + */ + class KDCHART_EXPORT HorizontalLineLayoutItem : public AbstractLayoutItem + { + public: + HorizontalLineLayoutItem(); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + }; + + /** + * Layout item showing a vertial line + * \internal + */ + class KDCHART_EXPORT VerticalLineLayoutItem : public AbstractLayoutItem + { + public: + VerticalLineLayoutItem(); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + }; + + /** + * @brief An empty layout item + * \internal + * + * The AutoSpacerLayoutItem is automatically put into each corner cell of + * the planeLayout grid: one of its reference-layouts is a QVBoxLayout (for + * the top, or bottom axes resp.), the other one is a QHBoxLayout (for the + * left/right sided axes). + * + * The spacer reserves enough space so all of the AbstractAreas contained + * in the two reference-layouts can display not only their in-bounds + * content but also their overlapping content reaching out of their area. + * + * KD Chart's layouting is applying this schema: +\verbatim + +------------------+-------------------------+-----------------+ + | +--------------+ | +---------------------+ | +-------------+ | + | | | | | QVBoxLayout for | | | | | + | | AUTO | | | the top axis/axes | | | AUTO | | + | | SPACER | | +---------------------+ | | SPACER | | + | | ITEM | | | | | | ITEM | | + | | | | | | | | | | + | +--------------+ | +---------------------+ | +-------------+ | + +------------------+-------------------------+-----------------+ + | +--------+-----+ | +---------------------+ | +-------+-----+ | + | | | | | | | | | | | | + | | | | | | | | | | | | + | | QHBox- | | | | | | | Right | | | + | | Layout | | | | | | | | | | + | | | | | | | | | axes | | | + | | for | | | | | | | | | | + | | | | | | | | | layout| | | + | | the | | | | DIAGRAM(s) | | | | | | + | | | | | | | | | | | | + | | left | | | | | | | | | | + | | | | | | | | | | | | + | | axis | | | | | | | | | | + | | or | | | | | | | | | | + | | axes | | | | | | | | | | + | | | | | | | | | | | | + | +--------+-----+ | +---------------------+ | +-------+-----+ | + +------------------+-------------------------+-----------------+ + | +--------------+ | +---------------------+ | +-------------+ | + | | | | | QVBoxLayout for | | | | | + | | AUTO | | | the bottom axes | | | AUTO | | + | | SPACER | | +---------------------+ | | SPACER | | + | | ITEM | | | | | | ITEM | | + | | | | | | | | | | + | +--------------+ | +---------------------+ | +-------------+ | + +------------------+-------------------------+-----------------+ +\endverbatim + * + * A typical use case is an Abscissa axis with long labels: +\verbatim + 2 -| + | + 1 -| + | + 0 -+------------------------------------ + | | | | | + Monday Tuesday Wednesday Thursday Friday +\endverbatim + * The last letters of the word "Friday" would have been + * cut off in previous versions of KD Chart - that is + * if you did not call KDChart::Chart::setGlobalLeading(). + * + * Now the word will be shown completely because there + * is an auto-spacer-item taking care for the additional + * space needed in the lower/right corner. + */ + class KDCHART_EXPORT AutoSpacerLayoutItem : public AbstractLayoutItem + { + public: + AutoSpacerLayoutItem( + bool layoutIsAtTopPosition, QHBoxLayout *rightLeftLayout, + bool layoutIsAtLeftPosition, QVBoxLayout *topBottomLayout ); + + virtual Qt::Orientations expandingDirections() const; + virtual QRect geometry() const; + virtual bool isEmpty() const; + virtual QSize maximumSize() const; + virtual QSize minimumSize() const; + virtual void setGeometry( const QRect& r ); + virtual QSize sizeHint() const; + + virtual void paint( QPainter* ); + + private: + QRect mRect; + bool mLayoutIsAtTopPosition; + QHBoxLayout *mRightLeftLayout; + bool mLayoutIsAtLeftPosition; + QVBoxLayout *mTopBottomLayout; + + mutable QBrush mCommonBrush; + mutable QSize mCachedSize; + }; + +} + +#endif /* KDCHARTLAYOUTITEMS_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLegend.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartLegend.cpp new file mode 100644 index 00000000..e84b0fa2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLegend.cpp @@ -0,0 +1,1092 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLegend.h" +#include "KDChartLegend_p.h" +#include +#include +#include +#include +#include "KDTextDocument.h" +#include +#include "KDChartLayoutItems.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace KDChart; + +Legend::Private::Private() : + referenceArea(0), + position( Position::East ), + alignment( Qt::AlignCenter ), + textAlignment( Qt::AlignCenter ), + relativePosition( RelativePosition() ), + orientation( Qt::Vertical ), + order( Qt::AscendingOrder ), + showLines( false ), + texts(), + textAttributes(), + titleText( QObject::tr( "Legend" ) ), + titleTextAttributes(), + spacing( 1 ), + useAutomaticMarkerSize( true ), + legendStyle( MarkersOnly ) + //needRebuild( true ) +{ + // By default we specify a simple, hard point as the 'relative' position's ref. point, + // since we can not be sure that there will be any parent specified for the legend. + relativePosition.setReferencePoints( PositionPoints( QPointF( 0.0, 0.0 ) ) ); + relativePosition.setReferencePosition( Position::NorthWest ); + relativePosition.setAlignment( Qt::AlignTop | Qt::AlignLeft ); + relativePosition.setHorizontalPadding( KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); + relativePosition.setVerticalPadding( KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +} + +Legend::Private::~Private() +{ + // this bloc left empty intentionally +} + + +#define d d_func() + + +Legend::Legend( QWidget* parent ) : + AbstractAreaWidget( new Private(), parent ) +{ + d->referenceArea = parent; + init(); +} + +Legend::Legend( KDChart::AbstractDiagram* diagram, QWidget* parent ) : + AbstractAreaWidget( new Private(), parent ) +{ + d->referenceArea = parent; + init(); + setDiagram( diagram ); +} + +Legend::~Legend() +{ + emit destroyedLegend( this ); +} + +void Legend::init() +{ + setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); + + d->layout = new QGridLayout( this ); + d->layout->setMargin( 2 ); + d->layout->setSpacing( d->spacing ); + + const Measure normalFontSizeTitle( 12, KDChartEnums::MeasureCalculationModeAbsolute ); + const Measure normalFontSizeLabels( 10, KDChartEnums::MeasureCalculationModeAbsolute ); + const Measure minimalFontSize( 4, KDChartEnums::MeasureCalculationModeAbsolute ); + + TextAttributes textAttrs; + textAttrs.setPen( QPen( Qt::black ) ); + textAttrs.setFont( QFont( QLatin1String( "helvetica" ), 10, QFont::Normal, false ) ); + textAttrs.setFontSize( normalFontSizeLabels ); + textAttrs.setMinimalFontSize( minimalFontSize ); + setTextAttributes( textAttrs ); + + TextAttributes titleTextAttrs; + titleTextAttrs.setPen( QPen( Qt::black ) ); + titleTextAttrs.setFont( QFont( QLatin1String( "helvetica" ), 12, QFont::Bold, false ) ); + titleTextAttrs.setFontSize( normalFontSizeTitle ); + titleTextAttrs.setMinimalFontSize( minimalFontSize ); + setTitleTextAttributes( titleTextAttrs ); + + FrameAttributes frameAttrs; + frameAttrs.setVisible( true ); + frameAttrs.setPen( QPen( Qt::black ) ); + frameAttrs.setPadding( 1 ); + setFrameAttributes( frameAttrs ); + + d->position = Position::NorthEast; + d->alignment = Qt::AlignCenter; +} + + +QSize Legend::minimumSizeHint() const +{ + return sizeHint(); +} + +//#define DEBUG_LEGEND_PAINT + +QSize Legend::sizeHint() const +{ +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "Legend::sizeHint() started"; +#endif + Q_FOREACH( KDChart::AbstractLayoutItem* paintItem, d->paintItems ) { + paintItem->sizeHint(); + } + return AbstractAreaWidget::sizeHint(); +} + +void Legend::needSizeHint() +{ + buildLegend(); +} + +void Legend::activateTheLayout() +{ + if ( d->layout && d->layout->parent() ) { + d->layout->activate(); + } +} + +void Legend::setLegendStyle( LegendStyle style ) +{ + if ( d->legendStyle == style ) { + return; + } + d->legendStyle = style; + setNeedRebuild(); +} + +Legend::LegendStyle Legend::legendStyle() const +{ + return d->legendStyle; +} + +/** + * Creates an exact copy of this legend. + */ +Legend* Legend::clone() const +{ + Legend* legend = new Legend( new Private( *d ), 0 ); + legend->setTextAttributes( textAttributes() ); + legend->setTitleTextAttributes( titleTextAttributes() ); + legend->setFrameAttributes( frameAttributes() ); + legend->setUseAutomaticMarkerSize( useAutomaticMarkerSize() ); + legend->setPosition( position() ); + legend->setAlignment( alignment() ); + legend->setTextAlignment( textAlignment() ); + legend->setLegendStyle( legendStyle() ); + return legend; +} + + +bool Legend::compare( const Legend* other ) const +{ + if ( other == this ) { + return true; + } + if ( !other ) { + return false; + } + + return ( AbstractAreaBase::compare( other ) ) && + (isVisible() == other->isVisible()) && + (position() == other->position()) && + (alignment() == other->alignment())&& + (textAlignment() == other->textAlignment())&& + (floatingPosition() == other->floatingPosition()) && + (orientation() == other->orientation())&& + (showLines() == other->showLines())&& + (texts() == other->texts())&& + (brushes() == other->brushes())&& + (pens() == other->pens())&& + (markerAttributes() == other->markerAttributes())&& + (useAutomaticMarkerSize() == other->useAutomaticMarkerSize()) && + (textAttributes() == other->textAttributes()) && + (titleText() == other->titleText())&& + (titleTextAttributes() == other->titleTextAttributes()) && + (spacing() == other->spacing()) && + (legendStyle() == other->legendStyle()); +} + + +void Legend::paint( QPainter* painter ) +{ +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "entering Legend::paint( QPainter* painter )"; +#endif + if ( !diagram() ) { + return; + } + + activateTheLayout(); + + Q_FOREACH( KDChart::AbstractLayoutItem* paintItem, d->paintItems ) { + paintItem->paint( painter ); + } + +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "leaving Legend::paint( QPainter* painter )"; +#endif +} + + +uint Legend::datasetCount() const +{ + int modelLabelsCount = 0; + KDAB_FOREACH ( DiagramObserver* observer, d->observers ) { + AbstractDiagram* diagram = observer->diagram(); + Q_ASSERT( diagram->datasetLabels().count() == diagram->datasetBrushes().count() ); + modelLabelsCount += diagram->datasetLabels().count(); + } + return modelLabelsCount; +} + + +void Legend::setReferenceArea( const QWidget* area ) +{ + if ( area == d->referenceArea ) { + return; + } + d->referenceArea = area; + setNeedRebuild(); +} + +const QWidget* Legend::referenceArea() const +{ + return d->referenceArea ? d->referenceArea : qobject_cast< const QWidget* >( parent() ); +} + + +AbstractDiagram* Legend::diagram() const +{ + if ( d->observers.isEmpty() ) { + return 0; + } + return d->observers.first()->diagram(); +} + +DiagramList Legend::diagrams() const +{ + DiagramList list; + for ( int i = 0; i < d->observers.size(); ++i ) { + list << d->observers.at(i)->diagram(); + } + return list; +} + +ConstDiagramList Legend::constDiagrams() const +{ + ConstDiagramList list; + for ( int i = 0; i < d->observers.size(); ++i ) { + list << d->observers.at(i)->diagram(); + } + return list; +} + +void Legend::addDiagram( AbstractDiagram* newDiagram ) +{ + if ( newDiagram ) { + DiagramObserver* observer = new DiagramObserver( newDiagram, this ); + + DiagramObserver* oldObs = d->findObserverForDiagram( newDiagram ); + if ( oldObs ) { + delete oldObs; + d->observers[ d->observers.indexOf( oldObs ) ] = observer; + } else { + d->observers.append( observer ); + } + connect( observer, SIGNAL( diagramAboutToBeDestroyed(AbstractDiagram*) ), + SLOT( resetDiagram(AbstractDiagram*) )); + connect( observer, SIGNAL( diagramDataChanged(AbstractDiagram*) ), + SLOT( setNeedRebuild() )); + connect( observer, SIGNAL( diagramDataHidden(AbstractDiagram*) ), + SLOT( setNeedRebuild() )); + connect( observer, SIGNAL( diagramAttributesChanged(AbstractDiagram*) ), + SLOT( setNeedRebuild() )); + setNeedRebuild(); + } +} + +void Legend::removeDiagram( AbstractDiagram* oldDiagram ) +{ + int datasetBrushOffset = 0; + QList< AbstractDiagram * > diagrams = this->diagrams(); + for ( int i = 0; i datasetBrushes().count(); i++ ) { + d->brushes.remove(datasetBrushOffset + i); + d->texts.remove(datasetBrushOffset + i); + } + for ( int i = 0; i < oldDiagram->datasetPens().count(); i++ ) { + d->pens.remove(datasetBrushOffset + i); + } + break; + } + datasetBrushOffset += diagrams.at(i)->datasetBrushes().count(); + } + + if ( oldDiagram ) { + DiagramObserver *oldObs = d->findObserverForDiagram( oldDiagram ); + if ( oldObs ) { + delete oldObs; + d->observers.removeAt( d->observers.indexOf( oldObs ) ); + } + setNeedRebuild(); + } +} + +void Legend::removeDiagrams() +{ + // removeDiagram() may change the d->observers list. So, build up the list of + // diagrams to remove first and then remove them one by one. + QList< AbstractDiagram * > diagrams; + for ( int i = 0; i < d->observers.size(); ++i ) { + diagrams.append( d->observers.at( i )->diagram() ); + } + for ( int i = 0; i < diagrams.count(); ++i ) { + removeDiagram( diagrams[ i ] ); + } +} + +void Legend::replaceDiagram( AbstractDiagram* newDiagram, + AbstractDiagram* oldDiagram ) +{ + KDChart::AbstractDiagram* old = oldDiagram; + if ( !d->observers.isEmpty() && !old ) { + old = d->observers.first()->diagram(); + if ( !old ) { + d->observers.removeFirst(); // first entry had a 0 diagram + } + } + if ( old ) { + removeDiagram( old ); + } + if ( newDiagram ) { + addDiagram( newDiagram ); + } +} + +uint Legend::dataSetOffset(KDChart::AbstractDiagram* diagram) +{ + uint offset = 0; + + for ( int i = 0; i < d->observers.count(); ++i ) { + if ( d->observers.at(i)->diagram() == diagram ) { + return offset; + } + KDChart::AbstractDiagram* diagram = d->observers.at(i)->diagram(); + if ( !diagram->model() ) { + continue; + } + offset = offset + diagram->model()->columnCount(); + } + + return offset; +} + +void Legend::setDiagram( KDChart::AbstractDiagram* newDiagram ) +{ + replaceDiagram( newDiagram ); +} + +void Legend::resetDiagram( AbstractDiagram* oldDiagram ) +{ + removeDiagram( oldDiagram ); +} + +void Legend::setVisible( bool visible ) +{ + // do NOT bail out if visible == isVisible(), because the return value of isVisible() also depends + // on the visibility of the parent. + QWidget::setVisible( visible ); + emitPositionChanged(); +} + +void Legend::setNeedRebuild() +{ + buildLegend(); + sizeHint(); +} + +void Legend::setPosition( Position position ) +{ + if ( d->position == position ) { + return; + } + d->position = position; + emitPositionChanged(); +} + +void Legend::emitPositionChanged() +{ + emit positionChanged( this ); + emit propertiesChanged(); +} + + +Position Legend::position() const +{ + return d->position; +} + +void Legend::setAlignment( Qt::Alignment alignment ) +{ + if ( d->alignment == alignment ) { + return; + } + d->alignment = alignment; + emitPositionChanged(); +} + +Qt::Alignment Legend::alignment() const +{ + return d->alignment; +} + +void Legend::setTextAlignment( Qt::Alignment alignment ) +{ + if ( d->textAlignment == alignment ) { + return; + } + d->textAlignment = alignment; + emitPositionChanged(); +} + +Qt::Alignment Legend::textAlignment() const +{ + return d->textAlignment; +} + +void Legend::setLegendSymbolAlignment( Qt::Alignment alignment ) +{ + if ( d->legendLineSymbolAlignment == alignment ) { + return; + } + d->legendLineSymbolAlignment = alignment; + emitPositionChanged(); +} + +Qt::Alignment Legend::legendSymbolAlignment() const +{ + return d->legendLineSymbolAlignment ; +} + +void Legend::setFloatingPosition( const RelativePosition& relativePosition ) +{ + d->position = Position::Floating; + if ( d->relativePosition != relativePosition ) { + d->relativePosition = relativePosition; + emitPositionChanged(); + } +} + +const RelativePosition Legend::floatingPosition() const +{ + return d->relativePosition; +} + +void Legend::setOrientation( Qt::Orientation orientation ) +{ + if ( d->orientation == orientation ) { + return; + } + d->orientation = orientation; + setNeedRebuild(); + emitPositionChanged(); +} + +Qt::Orientation Legend::orientation() const +{ + return d->orientation; +} + +void Legend::setSortOrder( Qt::SortOrder order ) +{ + if ( d->order == order ) { + return; + } + d->order = order; + setNeedRebuild(); + emitPositionChanged(); +} + +Qt::SortOrder Legend::sortOrder() const +{ + return d->order; +} + +void Legend::setShowLines( bool legendShowLines ) +{ + if ( d->showLines == legendShowLines ) { + return; + } + d->showLines = legendShowLines; + setNeedRebuild(); + emitPositionChanged(); +} + +bool Legend::showLines() const +{ + return d->showLines; +} + +void Legend::setUseAutomaticMarkerSize( bool useAutomaticMarkerSize ) +{ + d->useAutomaticMarkerSize = useAutomaticMarkerSize; + setNeedRebuild(); + emitPositionChanged(); +} + +bool Legend::useAutomaticMarkerSize() const +{ + return d->useAutomaticMarkerSize; +} + +/** + \brief Removes all legend texts that might have been set by setText. + + This resets the Legend to default behaviour: Texts are created automatically. +*/ +void Legend::resetTexts() +{ + if ( !d->texts.count() ) { + return; + } + d->texts.clear(); + setNeedRebuild(); +} + +void Legend::setText( uint dataset, const QString& text ) +{ + if ( d->texts[ dataset ] == text ) { + return; + } + d->texts[ dataset ] = text; + setNeedRebuild(); +} + +QString Legend::text( uint dataset ) const +{ + if ( d->texts.find( dataset ) != d->texts.end() ) { + return d->texts[ dataset ]; + } else { + return d->modelLabels[ dataset ]; + } +} + +const QMap Legend::texts() const +{ + return d->texts; +} + +void Legend::setColor( uint dataset, const QColor& color ) +{ + if ( d->brushes[ dataset ] != color ) { + d->brushes[ dataset ] = color; + setNeedRebuild(); + update(); + } +} + +void Legend::setBrush( uint dataset, const QBrush& brush ) +{ + if ( d->brushes[ dataset ] != brush ) { + d->brushes[ dataset ] = brush; + setNeedRebuild(); + update(); + } +} + +QBrush Legend::brush( uint dataset ) const +{ + if ( d->brushes.contains( dataset ) ) { + return d->brushes[ dataset ]; + } else { + return d->modelBrushes[ dataset ]; + } +} + +const QMap Legend::brushes() const +{ + return d->brushes; +} + + +void Legend::setBrushesFromDiagram( KDChart::AbstractDiagram* diagram ) +{ + bool changed = false; + QList datasetBrushes = diagram->datasetBrushes(); + for ( int i = 0; i < datasetBrushes.count(); i++ ) { + if ( d->brushes[ i ] != datasetBrushes[ i ] ) { + d->brushes[ i ] = datasetBrushes[ i ]; + changed = true; + } + } + if ( changed ) { + setNeedRebuild(); + update(); + } +} + + +void Legend::setPen( uint dataset, const QPen& pen ) +{ + if ( d->pens[dataset] == pen ) { + return; + } + d->pens[dataset] = pen; + setNeedRebuild(); + update(); +} + +QPen Legend::pen( uint dataset ) const +{ + if ( d->pens.find( dataset ) != d->pens.end() ) { + return d->pens[ dataset ]; + } else { + return d->modelPens[ dataset ]; + } +} + +const QMap Legend::pens() const +{ + return d->pens; +} + + +void Legend::setMarkerAttributes( uint dataset, const MarkerAttributes& markerAttributes ) +{ + if ( d->markerAttributes[dataset] == markerAttributes ) { + return; + } + d->markerAttributes[ dataset ] = markerAttributes; + setNeedRebuild(); + update(); +} + +MarkerAttributes Legend::markerAttributes( uint dataset ) const +{ + if ( d->markerAttributes.find( dataset ) != d->markerAttributes.end() ) { + return d->markerAttributes[ dataset ]; + } else if ( static_cast( d->modelMarkers.count() ) > dataset ) { + return d->modelMarkers[ dataset ]; + } else { + return MarkerAttributes(); + } +} + +const QMap Legend::markerAttributes() const +{ + return d->markerAttributes; +} + + +void Legend::setTextAttributes( const TextAttributes &a ) +{ + if ( d->textAttributes == a ) { + return; + } + d->textAttributes = a; + setNeedRebuild(); +} + +TextAttributes Legend::textAttributes() const +{ + return d->textAttributes; +} + +void Legend::setTitleText( const QString& text ) +{ + if ( d->titleText == text ) { + return; + } + d->titleText = text; + setNeedRebuild(); +} + +QString Legend::titleText() const +{ + return d->titleText; +} + +void Legend::setTitleTextAttributes( const TextAttributes &a ) +{ + if ( d->titleTextAttributes == a ) { + return; + } + d->titleTextAttributes = a; + setNeedRebuild(); +} + +TextAttributes Legend::titleTextAttributes() const +{ + return d->titleTextAttributes; +} + +void Legend::forceRebuild() +{ +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "entering Legend::forceRebuild()"; +#endif + //setSpacing(d->layout->spacing()); + buildLegend(); +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "leaving Legend::forceRebuild()"; +#endif +} + +void Legend::setSpacing( uint space ) +{ + if ( d->spacing == space && d->layout->spacing() == int( space ) ) { + return; + } + d->spacing = space; + d->layout->setSpacing( space ); + setNeedRebuild(); +} + +uint Legend::spacing() const +{ + return d->spacing; +} + +void Legend::setDefaultColors() +{ + Palette pal = Palette::defaultPalette(); + for ( int i = 0; i < pal.size(); i++ ) { + setBrush( i, pal.getBrush( i ) ); + } +} + +void Legend::setRainbowColors() +{ + Palette pal = Palette::rainbowPalette(); + for ( int i = 0; i < pal.size(); i++ ) { + setBrush( i, pal.getBrush( i ) ); + } +} + +void Legend::setSubduedColors( bool ordered ) +{ + Palette pal = Palette::subduedPalette(); + if ( ordered ) { + for ( int i = 0; i < pal.size(); i++ ) { + setBrush( i, pal.getBrush( i ) ); + } + } else { + static const int s_subduedColorsCount = 18; + Q_ASSERT( pal.size() >= s_subduedColorsCount ); + static const int order[ s_subduedColorsCount ] = { + 0, 5, 10, 15, 2, 7, 12, 17, 4, + 9, 14, 1, 6, 11, 16, 3, 8, 13 + }; + for ( int i = 0; i < s_subduedColorsCount; i++ ) { + setBrush( i, pal.getBrush( order[i] ) ); + } + } +} + +void Legend::resizeEvent( QResizeEvent * event ) +{ + Q_UNUSED( event ); +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "Legend::resizeEvent() called"; +#endif + forceRebuild(); + sizeHint(); + QTimer::singleShot( 0, this, SLOT(emitPositionChanged()) ); +} + +void Legend::buildLegend() +{ + /* Grid layout partitioning (horizontal orientation): row zero is the title, row one the divider + line between title and dataset items, row two for each item: line, marker, text label and separator + line in that order. + In a vertically oriented legend, row pairs (2, 3), ... contain a possible separator line (first row) + and (second row) line, marker, text label each. */ + Q_FOREACH( QLayoutItem* paintItem, d->paintItems ) { + d->layout->removeItem( paintItem ); + } + qDeleteAll( d->paintItems ); + d->paintItems.clear(); + // remove items that aren't painted - like spacers + for ( int i = d->layout->count() - 1; i >= 0; i-- ) { + delete d->layout->takeAt( i ); + } + Q_ASSERT(!d->layout->count()); + + if ( orientation() == Qt::Vertical ) { + d->layout->setColumnStretch( 6, 1 ); + } else { + d->layout->setColumnStretch( 6, 0 ); + } + + d->modelLabels.clear(); + d->modelBrushes.clear(); + d->modelPens.clear(); + d->modelMarkers.clear(); + // retrieve the diagrams' settings for all non-hidden datasets + for ( int i = 0; i < d->observers.size(); ++i ) { + const AbstractDiagram* diagram = d->observers.at( i )->diagram(); + if ( !diagram ) { + continue; + } + const QStringList diagramLabels = diagram->datasetLabels(); + const QList diagramBrushes = diagram->datasetBrushes(); + const QList diagramPens = diagram->datasetPens(); + const QList diagramMarkers = diagram->datasetMarkers(); + + const bool ascend = sortOrder() == Qt::AscendingOrder; + int dataset = ascend ? 0 : diagramLabels.count() - 1; + const int end = ascend ? diagramLabels.count() : -1; + for ( ; dataset != end; dataset += ascend ? 1 : -1 ) { + if ( diagram->isHidden( dataset ) || datasetIsHidden( dataset ) ) { + continue; + } + d->modelLabels += diagramLabels[ dataset ]; + d->modelBrushes += diagramBrushes[ dataset ]; + d->modelPens += diagramPens[ dataset ]; + d->modelMarkers += diagramMarkers[ dataset ]; + } + } + + Q_ASSERT( d->modelLabels.count() == d->modelBrushes.count() ); + + // legend caption + if ( !titleText().isEmpty() && titleTextAttributes().isVisible() ) { + // PENDING(kalle) Other properties! + KDChart::TextLayoutItem* titleItem = + new KDChart::TextLayoutItem( titleText(), titleTextAttributes(), referenceArea(), + orientation() == Qt::Vertical ? KDChartEnums::MeasureOrientationMinimum + : KDChartEnums::MeasureOrientationHorizontal, + d->textAlignment ); + titleItem->setParentWidget( this ); + + d->paintItems << titleItem; + if ( orientation() == Qt::Vertical ) + d->layout->addItem( titleItem, 0, 0, 1, 5, Qt::AlignCenter ); + else + d->layout->addItem( titleItem, 0, 0, 1, d->modelLabels.count() ? ( d->modelLabels.count() * 4 ) : 1, + Qt::AlignCenter ); + + // The line between the title and the legend items, if any. + if ( showLines() && d->modelLabels.count() ) { + KDChart::HorizontalLineLayoutItem* lineItem = new KDChart::HorizontalLineLayoutItem(); + d->paintItems << lineItem; + if ( orientation() == Qt::Vertical ) { + d->layout->addItem( lineItem, 1, 0, 1, 5, Qt::AlignCenter ); + } else { + // we have 1 + count * 4 columns, because we have both a leading and a trailing spacer + d->layout->addItem( lineItem, 1, 0, 1, 1 + d->modelLabels.count() * 4, Qt::AlignCenter ); + } + } + } + + const KDChartEnums::MeasureOrientation orient = orientation() == Qt::Vertical ? + KDChartEnums::MeasureOrientationMinimum : + KDChartEnums::MeasureOrientationHorizontal; + const TextAttributes labelAttrs( textAttributes() ); + qreal fontHeight = labelAttrs.calculatedFontSize( referenceArea(), orient ); + const LegendStyle style = legendStyle(); + QFont tmpFont = labelAttrs.font(); + tmpFont.setPointSizeF( fontHeight ); + + if ( GlobalMeasureScaling::paintDevice() ) { + fontHeight = QFontMetricsF( tmpFont, GlobalMeasureScaling::paintDevice() ).height(); + } else { + fontHeight = QFontMetricsF( tmpFont ).height(); + } + + + const bool bShowMarkers = style != LinesOnly; + + QSizeF maxMarkersSize( 1.0, 1.0 ); + QVector< MarkerAttributes > markerAttrs( d->modelLabels.count() ); + if ( bShowMarkers ) { + for ( int dataset = 0; dataset < d->modelLabels.count(); ++dataset ) { + markerAttrs[ dataset ] = markerAttributes( dataset ); + QSizeF siz; + if ( useAutomaticMarkerSize() || !markerAttrs[dataset].markerSize().isValid() ) { + siz = QSizeF( fontHeight, fontHeight ); + markerAttrs[ dataset ].setMarkerSize( siz ); + } else { + siz = markerAttrs[ dataset ].markerSize(); + } + maxMarkersSize = maxMarkersSize.expandedTo( siz ); + } + } + + // If we show a marker on a line, we paint it after 8 pixels + // of the line have been painted. This allows to see the line style + // at the right side of the marker without the line needing to + // be too long. + // (having the marker in the middle of the line would require longer lines) + const int lineLengthLeftOfMarker = 8; + + int maxLineLength = 18; + { + bool hasComplexPenStyle = false; + for ( int dataset = 0; dataset < d->modelLabels.count(); ++dataset ) { + const QPen pn = pen( dataset ); + const Qt::PenStyle ps = pn.style(); + if ( ps != Qt::NoPen ) { + maxLineLength = qMax( pn.width() * 18, maxLineLength ); + if ( ps != Qt::SolidLine ) { + hasComplexPenStyle = true; + } + } + } + if ( hasComplexPenStyle && bShowMarkers ) { + maxLineLength += lineLengthLeftOfMarker + int( maxMarkersSize.width() ); + } + } + + // Horizontal needs a leading spacer + if ( orientation() == Qt::Horizontal ) { + d->layout->addItem( new QSpacerItem( spacing(), 1 ), 2, 0 ); + } + + // for all datasets: add (line)marker items and text items to the layout + for ( int dataset = 0; dataset < d->modelLabels.count(); ++dataset ) { + KDChart::AbstractLayoutItem* markerLineItem = 0; + // It is possible to set the marker brush both through the MarkerAttributes, + // as well as through the dataset brush set in the diagram, whereas the + // MarkerAttributes are preferred. + const QBrush markerBrush = markerAttrs[dataset].markerColor().isValid() ? + QBrush(markerAttrs[dataset].markerColor()) : brush( dataset ); + switch ( style ) { + case MarkersOnly: + markerLineItem = new KDChart::MarkerLayoutItem( + diagram(), + markerAttrs[dataset], + markerBrush, + markerAttrs[dataset].pen(), + Qt::AlignLeft ); + break; + case LinesOnly: + markerLineItem = new KDChart::LineLayoutItem( + diagram(), + maxLineLength, + pen( dataset ), + d->legendLineSymbolAlignment, + Qt::AlignCenter ); + break; + case MarkersAndLines: + markerLineItem = new KDChart::LineWithMarkerLayoutItem( + diagram(), + maxLineLength, + pen( dataset ), + lineLengthLeftOfMarker, + markerAttrs[dataset], + markerBrush, + markerAttrs[dataset].pen(), + Qt::AlignCenter ); + break; + default: + Q_ASSERT( false ); + } + if ( markerLineItem ) { + d->paintItems << markerLineItem; + if ( orientation() == Qt::Vertical ) { + d->layout->addItem( markerLineItem, dataset * 2 + 2, 1, 1, 1, Qt::AlignCenter ); + } else { + d->layout->addItem( markerLineItem, 2, dataset * 4 + 1 ); + } + } + + // PENDING(kalle) Other properties! + KDChart::TextLayoutItem* labelItem = + new KDChart::TextLayoutItem( text( dataset ), labelAttrs, referenceArea(), + orient, d->textAlignment ); + labelItem->setParentWidget( this ); + + d->paintItems << labelItem; + if ( orientation() == Qt::Vertical ) { + d->layout->addItem( labelItem, dataset * 2 + 2, 3 ); + } else { + d->layout->addItem( labelItem, 2, dataset * 4 + 2 ); + } + + // horizontal lines (only in vertical mode, and not after the last item) + if ( orientation() == Qt::Vertical && showLines() && dataset != d->modelLabels.count() - 1 ) { + KDChart::HorizontalLineLayoutItem* lineItem = new KDChart::HorizontalLineLayoutItem(); + d->paintItems << lineItem; + d->layout->addItem( lineItem, dataset * 2 + 1 + 2, 0, 1, 5, Qt::AlignCenter ); + } + + // vertical lines (only in horizontal mode, and not after the last item) + if ( orientation() == Qt::Horizontal && showLines() && dataset != d->modelLabels.count() - 1 ) { + KDChart::VerticalLineLayoutItem* lineItem = new KDChart::VerticalLineLayoutItem(); + d->paintItems << lineItem; + d->layout->addItem( lineItem, 2, + dataset * 4 + ( style == MarkersAndLines ? 4 : 3 ), + 1, 1, Qt::AlignCenter ); + } + + // Horizontal needs a spacer + if ( orientation() == Qt::Horizontal ) { + d->layout->addItem( new QSpacerItem( spacing(), 1 ), 2, dataset * 4 + 4 ); + } + } + + // vertical line (only in vertical mode) + if ( orientation() == Qt::Vertical && showLines() && d->modelLabels.count() ) { + KDChart::VerticalLineLayoutItem* lineItem = new KDChart::VerticalLineLayoutItem(); + d->paintItems << lineItem; + d->layout->addItem( lineItem, 2, 2, d->modelLabels.count() * 2, 1 ); + } + + // This line is absolutely necessary, otherwise: #2516. + activateTheLayout(); + + emit propertiesChanged(); +#ifdef DEBUG_LEGEND_PAINT + qDebug() << "leaving Legend::buildLegend()"; +#endif +} + +void Legend::setHiddenDatasets( const QList hiddenDatasets ) +{ + d->hiddenDatasets = hiddenDatasets; +} + +const QList Legend::hiddenDatasets() const +{ + return d->hiddenDatasets; +} + +void Legend::setDatasetHidden( uint dataset, bool hidden ) +{ + if ( hidden && !d->hiddenDatasets.contains( dataset ) ) { + d->hiddenDatasets.append( dataset ); + } else if ( !hidden && d->hiddenDatasets.contains( dataset ) ) { + d->hiddenDatasets.removeAll( dataset ); + } +} + +bool Legend::datasetIsHidden( uint dataset ) const +{ + return d->hiddenDatasets.contains( dataset ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLegend.h b/massif-visualizer/kdchart/src/KDChart/KDChartLegend.h new file mode 100644 index 00000000..126c73fc --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLegend.h @@ -0,0 +1,408 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEGEND_H +#define KDCHARTLEGEND_H + +#include "KDChartAbstractAreaWidget.h" +#include "KDChartPosition.h" +#include "KDChartMarkerAttributes.h" + +class QTextTable; + +namespace KDChart { + + class AbstractDiagram; + typedef QList DiagramList; + typedef QList ConstDiagramList; + +/** + * @brief Legend defines the interface for the legend drawing class. + * + * Legend is the class for drawing legends for all kinds of diagrams ("chart types"). + * + * Legend is drawn on chart level, not per diagram, but you can have more than one + * legend per chart, using KDChart::Chart::addLegend(). + * + * \note Legend is different from all other classes ofd KD Chart, since it can be + * displayed outside of the Chart's area. If you want to, you can embedd the legend + * into your own widget, or into another part of a bigger layout, into which you might + * have inserted the Chart. + * + * On the other hand, please note that you MUST call Chart::addLegend to get your + * legend positioned into the correct place of your chart - if you want to have + * the legend shown inside of the chart (that's probably true for most cases). + */ +class KDCHART_EXPORT Legend : public AbstractAreaWidget +{ + Q_OBJECT + + Q_DISABLE_COPY( Legend ) + KDCHART_DECLARE_PRIVATE_DERIVED_QWIDGET( Legend ) + +public: + explicit Legend( QWidget* parent = 0 ); + explicit Legend( KDChart::AbstractDiagram* diagram, QWidget* parent = 0 ); + virtual ~Legend(); + + + enum LegendStyle { MarkersOnly = 0, + LinesOnly = 1, + MarkersAndLines = 2 }; + + + void setLegendStyle( LegendStyle style ); + LegendStyle legendStyle() const; + + + virtual Legend * clone() const; + + /** + * Returns true if both legends have the same settings. + */ + bool compare( const Legend* other ) const; + + virtual void resizeEvent( QResizeEvent * event ); // TODO: should be protected + + virtual void paint( QPainter* painter ); + virtual void setVisible( bool visible ); + + /** + Specifies the reference area for font size of title text, + and for font size of the item texts, IF automatic area + detection is set. + + \note This parameter is ignored, if the Measure given for + setTitleTextAttributes (or setTextAttributes, resp.) is + not specifying automatic area detection. + + If no reference area is specified, but automatic area + detection is set, then the size of the legend's parent + widget will be used. + + \sa KDChart::Measure, KDChartEnums::MeasureCalculationMode + */ + void setReferenceArea( const QWidget* area ); + /** + Returns the reference area, that is used for font size of title text, + and for font size of the item texts, IF automatic area + detection is set. + + \sa setReferenceArea + */ + const QWidget* referenceArea() const; + + /** + * The first diagram of the legend or 0 if there was none added to the legend. + * @return The first diagram of the legend or 0. + * + * \sa diagrams, addDiagram, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + KDChart::AbstractDiagram* diagram() const; + + /** + * The list of all diagrams associated with the legend. + * @return The list of all diagrams associated with the legend. + * + * \sa diagram, addDiagram, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + DiagramList diagrams() const; + + /** + * @return The list of diagrams associated with this legend. + */ + ConstDiagramList constDiagrams() const; + + /** + * Add the given diagram to the legend. + * @param newDiagram The diagram to add. + * + * \sa diagram, diagrams, removeDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + void addDiagram( KDChart::AbstractDiagram* newDiagram ); + + /** + * Removes the diagram from the legend's list of diagrams. + * + * \sa diagram, diagrams, addDiagram, removeDiagrams, replaceDiagram, setDiagram + */ + void removeDiagram( KDChart::AbstractDiagram* oldDiagram ); + + /** + * Removes all diagrams from the legend's list of diagrams. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, replaceDiagram, setDiagram + */ + void removeDiagrams(); + + /** + * Replaces the old diagram, or appends the + * new diagram, it there is none yet. + * + * @param newDiagram The diagram to be used instead of the old one. + * If this parameter is zero, the first diagram will just be removed. + * + * @param oldDiagram The diagram to be removed by the new one. This + * diagram will be deleted automatically. If the parameter is omitted, + * the very first diagram will be replaced. In case, there was no + * diagram yet, the new diagram will just be added. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, removeDiagrams, setDiagram + */ + void replaceDiagram( KDChart::AbstractDiagram* newDiagram, + KDChart::AbstractDiagram* oldDiagram = 0 ); + + /** + * Returns the offset of the first dataset of \c diagram. + * + */ + uint dataSetOffset( KDChart::AbstractDiagram* diagram ); + + /** + * @brief A convenience method doing the same as replaceDiagram( newDiagram, 0 ); + * + * Replaces the first diagram by the given diagram. + * If the legend's list of diagram is empty the given diagram is added to the list. + * + * \sa diagram, diagrams, addDiagram, removeDiagram, removeDiagrams, replaceDiagram + */ + void setDiagram( KDChart::AbstractDiagram* newDiagram ); + + /** + * \brief Specify the position of a non-floating legend. + * + * Use setFloatingPosition to set position and alignment + * if your legend is floating. + * + * \sa setAlignment, setFloatingPosition + */ + void setPosition( Position position ); + + /** + * Returns the position of a non-floating legend. + * \sa setPosition + */ + Position position() const; + + /** + * \brief Specify the alignment of a non-floating legend. + * + * Use setFloatingPosition to set position and alignment + * if your legend is floating. + * + * \sa alignment, setPosition, setFloatingPosition + */ + void setAlignment( Qt::Alignment ); + + /** + * Returns the alignment of a non-floating legend. + * \sa setAlignment + */ + Qt::Alignment alignment() const; + + /** + * \brief Specify the alignment of the text elements within the legend + * + * \sa textAlignment() + */ + void setTextAlignment( Qt::Alignment ); + + /** + * \brief Returns the alignment used while rendering text elements within the legend. + * + * \sa setTextAlignment() + */ + Qt::Alignment textAlignment() const; + + /** + * \brief Specify the alignment of the legend symbol( alignment of Legend::LinesOnly) + * within the legend + * + * \sa legendSymbolAlignment() + */ + void setLegendSymbolAlignment(Qt::Alignment); + + /** + * \brief Returns the alignment used while drawing legend symbol(alignment of Legend::LinesOnly) + * within the legend. + * + * \sa setLegendSymbolAlignment() + */ + Qt::Alignment legendSymbolAlignment() const; + + /** + * \brief Specify the position and alignment of a floating legend. + * + * Use setPosition and setAlignment to set position and alignment + * if your legend is non-floating. + * + * \note When setFloatingPosition is called, the Legend's position value is set to + * KDChart::Position::Floating automatically. + * + * If your Chart is pointed to by m_chart, your could have the floating legend + * aligned exactly to the chart's coordinate plane's top-right corner + * with the following commands: +\verbatim +KDChart::RelativePosition relativePosition; +relativePosition.setReferenceArea( m_chart->coordinatePlane() ); +relativePosition.setReferencePosition( Position::NorthEast ); +relativePosition.setAlignment( Qt::AlignTop | Qt::AlignRight ); +relativePosition.setHorizontalPadding( + KDChart::Measure( -1.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +relativePosition.setVerticalPadding( + KDChart::Measure( 0.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +m_legend->setFloatingPosition( relativePosition ); +\endverbatim + * + * To have the legend positioned at a fixed point, measured from the QPainter's top left corner, + * you could use the following code code: + * +\verbatim +KDChart::RelativePosition relativePosition; +relativePosition.setReferencePoints( PositionPoints( QPointF( 0.0, 0.0 ) ) ); +relativePosition.setReferencePosition( Position::NorthWest ); +relativePosition.setAlignment( Qt::AlignTop | Qt::AlignLeft ); +relativePosition.setHorizontalPadding( + KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +relativePosition.setVerticalPadding( + KDChart::Measure( 4.0, KDChartEnums::MeasureCalculationModeAbsolute ) ); +m_legend->setFloatingPosition( relativePosition ); +\endverbatim + * Actually that's exactly the code KD Chart is using as default position for any floating legends, + * so if you just say setPosition( KDChart::Position::Floating ) without calling setFloatingPosition + * your legend will be positioned at point 4/4. + * + * \sa setPosition, setAlignment + */ + void setFloatingPosition( const RelativePosition& relativePosition ); + + /** + * Returns the position of a floating legend. + * \sa setFloatingPosition + */ + const RelativePosition floatingPosition() const; + + void setOrientation( Qt::Orientation orientation ); + Qt::Orientation orientation() const; + + + void setSortOrder( Qt::SortOrder order ); + Qt::SortOrder sortOrder() const; + + void setShowLines( bool legendShowLines ); + bool showLines() const; + + void resetTexts(); + void setText( uint dataset, const QString& text ); + QString text( uint dataset ) const; + const QMap texts() const; + + /** + * Sets a list of datasets that are to be hidden in the legend. + * + * By passing an empty list, you show all datasets. + * All datasets are shown by default, which means + * that hiddenDatasets() returns an empty list. + */ + void setHiddenDatasets( const QList hiddenDatasets ); + const QList hiddenDatasets() const; + void setDatasetHidden( uint dataset, bool hidden ); + bool datasetIsHidden( uint dataset ) const; + + uint datasetCount() const; + + void setDefaultColors(); + void setRainbowColors(); + void setSubduedColors( bool ordered = false ); + + void setBrushesFromDiagram( KDChart::AbstractDiagram* diagram ); + + /** + * Note: there is no color() getter method, since setColor + * just sets a QBrush with the respective color, so the + * brush() getter method is sufficient. + */ + void setColor( uint dataset, const QColor& color ); + + void setBrush( uint dataset, const QBrush& brush ); + QBrush brush( uint dataset ) const; + const QMap brushes() const; + + void setPen( uint dataset, const QPen& pen ); + QPen pen( uint dataset ) const; + const QMap pens() const; + + /** + * Note that any sizes specified via setMarkerAttributes are ignored, + * unless you disable the automatic size calculation, by saying + * setUseAutomaticMarkerSize( false ) + */ + void setMarkerAttributes( uint dataset, const MarkerAttributes& ); + MarkerAttributes markerAttributes( uint dataset ) const; + const QMap markerAttributes() const; + + /** + * This option is on by default, it means that Marker sizes in the Legend + * will be the same as the font height used for their respective label texts. + * + * Set this to false, if you want to specify the marker sizes via setMarkerAttributes + * or if you want the Legend to use the same marker sizes as they are used in the Diagrams. + */ + void setUseAutomaticMarkerSize( bool useAutomaticMarkerSize ); + bool useAutomaticMarkerSize() const; + + void setTextAttributes( const TextAttributes &a ); + TextAttributes textAttributes() const; + + void setTitleText( const QString& text ); + QString titleText() const; + + void setTitleTextAttributes( const TextAttributes &a ); + TextAttributes titleTextAttributes() const; + + void setSpacing( uint space ); + uint spacing() const; + + // called internally by KDChart::Chart, when painting into a custom QPainter + virtual void forceRebuild(); + + virtual QSize minimumSizeHint() const; + virtual QSize sizeHint() const; + virtual void needSizeHint(); + +Q_SIGNALS: + void destroyedLegend( Legend* ); + /** Emitted upon change of a property of the Legend or any of its components. */ + void propertiesChanged(); + +private Q_SLOTS: + void emitPositionChanged(); + void resetDiagram( AbstractDiagram* ); + void activateTheLayout(); + void setNeedRebuild(); + void buildLegend(); +}; // End of class Legend + +} + + +#endif // KDCHARTLEGEND_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLegend_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartLegend_p.h new file mode 100644 index 00000000..68e4c8a8 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLegend_p.h @@ -0,0 +1,153 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTLEGEND_P_H +#define KDCHARTLEGEND_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartLegend.h" +#include +#include "KDChartAbstractAreaWidget_p.h" +#include +#include +#include +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE +class QGridLayout; +class KDTextDocument; +class QTextDocument; +QT_END_NAMESPACE + +namespace KDChart { + class AbstractDiagram; + class DiagramObserver; + class AbstractLayoutItem; + + class DiagramsObserversList : public QList {}; +} + +/** + * \internal + */ +class KDChart::Legend::Private : public KDChart::AbstractAreaWidget::Private +{ + friend class KDChart::Legend; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractAreaWidget::Private( rhs ), + referenceArea( 0 ), + position( rhs.position ), + alignment( rhs.alignment ), + textAlignment( rhs.textAlignment ), + legendLineSymbolAlignment(Qt::AlignCenter), + relativePosition( rhs.relativePosition ), + orientation( rhs.orientation ), + order( rhs.order ), + showLines( rhs.showLines ), + texts( rhs.texts ), + brushes( rhs.brushes ), + pens( rhs.pens ), + markerAttributes( rhs.markerAttributes ), + textAttributes( rhs.textAttributes ), + titleText( rhs.titleText ), + titleTextAttributes( rhs.titleTextAttributes ), + spacing( rhs.spacing ), + useAutomaticMarkerSize( rhs.useAutomaticMarkerSize ), + legendStyle( MarkersOnly ) + //needRebuild( true ) + { + } + + DiagramObserver* findObserverForDiagram( AbstractDiagram* diagram ) + { + for (int i = 0; i < observers.size(); ++i) { + DiagramObserver * obs = observers.at(i); + if ( obs->diagram() == diagram ) + return obs; + } + return 0; + } + +private: + // user-settable + const QWidget* referenceArea; + Position position; + Qt::Alignment alignment; + Qt::Alignment textAlignment; + Qt::Alignment legendLineSymbolAlignment; + RelativePosition relativePosition; + Qt::Orientation orientation; + Qt::SortOrder order; + bool showLines; + QMap texts; + QMap brushes; + QMap pens; + QMap markerAttributes; + QList hiddenDatasets; + TextAttributes textAttributes; + QString titleText; + TextAttributes titleTextAttributes; + uint spacing; + bool useAutomaticMarkerSize; + LegendStyle legendStyle; + + // internal + mutable QStringList modelLabels; + mutable QList modelBrushes; + mutable QList modelPens; + mutable QList modelMarkers; + mutable QSize cachedSizeHint; + QVector paintItems; + QGridLayout* layout; + DiagramsObserversList observers; +}; + +inline KDChart::Legend::Legend( Private* p, QWidget* parent ) + : AbstractAreaWidget( p, parent ) { init(); } +inline KDChart::Legend::Private * KDChart::Legend::d_func() +{ return static_cast( AbstractAreaWidget::d_func() ); } +inline const KDChart::Legend::Private * KDChart::Legend::d_func() const +{ return static_cast( AbstractAreaWidget::d_func() ); } + + + + +#endif /* KDCHARTLEGEND_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartLineAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartLineAttributes.cpp new file mode 100644 index 00000000..e61a06ef --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartLineAttributes.cpp @@ -0,0 +1,144 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartLineAttributes.h" +#include + +#include + +#define d d_func() + +using namespace KDChart; + +class LineAttributes::Private +{ + friend class LineAttributes; +public: + Private(); + +private: + //Areas + MissingValuesPolicy missingValuesPolicy; + bool displayArea; + uint transparency; + int areaBoundingDataset; +}; + + +LineAttributes::Private::Private() + : missingValuesPolicy( MissingValuesAreBridged ) + , displayArea( false ) + , transparency( 255 ) + , areaBoundingDataset( -1 ) +{ +} + + +LineAttributes::LineAttributes() + : _d( new Private() ) +{ +} + +LineAttributes::LineAttributes( const LineAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +LineAttributes& LineAttributes::operator= ( const LineAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +LineAttributes::~LineAttributes() +{ + delete _d; _d = 0; +} + +bool LineAttributes::operator==( const LineAttributes& r ) const +{ + return + missingValuesPolicy() == r.missingValuesPolicy() && + displayArea() == r.displayArea() && + transparency() == r.transparency() && + areaBoundingDataset() == r.areaBoundingDataset(); +} + +void LineAttributes::setMissingValuesPolicy( MissingValuesPolicy policy ) +{ + d->missingValuesPolicy = policy; +} + +LineAttributes::MissingValuesPolicy LineAttributes::missingValuesPolicy() const +{ + return d->missingValuesPolicy; +} + +void LineAttributes::setDisplayArea( bool display ) +{ + d->displayArea = display; +} + +bool LineAttributes::displayArea() const +{ + return d->displayArea; +} + +void LineAttributes::setTransparency( uint alpha ) +{ + if ( alpha > 255 ) + alpha = 255; + d->transparency = alpha; +} + +uint LineAttributes::transparency() const +{ + return d->transparency; +} + +void LineAttributes::setAreaBoundingDataset( int dataset ) +{ + d->areaBoundingDataset = dataset; +} + +int LineAttributes::areaBoundingDataset() const +{ + return d->areaBoundingDataset; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::LineAttributes& a) +{ + dbg << "KDChart::LineAttributes(" + // MissingValuesPolicy missingValuesPolicy; + << "bool="< +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief Set of attributes for changing the appearance of line charts + */ +class KDCHART_EXPORT LineAttributes +{ +public: + /** + \brief MissingValuesPolicy specifies how a missing value will be shown in a line diagram. + + Missing value is assumed if the data cell contains a QVariant that can not be + interpreted as a qreal, or if the data cell is hidden while its dataset is not hidden. + + \li \c MissingValuesAreBridged the default: No markers will be shown for missing values + but the line will be bridged if there is at least one valid cell before and after + the missing value(s), otherwise the segment will be hidden. + \li \c MissingValuesHideSegments Line segments starting with a missing value will + not be shown, and no markers will be shown for missing values, so this will look like + a piece of the line is missing. + \li \c MissingValuesShownAsZero Missing value(s) will be treated like normal zero values, + and markers will shown for them too, so there will be no visible difference between a + zero value and a missing value. + \li \c MissingValuesPolicyIgnored (internal value, do not use) + + */ + enum MissingValuesPolicy { + MissingValuesAreBridged, + MissingValuesHideSegments, + MissingValuesShownAsZero, + MissingValuesPolicyIgnored }; + + LineAttributes(); + LineAttributes( const LineAttributes& ); + LineAttributes &operator= ( const LineAttributes& ); + + ~LineAttributes(); + + /* line chart and area chart - all types */ + void setMissingValuesPolicy( MissingValuesPolicy policy ); + MissingValuesPolicy missingValuesPolicy() const; + + /* area chart - all types */ + /** + * Sets the lower or upper (depending on the displayed value being positive or + * negative, resp.) bounding line (i.e., the dataset with the line data). The area + * is then drawn between this line and the line of the specified dataset. + * Pass -1 to draw the area between this line and the zero line. + */ + void setAreaBoundingDataset( int dataset ); + int areaBoundingDataset() const; + + void setDisplayArea( bool display ); + bool displayArea() const; + /*allows viewing the covered areas*/ + void setTransparency( uint alpha ); + uint transparency() const; + + bool operator==( const LineAttributes& ) const; + inline bool operator!=( const LineAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( LineAttributes ) +}; // End of class LineAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::LineAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::LineAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::LineAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::LineAttributes ) + +#endif // KDCHARTLINEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.cpp new file mode 100644 index 00000000..c618ab7d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.cpp @@ -0,0 +1,206 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartMarkerAttributes.h" +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace KDChart; + +class MarkerAttributes::Private +{ + friend class ::KDChart::MarkerAttributes; +public: + Private(); +private: + bool visible; + bool threeD; + QMap markerStylesMap; + uint markerStyle; + QSizeF markerSize; + QColor markerColor; + QPainterPath customMarkerPath; + QPen markerPen; +}; + +MarkerAttributes::Private::Private() + : visible( false ), + threeD( false ), + markerStyle( MarkerSquare ), + markerSize( 10, 10 ), + markerPen( Qt::black ) +{ +} + + +MarkerAttributes::MarkerAttributes() + : _d( new Private ) +{ + +} + +MarkerAttributes::MarkerAttributes( const MarkerAttributes& r ) + : _d( new Private( *r._d ) ) +{ + +} + +MarkerAttributes & MarkerAttributes::operator=( const MarkerAttributes& r ) +{ + MarkerAttributes copy( r ); + copy.swap( *this ); + return *this; +} + +MarkerAttributes::~MarkerAttributes() +{ + delete _d; _d = 0; +} + +#define d d_func() + +bool MarkerAttributes::operator==( const MarkerAttributes& r ) const +{ + /* + qDebug() << "MarkerAttributes::operator== finds" + << "b" << (isVisible() == r.isVisible()) + << "c" << (markerStylesMap() == r.markerStylesMap()) + << "d" << (markerStyle() == r.markerStyle()) << markerStyle() <visible = visible; +} + +bool MarkerAttributes::isVisible() const +{ + return d->visible; +} + +void MarkerAttributes::setThreeD( bool value ) +{ + d->threeD = value; +} + +bool MarkerAttributes::threeD() const +{ + return d->threeD; +} + +void MarkerAttributes::setMarkerStylesMap( const MarkerStylesMap & map ) +{ + d->markerStylesMap = map; +} + +MarkerAttributes::MarkerStylesMap MarkerAttributes::markerStylesMap() const +{ + return d->markerStylesMap; +} + +void MarkerAttributes::setMarkerStyle( uint style ) +{ + d->markerStyle = style; +} + +uint MarkerAttributes::markerStyle() const +{ + return d->markerStyle; +} + +void MarkerAttributes::setMarkerSize( const QSizeF& size ) +{ + d->markerSize = size; +} + +QSizeF MarkerAttributes::markerSize() const +{ + return d->markerSize; +} + +void MarkerAttributes::setMarkerColor( const QColor& color ) +{ + d->markerColor = color; +} + +QColor MarkerAttributes::markerColor() const +{ + return d->markerColor; +} + +void MarkerAttributes::setCustomMarkerPath( const QPainterPath& path ) +{ + d->customMarkerPath = path; +} + +QPainterPath MarkerAttributes::customMarkerPath() const +{ + return d->customMarkerPath; +} + +void MarkerAttributes::setPen( const QPen& pen ) +{ + d->markerPen = pen; +} + +QPen MarkerAttributes::pen() const +{ + return d->markerPen; +} + +#undef d + +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<( QDebug dbg, const MarkerAttributes & ma ) { + return dbg << "KDChart::MarkerAttributes(" + << "visible=" << ma.isVisible() + << "markerStylesMap=" << ma.markerStylesMap() + << "markerStyle=" << ma.markerStyle() + << "markerColor=" << ma.markerColor() + << "customMarkerPath=" << ma.customMarkerPath() + << "pen=" << ma.pen() + << ")"; +} +#endif + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.h b/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.h new file mode 100644 index 00000000..d0fbcd2e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartMarkerAttributes.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTMARKERATTRIBUTES_H +#define KDCHARTMARKERATTRIBUTES_H + +#include +#include "KDChartGlobal.h" + +QT_BEGIN_NAMESPACE +class QColor; +class QSizeF; +class QPen; +class QPainterPath; +class QDebug; +template class QMap; +QT_END_NAMESPACE + +namespace KDChart { + + /** + * @brief A set of attributes controlling the appearance of data set markers + */ + class KDCHART_EXPORT MarkerAttributes + { + public: + MarkerAttributes(); + MarkerAttributes( const MarkerAttributes& ); + MarkerAttributes &operator= ( const MarkerAttributes& ); + + ~MarkerAttributes(); + + enum MarkerStyle { MarkerCircle = 0, + MarkerSquare = 1, + MarkerDiamond = 2, + Marker1Pixel = 3, + Marker4Pixels = 4, + MarkerRing = 5, + MarkerCross = 6, + MarkerFastCross = 7, + NoMarker = 8, + PainterPathMarker = 9, + StartCustomMarkers = 10 }; + + void setVisible( bool visible ); + bool isVisible() const; + + typedef QMap MarkerStylesMap; + void setMarkerStylesMap( const MarkerStylesMap & map ); + MarkerStylesMap markerStylesMap() const; + + void setThreeD( bool value ); + bool threeD() const; + + /** + * Set the marker-style to use. This could be either one of the + * predefined \a MarkerStyle or a custom one that has a value + * bigger or equal to StartCustomMarkers. + * + * Such a custom marker does then allow to fetch a custom pixmap + * for each point (value pair) from the model using the + * Qt::DecorationRole . + */ + void setMarkerStyle( uint style ); + uint markerStyle() const; + + /** + * Normally you need to specify a valid QSizeF here, but for Legends you can + * use the invalid size QSizeF(), to enable automatic marker size calculation: + * + * For Markers shown in a Legend this means the marker size will be equal to + * the font height used for the labels that are shown next to the markers. + */ + void setMarkerSize( const QSizeF& size ); + QSizeF markerSize() const; + + void setMarkerColor( const QColor& color ); + QColor markerColor() const; + + void setCustomMarkerPath( const QPainterPath& path ); + QPainterPath customMarkerPath() const; + + void setPen( const QPen& pen ); + QPen pen() const; + + bool operator==( const MarkerAttributes& ) const; + bool operator!=( const MarkerAttributes& ) const; + + private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( MarkerAttributes ) + }; // End of class MarkerAttributes + + inline bool MarkerAttributes::operator!=( const MarkerAttributes & other ) const { return !operator==( other ); } +} + +#ifndef QT_NO_DEBUG_STREAM +KDCHART_EXPORT QDebug operator<<( QDebug, const KDChart::MarkerAttributes & ); +#endif + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::MarkerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::MarkerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::MarkerAttributes ) + +#endif // KDCHARTMARKERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartMeasure.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartMeasure.cpp new file mode 100644 index 00000000..8746a0df --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartMeasure.cpp @@ -0,0 +1,246 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartMeasure.h" + +#include + +#include +#include +#include +#include +#include + +#include + + +namespace KDChart { + + +Measure::Measure() + : mValue( 0.0 ), + mMode( KDChartEnums::MeasureCalculationModeAuto ), + mArea( 0 ), + mOrientation( KDChartEnums::MeasureOrientationAuto ) +{ + // this bloc left empty intentionally +} + +Measure::Measure( qreal value, + KDChartEnums::MeasureCalculationMode mode, + KDChartEnums::MeasureOrientation orientation ) + : mValue( value ), + mMode( mode ), + mArea( 0 ), + mOrientation( orientation ) +{ + // this bloc left empty intentionally +} + +Measure::Measure( const Measure& r ) + : mValue( r.value() ), + mMode( r.calculationMode() ), + mArea( r.referenceArea() ), + mOrientation( r.referenceOrientation() ) +{ + // this bloc left empty intentionally +} + +Measure & Measure::operator=( const Measure& r ) +{ + if ( this != &r ) { + mValue = r.value(); + mMode = r.calculationMode(); + mArea = r.referenceArea(); + mOrientation = r.referenceOrientation(); + } + + return *this; +} + + +qreal Measure::calculatedValue( const QSizeF& autoSize, + KDChartEnums::MeasureOrientation autoOrientation) const +{ + if ( mMode == KDChartEnums::MeasureCalculationModeAbsolute ) { + return mValue; + } else { + qreal value = 0.0; + const QObject theAutoArea; + const QObject* autoArea = &theAutoArea; + const QObject* area = mArea ? mArea : autoArea; + KDChartEnums::MeasureOrientation orientation = mOrientation; + switch ( mMode ) { + case KDChartEnums::MeasureCalculationModeAuto: + area = autoArea; + orientation = autoOrientation; + break; + case KDChartEnums::MeasureCalculationModeAutoArea: + area = autoArea; + break; + case KDChartEnums::MeasureCalculationModeAutoOrientation: + orientation = autoOrientation; + break; + case KDChartEnums::MeasureCalculationModeAbsolute: // fall through intended + case KDChartEnums::MeasureCalculationModeRelative: + break; + } + if ( area ) { + QSizeF size; + if ( area == autoArea ) + size = autoSize; + else + size = sizeOfArea( area ); + //qDebug() << ( area == autoArea ) << "size" << size; + qreal referenceValue = 0; + switch ( orientation ) { + case KDChartEnums::MeasureOrientationAuto: // fall through intended + case KDChartEnums::MeasureOrientationMinimum: + referenceValue = qMin( size.width(), size.height() ); + break; + case KDChartEnums::MeasureOrientationMaximum: + referenceValue = qMax( size.width(), size.height() ); + break; + case KDChartEnums::MeasureOrientationHorizontal: + referenceValue = size.width(); + break; + case KDChartEnums::MeasureOrientationVertical: + referenceValue = size.height(); + break; + } + value = mValue / 1000.0 * referenceValue; + } + return value; + } +} + + +qreal Measure::calculatedValue( const QObject* autoArea, + KDChartEnums::MeasureOrientation autoOrientation) const +{ + return calculatedValue( sizeOfArea( autoArea ), autoOrientation); +} + + +const QSizeF Measure::sizeOfArea( const QObject* area ) const +{ + QSizeF size; + const CartesianCoordinatePlane* plane = dynamic_cast( area ); + if ( false ) { + size = plane->visibleDiagramArea().size(); + } else { + const AbstractArea* kdcArea = dynamic_cast(area); + if ( kdcArea ) { + size = kdcArea->geometry().size(); + //qDebug() << "Measure::sizeOfArea() found kdcArea with size" << size; + } else { + const QWidget* widget = dynamic_cast(area); + if ( widget ) { + /* ATTENTION: Using the layout does not work: The Legend will never get the right size then! + const QLayout * layout = widget->layout(); + if ( layout ) { + size = layout->geometry().size(); + //qDebug() << "Measure::sizeOfArea() found widget with layout size" << size; + } else*/ + { + size = widget->geometry().size(); + //qDebug() << "Measure::sizeOfArea() found widget with size" << size; + } + } else if ( mMode != KDChartEnums::MeasureCalculationModeAbsolute ) { + size = QSizeF(1.0, 1.0); + //qDebug("Measure::sizeOfArea() got no valid area."); + } + } + } + const QPair< qreal, qreal > factors + = GlobalMeasureScaling::instance()->currentFactors(); + return QSizeF(size.width() * factors.first, size.height() * factors.second); +} + + +bool Measure::operator==( const Measure& r ) const +{ + return( mValue == r.value() && + mMode == r.calculationMode() && + mArea == r.referenceArea() && + mOrientation == r.referenceOrientation() ); +} + + + +GlobalMeasureScaling::GlobalMeasureScaling() +{ + mFactors.push( qMakePair(qreal(1.0), qreal(1.0)) ); +} + +GlobalMeasureScaling::~GlobalMeasureScaling() +{ + // this space left empty intentionally +} + +GlobalMeasureScaling* GlobalMeasureScaling::instance() +{ + static GlobalMeasureScaling instance; + return &instance; +} + +void GlobalMeasureScaling::setFactors(qreal factorX, qreal factorY) +{ + instance()->mFactors.push( qMakePair(factorX, factorY) ); +} + +void GlobalMeasureScaling::resetFactors() +{ + // never remove the initial (1.0. 1.0) setting + if ( instance()->mFactors.count() > 1 ) + instance()->mFactors.pop(); +} + +const QPair< qreal, qreal > GlobalMeasureScaling::currentFactors() +{ + return instance()->mFactors.top(); +} + +void GlobalMeasureScaling::setPaintDevice( QPaintDevice* paintDevice ) +{ + instance()->m_paintDevice = paintDevice; +} + +QPaintDevice* GlobalMeasureScaling::paintDevice() +{ + return instance()->m_paintDevice; +} + +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::Measure& m) +{ + dbg << "KDChart::Measure(" + << "value="< +#include +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +/** \file KDChartMeasure.h + * \brief Declaring the class KDChart::Measure. + * + * + */ + +QT_BEGIN_NAMESPACE +class QObject; +class QPaintDevice; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * \class Measure KDChartMeasure.h KDChartMeasure + * \brief Measure is used to specify relative and absolute sizes in KDChart, e.g. font sizes. + * + */ + +class KDCHART_EXPORT Measure +{ +public: + Measure(); + /*implicit*/ Measure( qreal value, + KDChartEnums::MeasureCalculationMode mode = KDChartEnums::MeasureCalculationModeAuto, + KDChartEnums::MeasureOrientation orientation = KDChartEnums::MeasureOrientationAuto ); + Measure( const Measure& ); + Measure &operator= ( const Measure& ); + + void setValue( qreal val ) { mValue = val; } + qreal value() const { return mValue; } + + void setCalculationMode( KDChartEnums::MeasureCalculationMode mode ) { mMode = mode; } + KDChartEnums::MeasureCalculationMode calculationMode() const { return mMode; } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + void setRelativeMode( const QObject * area, + KDChartEnums::MeasureOrientation orientation ) + { + mMode = KDChartEnums::MeasureCalculationModeRelative; + mArea = area; + mOrientation = orientation; + } + + /** + * \brief This is a convenience method for specifying a value, + * implicitly setting the calculation mode to MeasureCalculationModeAbsolute. + * + * Calling setAbsoluteValue( value ) is the same as calling +\verbatim + setValue( value ); + setCalculationMode( KDChartEnums::MeasureCalculationModeAbsolute ); +\endverbatim + */ + void setAbsoluteValue( qreal val ) + { + mMode = KDChartEnums::MeasureCalculationModeAbsolute; + mValue = val; + } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + void setReferenceArea( const QObject * area ) { mArea = area; } + /** + * The returned reference area will be derived from AbstractArea + * or QWidget or both. + */ + const QObject * referenceArea() const { return mArea; } + + void setReferenceOrientation( KDChartEnums::MeasureOrientation orientation ) { mOrientation = orientation; } + KDChartEnums::MeasureOrientation referenceOrientation() const { return mOrientation; } + + /** + * The reference area must either be derived from AbstractArea + * or from QWidget, so it can also be derived from AbstractAreaWidget. + */ + qreal calculatedValue( const QObject * autoArea, KDChartEnums::MeasureOrientation autoOrientation ) const; + qreal calculatedValue( const QSizeF& autoSize, KDChartEnums::MeasureOrientation autoOrientation ) const; + const QSizeF sizeOfArea( const QObject* area ) const; + + bool operator==( const Measure& ) const; + bool operator!=( const Measure& other ) const { return !operator==(other); } + +private: + qreal mValue; + KDChartEnums::MeasureCalculationMode mMode; + const QObject* mArea; + KDChartEnums::MeasureOrientation mOrientation; +}; // End of class Measure + + + +/** + * Auxiliary class used by the KDChart::Measure and KDChart::Chart class. + * + * Normally there should be no need to call any of these methods yourself. + * + * They are used by KDChart::Chart::paint( QPainter*, const QRect& ) + * to adjust all of the relative Measures according to the target + * rectangle's size. + * + * Default factors are (1.0, 1.0) + */ +class GlobalMeasureScaling +{ +public: + static GlobalMeasureScaling* instance(); + + GlobalMeasureScaling(); + virtual ~GlobalMeasureScaling(); + +public: + /** + * Set new factors to be used by all Measure objects from now on. + * Previous values will be saved on a stack internally. + */ + static void setFactors(qreal factorX, qreal factorY); + + /** + * Restore factors to the values before the previous call to + * setFactors. The current values are popped off a stack internally. + */ + static void resetFactors(); + + /** + * Return the currently active factors. + */ + static const QPair< qreal, qreal > currentFactors(); + + /** + * Set the paint device to use for calculating font metrics. + */ + static void setPaintDevice( QPaintDevice* paintDevice ); + + /** + * Return the paint device to use for calculating font metrics. + */ + static QPaintDevice* paintDevice(); + +private: + QStack< QPair< qreal, qreal > > mFactors; + QPaintDevice* m_paintDevice; +}; + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Measure& ); +#endif /* QT_NO_DEBUG_STREAM */ + +#endif // KDCHARTMEASURE_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.cpp new file mode 100644 index 00000000..57223048 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.cpp @@ -0,0 +1,101 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartModelDataCache_p.h" + +#include + +using namespace KDChart::ModelDataCachePrivate; + +ModelSignalMapperConnector::ModelSignalMapperConnector( ModelSignalMapper& mapper ) + : QObject( 0 ), + m_mapper( mapper ) +{ +} + +ModelSignalMapperConnector::~ModelSignalMapperConnector() +{ +} + +void ModelSignalMapperConnector::connectSignals( QAbstractItemModel* model ) +{ + connect( model, SIGNAL( destroyed() ), this, SLOT( resetModel() ) ); + connect( model, SIGNAL( columnsInserted( QModelIndex, int, int ) ), this, SLOT( columnsInserted( QModelIndex, int, int ) ) ); + connect( model, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), this, SLOT( columnsRemoved( QModelIndex, int, int ) ) ); + connect( model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), this, SLOT( dataChanged( QModelIndex, QModelIndex ) ) ); + connect( model, SIGNAL( layoutChanged() ), this, SLOT( layoutChanged() ) ); + connect( model, SIGNAL( modelReset() ), this, SLOT( modelReset() ) ); + connect( model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( rowsInserted( QModelIndex, int, int )) ); + connect( model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( rowsRemoved( QModelIndex, int, int ) ) ); +} + +void ModelSignalMapperConnector::disconnectSignals( QAbstractItemModel* model ) +{ + disconnect( model, SIGNAL( destroyed() ), this, SLOT( resetModel() ) ); + disconnect( model, SIGNAL( columnsInserted( QModelIndex, int, int ) ), this, SLOT( columnsInserted( QModelIndex, int, int ) ) ); + disconnect( model, SIGNAL( columnsRemoved( QModelIndex, int, int ) ), this, SLOT( columnsRemoved( QModelIndex, int, int ) ) ); + disconnect( model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), this, SLOT( dataChanged( QModelIndex, QModelIndex ) ) ); + disconnect( model, SIGNAL( layoutChanged() ), this, SLOT( layoutChanged() ) ); + disconnect( model, SIGNAL( modelReset() ), this, SLOT( modelReset() ) ); + disconnect( model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( rowsInserted( QModelIndex, int, int )) ); + disconnect( model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( rowsRemoved( QModelIndex, int, int ) ) ); +} + +void ModelSignalMapperConnector::resetModel() +{ + m_mapper.resetModel(); +} + +void ModelSignalMapperConnector::columnsInserted( const QModelIndex& parent, int start, int end ) +{ + m_mapper.columnsInserted( parent, start, end ); +} + +void ModelSignalMapperConnector::columnsRemoved( const QModelIndex& parent, int start, int end ) +{ + m_mapper.columnsRemoved( parent, start, end ); +} + +void ModelSignalMapperConnector::dataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight ) +{ + m_mapper.dataChanged( topLeft, bottomRight ); +} + +void ModelSignalMapperConnector::layoutChanged() +{ + m_mapper.layoutChanged(); +} + +void ModelSignalMapperConnector::modelReset() +{ + m_mapper.modelReset(); +} + +void ModelSignalMapperConnector::rowsInserted( const QModelIndex& parent, int start, int end ) +{ + m_mapper.rowsInserted( parent, start, end ); +} + +void ModelSignalMapperConnector::rowsRemoved( const QModelIndex& parent, int start, int end ) +{ + m_mapper.rowsRemoved( parent, start, end ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.h new file mode 100644 index 00000000..908a6b5b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartModelDataCache_p.h @@ -0,0 +1,355 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTMODELDATACACHE_H +#define KDCHARTMODELDATACACHE_H + +#include + +#include +#include +#include + +#include "kdchart_export.h" + +QT_BEGIN_NAMESPACE +class QAbstractItemModel; +QT_END_NAMESPACE + +namespace KDChart +{ + namespace ModelDataCachePrivate + { + class KDCHART_EXPORT ModelSignalMapper + { + protected: + ModelSignalMapper() {} + public: + virtual ~ModelSignalMapper() {} + virtual void resetModel() = 0; + virtual void columnsInserted( const QModelIndex&, int, int ) = 0; + virtual void columnsRemoved( const QModelIndex&, int, int ) = 0; + virtual void dataChanged( const QModelIndex&, const QModelIndex& ) = 0; + virtual void layoutChanged() = 0; + virtual void modelReset() = 0; + virtual void rowsInserted( const QModelIndex&, int, int ) = 0; + virtual void rowsRemoved( const QModelIndex&, int, int ) = 0; + }; + + // this class maps slots to a non-QObject instantiating ModelSignalMapper + class KDCHART_EXPORT ModelSignalMapperConnector : public QObject + { + Q_OBJECT + public: + explicit ModelSignalMapperConnector( ModelSignalMapper& mapper ); + ~ModelSignalMapperConnector(); + + void connectSignals( QAbstractItemModel* model ); + void disconnectSignals( QAbstractItemModel* model ); + + protected Q_SLOTS: + void resetModel(); + void columnsInserted( const QModelIndex&, int, int ); + void columnsRemoved( const QModelIndex&, int, int ); + void dataChanged( const QModelIndex&, const QModelIndex& ); + void layoutChanged(); + void modelReset(); + void rowsInserted( const QModelIndex&, int, int ); + void rowsRemoved( const QModelIndex&, int, int ); + + private: + ModelSignalMapper& m_mapper; + }; + + template< class T> + T nan() + { + return T(); + } + + template<> + inline qreal nan< qreal >() + { + return std::numeric_limits< qreal >::quiet_NaN(); + } + } + + template< class T, int ROLE > + class ModelDataCache : public ModelDataCachePrivate::ModelSignalMapper + { + public: + ModelDataCache() + : m_model( 0 ), + m_connector( *this ) + { + } + + virtual ~ModelDataCache() + { + } + + T data( const QModelIndex& index ) const + { + if ( !index.isValid() || index.parent() != m_rootIndex || index.row() >= m_model->rowCount(m_rootIndex) || index.column() >= m_model->columnCount(m_rootIndex) ) + return ModelDataCachePrivate::nan< T >(); + + if ( index.row() >= m_data.count() ) + { + qWarning( "KDChart didn't receive signal rowsInserted, resetModel or layoutChanged, " + "but an index with a row outside of the known bounds." ); + + // apparently, data were added behind our back (w/o signals) + const_cast< ModelDataCache< T, ROLE >* >( this )->rowsInserted( m_rootIndex, + m_data.count(), + m_model->rowCount( m_rootIndex ) - 1 ); + Q_ASSERT( index.row() < m_data.count() ); + } + + if ( index.column() >= m_data.first().count() ) + { + qWarning( "KDChart didn't got signal columnsInserted, resetModel or layoutChanged, " + "but an index with a column outside of the known bounds." ); + + // apparently, data were added behind our back (w/o signals) + const_cast< ModelDataCache< T, ROLE >* >( this )->columnsInserted( m_rootIndex, + m_data.first().count(), + m_model->columnCount( m_rootIndex ) - 1 ); + Q_ASSERT( index.column() < m_data.first().count() ); + } + + return data( index.row(), index.column() ); + } + + T data( int row, int column ) const + { + if ( row < 0 || column < 0 ) + return ModelDataCachePrivate::nan< T >(); + + Q_ASSERT( row < m_model->rowCount(m_rootIndex) ); + Q_ASSERT( column < m_model->columnCount(m_rootIndex) ); + + Q_ASSERT( row < m_data.count() ); + Q_ASSERT( column < m_data.first().count() ); + + if ( isCached( row, column ) ) + return m_data.at( row ).at( column ); + + return fetchFromModel( row, column, ROLE ); + } + + void setModel( QAbstractItemModel* model ) + { + if ( m_model != 0 ) + m_connector.disconnectSignals( m_model ); + + m_model = model; + + if ( m_model != 0 ) + m_connector.connectSignals( m_model ); + + modelReset(); + } + + QAbstractItemModel* model() const + { + return m_model; + } + + void setRootIndex( const QModelIndex& rootIndex ) + { + Q_ASSERT( rootIndex.model() == m_model || !rootIndex.isValid() ); + m_rootIndex = rootIndex; + modelReset(); + } + + QModelIndex rootIndex() const + { + return m_rootIndex; + } + + protected: + bool isCached( int row, int column ) const + { + return m_cacheValid.at( row ).at( column ); + } + + T fetchFromModel( int row, int column, int role ) const + { + Q_ASSERT( m_model != 0 ); + + const QModelIndex index = m_model->index( row, column, m_rootIndex ); + const QVariant data = index.data( role ); + const T value = data.isNull() ? ModelDataCachePrivate::nan< T >() + : ( data.value< T >() ); + + m_data[ row ][ column ] = value; + m_cacheValid[ row ][ column ] = true; + + return value; + } + + protected: + void columnsInserted( const QModelIndex& parent, int start, int end ) + { + Q_ASSERT( m_model != 0 ); + Q_ASSERT( parent.model() == m_model || !parent.isValid() ); + + if ( parent != m_rootIndex ) + return; + + Q_ASSERT( start <= end ); + Q_ASSERT( start <= m_model->columnCount(m_rootIndex) ); + + const int rowCount = m_data.count(); + for ( int row = 0; row < rowCount; ++row ) + { + m_data[ row ].insert( start, end - start + 1, T() ); + m_cacheValid[ row ].insert( start, end - start + 1, false ); + Q_ASSERT( m_data.at( row ).count() == m_model->columnCount( m_rootIndex ) ); + Q_ASSERT( m_cacheValid.at( row ).count() == m_model->columnCount( m_rootIndex ) ); + } + } + + void columnsRemoved( const QModelIndex& parent, int start, int end ) + { + Q_ASSERT( m_model != 0 ); + Q_ASSERT( parent.model() == m_model || !parent.isValid() ); + + if ( parent != m_rootIndex ) + return; + + Q_ASSERT( start <= end ); + + const int rowCount = m_data.count(); + for ( int row = 0; row < rowCount; ++row ) + { + m_data[ row ].remove( start, end - start + 1 ); + m_cacheValid[ row ].remove( start, end - start + 1 ); + Q_ASSERT( m_data.at( row ).count() == m_model->columnCount( m_rootIndex ) ); + Q_ASSERT( m_cacheValid.at( row ).count() == m_model->columnCount( m_rootIndex ) ); + } + } + + void dataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight ) + { + if ( !m_model ) + return; + Q_ASSERT( m_model != 0 ); + Q_ASSERT( topLeft.parent() == bottomRight.parent() ); + + if ( !topLeft.isValid() || !bottomRight.isValid() || topLeft.parent() != m_rootIndex ) + return; + + Q_ASSERT( topLeft.model() == m_model && bottomRight.model() == m_model ); + + const int minRow = qMax( 0, topLeft.row() ); + const int maxRow = bottomRight.row(); + const int minCol = qMax( 0, topLeft.column() ); + const int maxCol = bottomRight.column(); + + Q_ASSERT( minRow <= maxRow ); + Q_ASSERT( minCol <= maxCol ); + Q_ASSERT( maxRow < m_model->rowCount( m_rootIndex ) ); + Q_ASSERT( maxCol < m_model->columnCount( m_rootIndex ) ); + + for ( int row = minRow; row <= maxRow; ++row ) + { + for ( int col = minCol; col <= maxCol; ++col ) + { + m_cacheValid[ row ][ col ] = false; + Q_ASSERT( !isCached( row, col ) ); + } + } + } + + void layoutChanged() + { + modelReset(); + } + + void modelReset() + { + m_data.clear(); + m_cacheValid.clear(); + + if ( m_model == 0 ) + return; + + m_data.fill( QVector< T >( m_model->columnCount( m_rootIndex ) ), m_model->rowCount( m_rootIndex ) ); + m_cacheValid.fill( QVector< bool >( m_model->columnCount( m_rootIndex ), false ), m_model->rowCount( m_rootIndex ) ); + + Q_ASSERT( m_data.count() == m_model->rowCount( m_rootIndex ) ); + Q_ASSERT( m_cacheValid.count() == m_model->rowCount( m_rootIndex ) ); + } + + void rowsInserted( const QModelIndex& parent, int start, int end ) + { + Q_ASSERT( m_model != 0 ); + Q_ASSERT( parent.model() == m_model || !parent.isValid() ); + + if ( parent != m_rootIndex || start >= m_model->rowCount(m_rootIndex) ) + return; + + Q_ASSERT( start <= end ); + Q_ASSERT( end - start + 1 <= m_model->rowCount(m_rootIndex) ); + + m_data.insert( start, end - start + 1, QVector< T >( m_model->columnCount( m_rootIndex ) ) ); + m_cacheValid.insert( start, end - start + 1, QVector< bool >( m_model->columnCount( m_rootIndex ), false ) ); + + Q_ASSERT( m_data.count() == m_model->rowCount( m_rootIndex ) ); + Q_ASSERT( m_cacheValid.count() == m_model->rowCount( m_rootIndex ) ); + } + + void rowsRemoved( const QModelIndex& parent, int start, int end ) + { + Q_ASSERT( m_model != 0 ); + Q_ASSERT( parent.model() == m_model || !parent.isValid() ); + + if ( parent != m_rootIndex || start >= m_model->rowCount(m_rootIndex) ) + return; + + Q_ASSERT( start <= end ); + + m_data.remove( start, end - start + 1 ); + m_cacheValid.remove( start, end - start + 1 ); + + Q_ASSERT( m_data.count() == m_model->rowCount( m_rootIndex ) ); + Q_ASSERT( m_cacheValid.count() == m_model->rowCount( m_rootIndex ) ); + } + + void resetModel() + { + // no need to disconnect, this is a response to SIGNAL( destroyed() ) + m_model = 0; + modelReset(); + } + + private: + QAbstractItemModel* m_model; + QModelIndex m_rootIndex; + ModelDataCachePrivate::ModelSignalMapperConnector m_connector; + mutable QVector< QVector< T > > m_data; + mutable QVector< QVector< bool > > m_cacheValid; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartNullPaintDevice.h b/massif-visualizer/kdchart/src/KDChart/KDChartNullPaintDevice.h new file mode 100644 index 00000000..e24f8d2c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartNullPaintDevice.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef NULL_PAINT_DEVICE_H +#define NULL_PAINT_DEVICE_H + +#include +#include + +namespace KDChart +{ + class NullPaintEngine : public QPaintEngine + { + public: + virtual bool begin(QPaintDevice * /*pdev*/) { return true; } + virtual void drawEllipse(const QRectF & /*rect*/) { } + virtual void drawEllipse(const QRect & /*rect*/) { } + virtual void drawImage(const QRectF & /*rectangle*/, const QImage & /*image*/, const QRectF & /*sr*/, Qt::ImageConversionFlags /*flags*/) { } + virtual void drawLines(const QLineF * /*lines*/, int /*lineCount*/) { } + virtual void drawLines(const QLine * /*lines*/, int /*lineCount*/) { } + virtual void drawPath(const QPainterPath & /*path*/) { } + virtual void drawPixmap(const QRectF & /*r*/, const QPixmap & /*pm*/, const QRectF & /*sr*/) { } + virtual void drawPoints(const QPointF * /*points*/, int /*pointCount*/) { } + virtual void drawPoints(const QPoint * /*points*/, int /*pointCount*/) { } + virtual void drawPolygon(const QPointF * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { } + virtual void drawPolygon(const QPoint * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { } + virtual void drawRects(const QRectF * /*rects*/, int /*rectCount*/) { } + virtual void drawRects(const QRect * /*rects*/, int /*rectCount*/) { } + virtual void drawTextItem(const QPointF & /*p*/, const QTextItem & /*textItem*/) { } + virtual void drawTiledPixmap(const QRectF & /*rect*/, const QPixmap & /*pixmap*/, const QPointF & /*p*/) { } + virtual bool end() { return true; } + + virtual Type type() const { return QPaintEngine::User; } + virtual void updateState(const QPaintEngineState & /*state*/) { } + }; + + class NullPaintDevice : public QPaintDevice + { + public: + NullPaintDevice(const QSize& size) : m_size(size) { } + ~NullPaintDevice() { } + + int metric(PaintDeviceMetric metric) const + { + switch (metric) + { + case QPaintDevice::PdmWidth: + return m_size.width(); + case QPaintDevice::PdmHeight: + return m_size.height(); + case QPaintDevice::PdmWidthMM: + return 1; + case QPaintDevice::PdmHeightMM: + return 1; + case QPaintDevice::PdmNumColors: + return int((uint)(-1)); + case QPaintDevice::PdmDepth: + return 1; + case QPaintDevice::PdmDpiX: + return 1; + case QPaintDevice::PdmDpiY: + return 1; + case QPaintDevice::PdmPhysicalDpiX: + return 1; + case QPaintDevice::PdmPhysicalDpiY: + return 1; + } + return 1; + } + + QPaintEngine* paintEngine() const + { + static NullPaintEngine nullPaintEngine; + return &nullPaintEngine; + } + + private: + QSize m_size; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.cpp new file mode 100644 index 00000000..367863e1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPaintContext.h" +#include "KDChartAbstractCoordinatePlane.h" + +#include +#include + +#include + +using namespace KDChart; + +#define d (d_func()) + +class PaintContext::Private { + +public: + QPainter* painter; + QRectF rect; + AbstractCoordinatePlane* plane; + + Private() + : painter( 0 ) + , plane ( 0 ) + {} +}; + +PaintContext::PaintContext() + : _d ( new Private() ) +{ +} + +PaintContext::~PaintContext() +{ + delete _d; +} + +const QRectF PaintContext::rectangle() const +{ + return d->rect; +} + +void PaintContext::setRectangle ( const QRectF& rect ) +{ + d->rect = rect; +} + +QPainter* PaintContext::painter() const +{ + return d->painter; +} + +void PaintContext::setPainter( QPainter* painter ) +{ + d->painter = painter; +} + +AbstractCoordinatePlane* PaintContext::coordinatePlane() const +{ + return d->plane; +} + +void PaintContext::setCoordinatePlane( AbstractCoordinatePlane* plane) +{ + d->plane = plane; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.h b/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.h new file mode 100644 index 00000000..486268ab --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPaintContext.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PAINTCONTEXT_H +#define PAINTCONTEXT_H + +#include +#include "KDChartGlobal.h" + +QT_BEGIN_NAMESPACE +class QPainter; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractCoordinatePlane; + + /** + * @brief Stores information about painting diagrams + * \internal + */ + class KDCHART_EXPORT PaintContext + { + public: + PaintContext(); + ~PaintContext(); + + const QRectF rectangle () const; + void setRectangle( const QRectF& rect ); + + QPainter* painter() const; + void setPainter( QPainter* painter ); + + AbstractCoordinatePlane* coordinatePlane() const; + void setCoordinatePlane( AbstractCoordinatePlane* plane ); + + private: + class Private; + Private * _d; + Private * d_func() { return _d; } + const Private * d_func() const { return _d; } + }; + +} + +#endif /* PAINTCONTEXT_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPainterSaver_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartPainterSaver_p.h new file mode 100644 index 00000000..19ad4cf1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPainterSaver_p.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPAINTERSAVER_P_H +#define KDCHARTPAINTERSAVER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + + +namespace KDChart { + +/** + \internal + + @short Resource Allocation Is Initialization for QPainter::save and + restore + + Usage: + + Instead of + \code + painter.save(); + // ... + painter.restore(); + \endcode + + Use this: + + \code + const KDChart::PainterSaver saver( &painter ); + // ... + \endcode + + which makes sure that restore() is called when exiting from guard + clauses, or when exceptions are thrown. +*/ +class PainterSaver { + Q_DISABLE_COPY( PainterSaver ) +public: + explicit PainterSaver( QPainter* p ) + : painter( p ) + { +#if defined Q_OS_WIN + static bool initialized = false; + static bool isQt4_3_0; + if ( !initialized ) + { + isQt4_3_0 = ( QString::fromLatin1( qVersion() ) == QString::fromLatin1( "4.3.0" ) ); + } + initialized = true; + m_isQt4_3_0 = isQt4_3_0; +#endif + p->save(); + } + + ~PainterSaver() + { +#if defined Q_OS_WIN + // the use of setClipRect is a workaround for a bug in Qt 4.3.0 which could + // lead to an assert on Windows + if ( m_isQt4_3_0 ) + { + painter->setClipRect( 0, 0, 2, 2 ); + } +#endif + painter->restore(); + } + +private: +#if defined Q_OS_WIN + bool m_isQt4_3_0; +#endif + QPainter* const painter; +}; + +} + +#endif /* KDCHARTPAINTERSAVER_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPalette.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartPalette.cpp new file mode 100644 index 00000000..e53264e2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPalette.cpp @@ -0,0 +1,184 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPalette.h" +#include +#include + +#include + +using namespace KDChart; + +namespace { + + static Palette makeDefaultPalette() { + Palette p; + + p.addBrush( Qt::red ); + p.addBrush( Qt::green ); + p.addBrush( Qt::blue ); + p.addBrush( Qt::cyan ); + p.addBrush( Qt::magenta ); + p.addBrush( Qt::yellow ); + p.addBrush( Qt::darkRed ); + p.addBrush( Qt::darkGreen ); + p.addBrush( Qt::darkBlue ); + p.addBrush( Qt::darkCyan ); + p.addBrush( Qt::darkMagenta ); + p.addBrush( Qt::darkYellow ); + + return p; + } + + static Palette makeSubduedPalette() { + Palette p; + + p.addBrush( QColor( 0xe0,0x7f,0x70 ) ); + p.addBrush( QColor( 0xe2,0xa5,0x6f ) ); + p.addBrush( QColor( 0xe0,0xc9,0x70 ) ); + p.addBrush( QColor( 0xd1,0xe0,0x70 ) ); + p.addBrush( QColor( 0xac,0xe0,0x70 ) ); + p.addBrush( QColor( 0x86,0xe0,0x70 ) ); + p.addBrush( QColor( 0x70,0xe0,0x7f ) ); + p.addBrush( QColor( 0x70,0xe0,0xa4 ) ); + p.addBrush( QColor( 0x70,0xe0,0xc9 ) ); + p.addBrush( QColor( 0x70,0xd1,0xe0 ) ); + p.addBrush( QColor( 0x70,0xac,0xe0 ) ); + p.addBrush( QColor( 0x70,0x86,0xe0 ) ); + p.addBrush( QColor( 0x7f,0x70,0xe0 ) ); + p.addBrush( QColor( 0xa4,0x70,0xe0 ) ); + p.addBrush( QColor( 0xc9,0x70,0xe0 ) ); + p.addBrush( QColor( 0xe0,0x70,0xd1 ) ); + p.addBrush( QColor( 0xe0,0x70,0xac ) ); + p.addBrush( QColor( 0xe0,0x70,0x86 ) ); + + return p; + } + + static Palette makeRainbowPalette() { + Palette p; + + p.addBrush( QColor(255, 0,196) ); + p.addBrush( QColor(255, 0, 96) ); + p.addBrush( QColor(255, 128,64) ); + p.addBrush( Qt::yellow ); + p.addBrush( Qt::green ); + p.addBrush( Qt::cyan ); + p.addBrush( QColor( 96, 96,255) ); + p.addBrush( QColor(160, 0,255) ); + for ( int i = 8 ; i < 16 ; ++i ) { + p.addBrush( p.getBrush( i - 8 ).color().light(), i ); + } + return p; + } + +} + +#define d d_func() + +class Palette::Private +{ +public: + explicit Private() {} + ~Private() {} + + QVector brushes; +}; + +const Palette& Palette::defaultPalette() +{ + static const Palette palette = makeDefaultPalette(); + return palette; +} + +const Palette& Palette::subduedPalette() +{ + static const Palette palette = makeSubduedPalette(); + return palette; +} + +const Palette& Palette::rainbowPalette() +{ + static const Palette palette = makeRainbowPalette(); + return palette; +} + +Palette::Palette( QObject *parent ) + : QObject( parent ), _d( new Private ) +{ + +} + +Palette::~Palette() +{ + delete _d; _d = 0; +} + + + +Palette::Palette( const Palette& r ) + : QObject(), _d( new Private( *r.d ) ) +{ +} + +Palette& Palette::operator=( const Palette& r ) +{ + Palette copy( r ); + copy.swap( *this ); + + // emit changed() ? + return *this; +} + +bool Palette::isValid() const +{ + return d->brushes.size() >= 1; +} + +int Palette::size() const +{ + return d->brushes.size(); +} + +void Palette::addBrush( const QBrush& brush, int position ) +{ + if ( position < 0 || position >= size() ) { + d->brushes.append( brush ); + } else { + d->brushes.insert( position, brush ); + } + emit changed(); +} + +QBrush Palette::getBrush( int position ) const +{ + if ( !isValid() ) return QBrush(); + return d->brushes.at( position % size() ); +} + +void Palette::removeBrush( int position ) +{ + if ( position < 0 || position >= size() ) return; + d->brushes.remove( position ); + emit changed(); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPalette.h b/massif-visualizer/kdchart/src/KDChart/KDChartPalette.h new file mode 100644 index 00000000..4477067d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPalette.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHART_PALETTE_H__ +#define __KDCHART_PALETTE_H__ + +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * \brief A Palette is a set of brushes (or colors) to be used + * for painting data sets. + * + * The palette class encapsulates a colletion of brushes, which in + * the simplest case are colors, to be used for painting a series of + * data sets. When asked for the m-th color, a palette of size n will + * wrap around and thus cycle through the available colors. + * + * Three builtin palettes are provided for convenience, one with a default + * set of colors, one with a subdued color selection, one with rainbow + * colors. + * + * When a palette changes, it emits a changed() signal. Hook up to it, if + * you want to repaint when the color selection changes. + */ + +class KDCHART_EXPORT Palette: public QObject +{ + Q_OBJECT +public: + explicit Palette( QObject *parent = 0 ); + Palette( const Palette& ); + Palette &operator= ( const Palette & ); + + ~Palette(); + + /** Provide access to the three builtin palettes, one with standard bright + * colors, one with more subdued colors, and one with rainbow colors. */ + static const Palette& defaultPalette(); + static const Palette& subduedPalette(); + static const Palette& rainbowPalette(); + + /** @return whether this represents a valid palette. For a palette to be + * valid it needs to have at least one brush associated. */ + bool isValid() const; + + /** @return the number of brushed in the palette. */ + int size() const; + + /** Adds \a brush to the palette. If no \a position is specified, the + * brush is appended. + */ + void addBrush( const QBrush & brush, int position = -1 ); + + /** + * Query the palette for a brush at the specified position. If the + * position exceeds the size of the palette, it wraps around. + */ + QBrush getBrush( int position ) const; + + /** Remove the brush at position \a position, if there is one. */ + void removeBrush( int position ); + +Q_SIGNALS: + /** Emitted whenever the palette changes. Views listen to this and + * repaing. */ + void changed(); + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( Palette ) +}; + +} + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::Palette ) + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPosition.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartPosition.cpp new file mode 100644 index 00000000..8ffdccdd --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPosition.cpp @@ -0,0 +1,261 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include +#include + +#include +#include +#include +#include + +#include + +#include + +using namespace KDChart; + +namespace { +/** + * \internal + * Static strings, to be translated in printable() + */ +static const char * staticPositionNames[] = { + QT_TRANSLATE_NOOP("Position","Unknown Position"), + QT_TRANSLATE_NOOP("Position","Center"), + QT_TRANSLATE_NOOP("Position","NorthWest"), + QT_TRANSLATE_NOOP("Position","North"), + QT_TRANSLATE_NOOP("Position","NorthEast"), + QT_TRANSLATE_NOOP("Position","East"), + QT_TRANSLATE_NOOP("Position","SouthEast"), + QT_TRANSLATE_NOOP("Position","South"), + QT_TRANSLATE_NOOP("Position","SouthWest"), + QT_TRANSLATE_NOOP("Position","West"), + QT_TRANSLATE_NOOP("Position","Floating") +}; + + +/** + * \internal + * One value for unknown positions, and nine values for predefined positions. + */ +static Position staticPositionUnknown = Position( KDChartEnums::PositionUnknown ); +static Position staticPositionCenter = Position( KDChartEnums::PositionCenter ); +static Position staticPositionNorthWest = Position( KDChartEnums::PositionNorthWest ); +static Position staticPositionNorth = Position( KDChartEnums::PositionNorth ); +static Position staticPositionNorthEast = Position( KDChartEnums::PositionNorthEast ); +static Position staticPositionEast = Position( KDChartEnums::PositionEast ); +static Position staticPositionSouthEast = Position( KDChartEnums::PositionSouthEast ); +static Position staticPositionSouth = Position( KDChartEnums::PositionSouth ); +static Position staticPositionSouthWest = Position( KDChartEnums::PositionSouthWest ); +static Position staticPositionWest = Position( KDChartEnums::PositionWest ); +static Position staticPositionFloating = Position( KDChartEnums::PositionFloating ); + +static const int maxPositionValue = 10; + +} // anon namespace + +const Position& Position::Unknown = staticPositionUnknown; +const Position& Position::Center = staticPositionCenter; +const Position& Position::NorthWest = staticPositionNorthWest; +const Position& Position::North = staticPositionNorth; +const Position& Position::NorthEast = staticPositionNorthEast; +const Position& Position::East = staticPositionEast; +const Position& Position::SouthEast = staticPositionSouthEast; +const Position& Position::South = staticPositionSouth; +const Position& Position::SouthWest = staticPositionSouthWest; +const Position& Position::West = staticPositionWest; +const Position& Position::Floating = staticPositionFloating; + + +/** + * Default constructor. Creates a new Position, defaulting it to Position::Unknown. + */ +Position::Position() + : m_value( KDChartEnums::PositionUnknown ) +{ + +} + +Position::Position( int value ) + : m_value( value ) +{ + assert( 0 <= value ); assert( value <= maxPositionValue ); +} + +/** + * Constructor. Creates a new Position, defaulting it to the respective value. + * + * Valid values ranging from zero (unknown value) to 10. + * If invalid value is passed, a Position::Unknown is created. + * + * \note Normally there is no need to call this constructor, but you would + * rather use one of the nine pre-defined, static values, e.g. like this: + * \verbatim + * const KDChart::Position myPosition = KDChart::Position::NorthEast; + * \endverbatim + */ +Position::Position( KDChartEnums::PositionValue value ) + : m_value( value ) +{ + +} + +/** + * Returns an integer value corresponding to this Position. + */ +KDChartEnums::PositionValue Position::value() const +{ + return static_cast( m_value ); +} + +bool Position::isUnknown() const +{ + return m_value == Position::Unknown.value(); +} + +bool Position::isWestSide() const +{ + return m_value == Position::SouthWest.value() || + m_value == Position::West.value() || + m_value == Position::NorthWest.value(); +} +bool Position::isNorthSide() const +{ + return m_value == Position::NorthWest.value() || + m_value == Position::North.value() || + m_value == Position::NorthEast.value(); +} +bool Position::isEastSide() const +{ + return m_value == Position::NorthEast.value() || + m_value == Position::East.value() || + m_value == Position::SouthEast.value(); +} +bool Position::isSouthSide() const +{ + return m_value == Position::SouthWest.value() || + m_value == Position::South.value() || + m_value == Position::SouthEast.value(); +} + +bool Position::isCorner() const +{ + return m_value == Position::NorthWest.value() || + m_value == Position::NorthEast.value() || + m_value == Position::SouthEast.value() || + m_value == Position::SouthWest.value(); +} +bool Position::isPole() const +{ + return m_value == Position::North.value() || + m_value == Position::South.value(); +} + +bool Position::isFloating() const +{ + return m_value == Position::Floating.value(); +} + +/** + * Returns a non-translated string in English language, corresponding to this Position. + */ +const char * Position::name() const +{ + return staticPositionNames[m_value]; +} + +/** + * Returns a translated string, corresponding to this Position. + */ +QString Position::printableName() const +{ + return tr(staticPositionNames[m_value]); +} + + +/** + * \brief Returns a list of all string, corresponding to + * the pre-defined positions. + * + * \param options if set to \c ExcludeCenter, the returned list + * does not contain the Center position. + */ +QList Position::names( Options options ) +{ + QList list; + const int start = ( options & IncludeCenter ) ? 1 : 2; + const int end = ( options & IncludeFloating ) ? maxPositionValue : maxPositionValue-1; + for ( int i=start; i<=end; ++i) + list.append( staticPositionNames[i] ); + return list; +} + +/** + * \brief Returns a list of all translated string, corresponding to + * the pre-defined positions. + * + * \param options if set to \c ExcludeCenter, the returned list + * does not contain the Center position. + */ +QStringList Position::printableNames( Options options ) +{ + QStringList list; + const int start = ( options & IncludeCenter ) ? 1 : 2; + const int end = ( options & IncludeFloating ) ? maxPositionValue : maxPositionValue-1; + for ( int i=start; i<=end; ++i) + list.append( Position(i).printableName() ); + return list; +} + +Position Position::fromName(const char * name) +{ + for ( int i=1; i<=maxPositionValue; ++i) + if ( !qstricmp( name, staticPositionNames[i] ) ) + return Position(i); + return Position(0); +} + +Position Position::fromName( const QByteArray & name ) { + return fromName( name.data() ); +} + +bool Position::operator==( const Position& r ) const +{ + return ( value() == r.value() ); +} + + +bool Position::operator==( int value_ ) const +{ + return ( value() == value_ ); +} + + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::Position& p ) +{ + dbg << "KDChart::Position(" + << p.name() << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPosition.h b/massif-visualizer/kdchart/src/KDChart/KDChartPosition.h new file mode 100644 index 00000000..f12ff462 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPosition.h @@ -0,0 +1,300 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOSITION_H +#define KDCHARTPOSITION_H + +#include +#include +#include +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QStringList; +class QByteArray; +template class QList; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * \class Position KDChartPosition.h + * \brief Defines a position, using compass terminology. + * + * Using KDChartPosition you can specify one of nine + * pre-defined, logical points (see the \c static \c const getter + * methods below), in a similar way, as you would use a + * compass to navigate on a map. + * + * For each piece (slice/bar, etc.) of a chart for example, you can specify the position of the value + * labels. Figure 1 illustrates which cardinal points refer to which points + * on a pie or bar chart, resp. In the graphic, "N" stands for North, "S" for South, etc. + * + * \image html position-alignments.png "Figure 1: Different interpretations of KDChart::Position within KDChart" + * + * \note Often you will declare a \c Position together with the + * RelativePosition class, to specify a logical point, + * which then will be used to layout your chart at runtime, + * e.g. for specifying the location of a floating Legend box. + * + * For comparing a Position's value with a switch () statement, + * you can use numeric values defined in KDChartEnums, like this: +\verbatim +switch ( yourPosition().value() ) { + case KDChartEnums::PositionNorthWest: + // your code ... + break; + case KDChartEnums::PositionNorth: + // your code ... + break; +} +\endverbatim + * \sa RelativePosition, KDChartEnums::PositionValue + */ +class KDCHART_EXPORT Position +{ + Q_DECLARE_TR_FUNCTIONS( Position ) + Position( int value ); +public: + Position(); + Position( KDChartEnums::PositionValue value ); // intentionally non-explicit + + KDChartEnums::PositionValue value() const; + + const char *name() const; + QString printableName() const; + + bool isUnknown() const; + + bool isWestSide() const; + bool isNorthSide() const; + bool isEastSide() const; + bool isSouthSide() const; + + bool isCorner() const; + bool isPole() const; + + bool isFloating() const; + + static const Position& Unknown; + static const Position& Center; + static const Position& NorthWest; + static const Position& North; + static const Position& NorthEast; + static const Position& East; + static const Position& SouthEast; + static const Position& South; + static const Position& SouthWest; + static const Position& West; + + static const Position& Floating; + + // boolean flags: 1, 2, 4, 8, ... + enum Option { + IncludeCenter = 0x1, + IncludeFloating = 0x2 }; + Q_DECLARE_FLAGS( Options, Option ) + + // Unfortunately the following typecast from int to Options is needed + // as the | operator is not defined yet, this will be done by + // the makro Q_DECLARE_OPERATORS_FOR_FLAGS( KDChart::Position::Options ) + // at the bottom of this file. + static QList names( Options options = Options(IncludeCenter | IncludeFloating) ); + static QStringList printableNames( Options options = Options(IncludeCenter | IncludeFloating) ); + + static Position fromName(const char * name); + static Position fromName(const QByteArray & name); + + bool operator==( const Position& ) const; + bool operator==( int ) const; + bool operator!=( const Position& ) const; + bool operator!=( int ) const; + +private: + int m_value; +}; // End of class Position + +inline bool Position::operator!=( const Position & other ) const { return !operator==( other ); } +inline bool Position::operator!=( int other ) const { return !operator==( other ); } + +/** + * @brief Stores the absolute target points of a Position + * \internal + */ +class KDCHART_EXPORT PositionPoints +{ + public: + PositionPoints() {} // all points get initialized with the default automatically + + PositionPoints( + QPointF center, + QPointF northWest, + QPointF north, + QPointF northEast, + QPointF east, + QPointF southEast, + QPointF south, + QPointF southWest, + QPointF west ) + : mPositionCenter( center ) + , mPositionNorthWest( northWest ) + , mPositionNorth( north ) + , mPositionNorthEast( northEast ) + , mPositionEast( east ) + , mPositionSouthEast( southEast ) + , mPositionSouth( south ) + , mPositionSouthWest( southWest ) + , mPositionWest( west ) + {} + PositionPoints( + const QPointF& onePointForAllPositions ) + : mPositionCenter( onePointForAllPositions ) + , mPositionNorthWest( onePointForAllPositions ) + , mPositionNorth( onePointForAllPositions ) + , mPositionNorthEast( onePointForAllPositions ) + , mPositionEast( onePointForAllPositions ) + , mPositionSouthEast( onePointForAllPositions ) + , mPositionSouth( onePointForAllPositions ) + , mPositionSouthWest( onePointForAllPositions ) + , mPositionWest( onePointForAllPositions ) + {} + PositionPoints( + const QRectF& rect ) + { + const QRectF r( rect.normalized() ); + mPositionCenter = r.center(); + mPositionNorthWest = r.topLeft(); + mPositionNorth = QPointF(r.center().x(), r.top()); + mPositionNorthEast = r.topRight(); + mPositionEast = QPointF(r.right(), r.center().y()); + mPositionSouthEast = r.bottomRight(); + mPositionSouth = QPointF(r.center().x(), r.bottom()); + mPositionSouthWest = r.bottomLeft(); + mPositionWest = QPointF(r.left(), r.center().y()); + } + PositionPoints( + QPointF northWest, + QPointF northEast, + QPointF southEast, + QPointF southWest ) + : mPositionCenter( (northWest + southEast) / 2.0 ) + , mPositionNorthWest( northWest ) + , mPositionNorth( (northWest + northEast) / 2.0 ) + , mPositionNorthEast( northEast ) + , mPositionEast( (northEast + southEast) / 2.0 ) + , mPositionSouthEast( southEast ) + , mPositionSouth( (southWest + southEast) / 2.0 ) + , mPositionSouthWest( southWest ) + , mPositionWest( (northWest + southWest) / 2.0 ) + {} + + void setDegrees( KDChartEnums::PositionValue pos, qreal degrees ) + { + mapOfDegrees[pos] = degrees; + } + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const qreal degrees( KDChartEnums::PositionValue pos ) const +#else + qreal degrees( KDChartEnums::PositionValue pos ) const +#endif + { + if ( mapOfDegrees.contains(pos) ) + return mapOfDegrees[pos]; + return 0.0; + } + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const QPointF point( Position position ) const +#else + QPointF point( Position position ) const +#endif + { + //qDebug() << "point( " << position.name() << " )"; + if ( position == Position::Center) + return mPositionCenter; + if ( position == Position::NorthWest) + return mPositionNorthWest; + if ( position == Position::North) + return mPositionNorth; + if ( position == Position::NorthEast) + return mPositionNorthEast; + if ( position == Position::East) + return mPositionEast; + if ( position == Position::SouthEast) + return mPositionSouthEast; + if ( position == Position::South) + return mPositionSouth; + if ( position == Position::SouthWest) + return mPositionSouthWest; + if ( position == Position::West) + return mPositionWest; + return mPositionUnknown; + } + + bool isNull() const + { + return + mPositionUnknown.isNull() && + mPositionCenter.isNull() && + mPositionNorthWest.isNull() && + mPositionNorth.isNull() && + mPositionNorthEast.isNull() && + mPositionEast.isNull() && + mPositionSouthEast.isNull() && + mPositionSouth.isNull() && + mPositionSouthWest.isNull() && + mPositionWest.isNull(); + } + + QPointF mPositionUnknown; + QPointF mPositionCenter; + QPointF mPositionNorthWest; + QPointF mPositionNorth; + QPointF mPositionNorthEast; + QPointF mPositionEast; + QPointF mPositionSouthEast; + QPointF mPositionSouth; + QPointF mPositionSouthWest; + QPointF mPositionWest; + QMap mapOfDegrees; + +}; // End of class PositionPoints + + +} + + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Position& ); +#endif /* QT_NO_DEBUG_STREAM */ + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::Position, Q_MOVABLE_TYPE ); +Q_DECLARE_OPERATORS_FOR_FLAGS( KDChart::Position::Options ) +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::Position ) + +#endif // KDCHARTPOSITION_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.cpp new file mode 100644 index 00000000..d1a83857 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPrintingParameters.h" + +using namespace KDChart; + +PrintingParameters::PrintingParameters() + : scaleFactor( 1.0 ) +{ +} + +PrintingParameters* PrintingParameters::instance() +{ + static PrintingParameters instance; + return &instance; +} + +void PrintingParameters::setScaleFactor( const qreal scaleFactor ) +{ + instance()->scaleFactor = scaleFactor; +} + +void PrintingParameters::resetScaleFactor() +{ + instance()->scaleFactor = 1.0; +} + +QPen PrintingParameters::scalePen( const QPen& pen ) +{ + if ( instance()->scaleFactor == 1.0 ) + return pen; + + QPen resultPen = pen; + resultPen.setWidthF( resultPen.widthF() * instance()->scaleFactor ); + if ( resultPen.widthF() == 0.0 ) + resultPen.setWidthF( instance()->scaleFactor ); + + return resultPen; +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.h b/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.h new file mode 100644 index 00000000..f3b31bef --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartPrintingParameters.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef PRINTINGPARAMETERS_H +#define PRINTINGPARAMETERS_H + +#include +#include + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +namespace KDChart { + /** + * PrintingParameters stores the scale factor which lines has to been scaled with when printing. + * It's essentially printer's logical DPI / widget's logical DPI + * \internal + */ + class PrintingParameters { + public: + static void setScaleFactor( const qreal scaleFactor ); + static void resetScaleFactor(); + static QPen scalePen( const QPen& pen ); + + private: + PrintingParameters(); + static PrintingParameters* instance(); + + qreal scaleFactor; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartRelativePosition.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartRelativePosition.cpp new file mode 100644 index 00000000..756e0dd9 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartRelativePosition.cpp @@ -0,0 +1,233 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRelativePosition.h" + +#include "KDChartEnums.h" +#include "KDChartMeasure.h" +#include "KDChartPosition.h" +#include "KDChartAbstractArea.h" + +#include +#include + +#include + +using namespace KDChart; + +class RelativePosition::Private { + friend class ::KDChart::RelativePosition; +public: + Private(); + ~Private(); + +private: + QObject* area; + PositionPoints points; + Position position; + Qt::Alignment alignment; + Measure horizontalPadding; + Measure verticalPadding; + qreal rotation; +}; + + +RelativePosition::Private::Private() + : area( 0 ), + alignment( Qt::AlignCenter ), + rotation( 0 ) +{ + +} + +RelativePosition::Private::~Private() +{} + + + +RelativePosition::RelativePosition() + : _d( new Private ) +{ + +} + +RelativePosition::RelativePosition( const RelativePosition& r ) + : _d( new Private( *r._d ) ) +{ + +} + +RelativePosition & RelativePosition::operator=( const RelativePosition & other ) { + RelativePosition copy( other ); + copy.swap( *this ); + return *this; +} + +RelativePosition::~RelativePosition() +{ + delete _d; +} + +#define d d_func() + +void RelativePosition::setReferenceArea( QObject * area ) { + d->area = area; + if ( area ) + setReferencePoints( PositionPoints() ); +} + +QObject * RelativePosition::referenceArea() const { + return d->area; +} + +void RelativePosition::setReferencePoints( const PositionPoints& points ) { + d->points = points; + if ( !points.isNull() ) + setReferenceArea( 0 ); +} +const PositionPoints RelativePosition::referencePoints() const{ + return d->points; +} + +void RelativePosition::setReferencePosition( Position pos ) { + d->position = pos; +} + +void RelativePosition::resetReferencePosition() { + d->position = Position::Unknown; +} + +Position RelativePosition::referencePosition() const { + return d->position; +} + +void RelativePosition::setAlignment( Qt::Alignment align ) { + d->alignment = align; +} + +Qt::Alignment RelativePosition::alignment() const { + return d->alignment; +} + +void RelativePosition::setHorizontalPadding( const Measure & pad ) { + d->horizontalPadding = pad; +} + +Measure RelativePosition::horizontalPadding() const { + return d->horizontalPadding; +} + +void RelativePosition::setVerticalPadding( const Measure & pad ) { + d->verticalPadding = pad; +} + +Measure RelativePosition::verticalPadding() const { + return d->verticalPadding; +} + +void RelativePosition::setRotation( qreal rot ) { + d->rotation = rot; +} + +qreal RelativePosition::rotation() const { + return d->rotation; +} + + +const QPointF RelativePosition::referencePoint( qreal* polarDegrees ) const +{ + bool useRect = ( d->area != 0 ); + QRect rect; + if ( useRect ) { + if ( const QWidget* widget = qobject_cast< const QWidget* >( d->area ) ) { + const QLayout* layout = widget->layout(); + rect = layout ? layout->geometry() : widget->geometry(); + } else if ( const AbstractArea* kdcArea = qobject_cast< const AbstractArea* >( d->area ) ) { + rect = kdcArea->geometry(); + } else { + useRect = false; + } + } + + QPointF pt; + qreal angle = 0.0; + if ( useRect ) { + pt = PositionPoints( rect ).point( d->position ); + } else { + pt = d->points.point( d->position ); + angle = d->points.degrees( d->position.value() ); + } + + if ( polarDegrees ) { + *polarDegrees = angle; + } + return pt; +} + + +const QPointF RelativePosition::calculatedPoint( const QSizeF& autoSize ) const +{ + const qreal dx = horizontalPadding().calculatedValue( autoSize, KDChartEnums::MeasureOrientationHorizontal ); + const qreal dy = verticalPadding().calculatedValue( autoSize, KDChartEnums::MeasureOrientationVertical ); + + qreal polarDegrees; + QPointF pt( referencePoint( &polarDegrees ) ); + if ( polarDegrees == 0.0 ) { + pt += QPointF( dx, dy ); + } else { + const qreal rad = DEGTORAD( polarDegrees); + const qreal sinDeg = sin(rad); + const qreal cosDeg = cos(rad); + pt.setX( pt.x() + dx * cosDeg + dy * sinDeg ); + pt.setY( pt.y() - dx * sinDeg + dy * cosDeg ); + } + return pt; +} + + +bool RelativePosition::operator==( const RelativePosition& r ) const +{ + return d->area == r.referenceArea() && + d->position == r.referencePosition() && + d->alignment == r.alignment() && + d->horizontalPadding == r.horizontalPadding() && + d->verticalPadding == r.verticalPadding() && + d->rotation == r.rotation() ; +} + +#undef d + + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::RelativePosition& rp) +{ + dbg << "KDChart::RelativePosition(" + << "referencearea="< +#include +#include +#include +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + class Position; + class PositionPoints; + class Measure; + +/** + \class RelativePosition KDChartRelativePosition.h + \brief Defines relative position information: reference area, position + in this area (reference position), horizontal / vertical padding, and rotation. + + See detailed description of \a KDChart::Position for an illustration of the + different possible reference positions. + + Using RelativePosition you can specify the relative parts + of some position information, and you can specify the absolute parts: + the reference area, and the position in this area. + + \note To get an absolute position, you have three options: + \li either you declare both, the relative and the absolute parts, + using setReferenceArea for the latter, + \li or you specify a set of points, using setReferencePoints, + \li or you don't use either, leaving it to KD Chart to find a suitable reference area. + */ +class KDCHART_EXPORT RelativePosition +{ +public: + RelativePosition(); + RelativePosition( const RelativePosition& ); + + RelativePosition & operator=( const RelativePosition & other ); + + ~RelativePosition(); + + /** + * \brief Set the reference area to be used to find the anchor point. + * + * The reference area's type can be either a QWidget subclass or a KDChart::AbstractArea subclass. + * + * \note Usage of reference area and reference points is mutually exclusive: + * Only one can be used, so any previously set reference points are cleared + * when you call setReferenceArea. + * + * Also note: In a few cases KD Chart will ignore your area (or points, resp.) settings! + * Relative positioning of data value texts is an example: For these + * the reference area is always taken to be the data area. + * + * \sa setReferencePosition, setAlignment, setHorizontalPadding, setVerticalPadding + */ + void setReferenceArea( QObject* area ); + QObject* referenceArea() const; + + /** + * \brief Set a set of points from which the anchor point will be selected. + * + * \note Usage of reference area and reference points is mutually exclusive: + * Only one can be used, so any previously set reference area is cleared + * when you call setReferencePoints. + * + * Also note: In a few cases KD Chart will ignore your points (or area, resp.) settings! + * Relative positioning of data value texts is an example: For these + * the reference area is always taken to be the data area. + * + * \sa setReferenceArea, setReferencePosition, setAlignment, setHorizontalPadding, setVerticalPadding + */ + void setReferencePoints( const PositionPoints& points ); + const PositionPoints referencePoints() const; + + /** + * \brief Set the position of the anchor point. + * + * The anchor point of a RelativePosition may be one of the pre-defined + * points of it's reference area - for details see KDChart::Position. + * + * See detailed description of \a KDChart::Position for an illustration of the + * different possible reference positions. + * + * \sa resetReferencePosition, setReferenceArea, setAlignment, setHorizontalPadding, setVerticalPadding, KDChart::Position + */ + void setReferencePosition( Position position ); + + /** + * \brief Resets the position of the anchor point to the built-in default. + * + * If the anchor point of a RelativePosition is reset (or never changed from the + * default setting) KD Chart will choose an appropriate Position at run-time. + * + * e.g. BarDiagrams will use Position::North / Position::South for positive / negative values. + * + * \sa setReferencePosition, setReferenceArea, setAlignment, setHorizontalPadding, setVerticalPadding, KDChart::Position + */ + void resetReferencePosition(); + Position referencePosition() const; + + /** + * Set the alignment of the content placed by this RelativePosition. + * + * Padding is applied first to obtain the final reference point + * for the content's alignment + * + * \note To print centered content, besides calling setAlignment( Qt::AlignCenter ) + * you might also want to set zero padding to have your text centered more precisely. + * + * \sa setReferencePosition, setReferenceArea, setHorizontalPadding, setVerticalPadding + */ + void setAlignment( Qt::Alignment flags ); + Qt::Alignment alignment() const; + + /** + * Set the width of the horizontal padding between the anchor point and the content + * placed by this RelativePosition. + * + * \note When printing data value texts this Measure is used to find the alignment + * point for this text, then alignment() is use to determine how to align the text + * relative to that point. + * The font height is used as reference size for both horizontal and vertical padding + * if the respective padding's Measure is using automatic reference area detection. + * + * \sa setVerticalPadding, setReferencePosition, setReferenceArea + */ + void setHorizontalPadding( const Measure& padding ); + Measure horizontalPadding() const; + + /** + * Set the height of the vertical padding between the anchor point and the content + * placed by this RelativePosition. + * + * \note When printing data value texts this Measure is used to find the alignment + * point for this text, then alignment() is use to determine how to align the text + * relative to that point. + * The font height is used as reference size for both horizontal and vertical padding + * if the respective padding's Measure is using automatic reference area detection. + * + * \sa setHorizontalPadding, setReferencePosition, setReferenceArea + */ + void setVerticalPadding( const Measure& padding ); + Measure verticalPadding() const; + + void setRotation( qreal rot ); + qreal rotation() const; + + /** + * \brief Return the reference point, according to the reference area/position, and ignoring padding. + * + * This method is called at drawing time. + * The returned point is used to test if the label of a data value is to be printed: a label + * is printed only if its reference point is inside or touching the coordinate plane. + * + * If polarDegrees is set, the degree information will be returned that was stored for the + * respective point. This is used by the PieDiagram class to determine how vertical/horizontal + * padding settings should affect the position of the data value texts' reference points. + * \sa calculatedPoint, setReferenceArea, setReferencePosition, setHorizontalPadding, setVerticalPadding + */ + const QPointF referencePoint(qreal* polarDegrees=0) const; + + /** + * \brief Calculate a point, accordin to the reference area/position and the padding. + * + * This method is called at drawing time: The returned point is used as anchor point. + * Note that it is the task of the calling code to place the content, taking the alignment + * property into account. This class does not know the size of the content so it + * cannot place it. + * + * \sa referencePoint, setReferenceArea, setReferencePosition, setHorizontalPadding, setVerticalPadding + */ + const QPointF calculatedPoint( const QSizeF& autoSize ) const; + + bool operator==( const RelativePosition& ) const; + bool operator!=( const RelativePosition & other ) const; + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( RelativePosition ) +}; + +inline bool RelativePosition::operator!=( const RelativePosition & other ) const { return !operator==( other ); } +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::RelativePosition& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::RelativePosition ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::RelativePosition, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::RelativePosition ) + +#endif // KDCHARTRELATIVEPOSITION_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.cpp new file mode 100644 index 00000000..14835c4b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.cpp @@ -0,0 +1,324 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRulerAttributes.h" + +#include + +#include +#include + +#include + +#define d d_func() + +using namespace KDChart; + +class RulerAttributes::Private +{ + friend class RulerAttributes; +public: + Private(); +private: + QPen tickMarkPen; + QPen majorTickMarkPen; + QPen minorTickMarkPen; + + bool majorTickMarkPenIsSet : 1; + bool minorTickMarkPenIsSet : 1; + + bool showMajorTickMarks : 1; + bool showMinorTickMarks : 1; + + bool showRulerLine : 1; + + bool majorTickLengthIsSet : 1; + bool minorTickLengthIsSet : 1; + + bool showFirstTick : 1; + + int labelMargin; + int majorTickLength; + int minorTickLength; + + RulerAttributes::TickMarkerPensMap customTickMarkPens; +}; + +RulerAttributes::Private::Private() + : tickMarkPen( Qt::black ) + , majorTickMarkPen( Qt::black ) + , minorTickMarkPen( Qt::black ) + , majorTickMarkPenIsSet( false ) + , minorTickMarkPenIsSet( false ) + , showMajorTickMarks( true ) + , showMinorTickMarks( true ) + , showRulerLine( false ) + , majorTickLengthIsSet( false ) + , minorTickLengthIsSet( false ) + , showFirstTick( true ) + , labelMargin( -1 ) + , majorTickLength( 3 ) + , minorTickLength( 2 ) +{ + tickMarkPen.setCapStyle( Qt::FlatCap ); + majorTickMarkPen.setCapStyle( Qt::FlatCap ); + minorTickMarkPen.setCapStyle( Qt::FlatCap ); +} + +RulerAttributes::RulerAttributes() + : _d( new Private() ) +{ + // this bloc left empty intentionally +} + +RulerAttributes::RulerAttributes( const RulerAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +void RulerAttributes::setTickMarkPen( const QPen& pen ) +{ + d->tickMarkPen = pen; +} + +QPen RulerAttributes::tickMarkPen() const +{ + return d->tickMarkPen; +} + +void RulerAttributes::setMajorTickMarkPen( const QPen& pen ) +{ + d->majorTickMarkPen = pen; + d->majorTickMarkPenIsSet = true; +} + +bool RulerAttributes::majorTickMarkPenIsSet() const +{ + return d->majorTickMarkPenIsSet; +} + +QPen RulerAttributes::majorTickMarkPen() const +{ + return d->majorTickMarkPenIsSet ? d->majorTickMarkPen : d->tickMarkPen; +} + +void RulerAttributes::setMinorTickMarkPen( const QPen& pen ) +{ + d->minorTickMarkPen = pen; + d->minorTickMarkPenIsSet = true; +} + +bool RulerAttributes::minorTickMarkPenIsSet() const +{ + return d->minorTickMarkPenIsSet; +} + +QPen RulerAttributes::minorTickMarkPen() const +{ + return d->minorTickMarkPenIsSet ? d->minorTickMarkPen : d->tickMarkPen; +} + +void RulerAttributes::setTickMarkPen( qreal value, const QPen& pen ) +{ + if ( !d->customTickMarkPens.contains( value ) ) + d->customTickMarkPens.insert( value, pen ); +} + +QPen RulerAttributes::tickMarkPen( qreal value ) const +{ + QMapIterator it( d->customTickMarkPens ); + while ( it.hasNext() ) { + it.next(); + if ( qAbs( value - it.key() ) < std::numeric_limits< float >::epsilon() ) + return it.value(); + } + return d->tickMarkPen; +} + +RulerAttributes::TickMarkerPensMap RulerAttributes::tickMarkPens() const +{ + return d->customTickMarkPens; +} + +bool RulerAttributes::hasTickMarkPenAt( qreal value ) const +{ + QMapIterator it( d->customTickMarkPens ); + while ( it.hasNext() ) { + it.next(); + if ( qAbs( value - it.key() ) < std::numeric_limits< float >::epsilon() ) + return true; + } + return false; +} + +void RulerAttributes::setTickMarkColor( const QColor& color ) +{ + d->tickMarkPen.setColor( color ); +} + +QColor RulerAttributes::tickMarkColor() const +{ + return d->tickMarkPen.color(); +} + +void RulerAttributes::setShowMajorTickMarks( bool show ) +{ + d->showMajorTickMarks = show; +} + +bool RulerAttributes::showMajorTickMarks() const +{ + return d->showMajorTickMarks; +} + +void RulerAttributes::setShowMinorTickMarks( bool show ) +{ + d->showMinorTickMarks = show; +} + +bool RulerAttributes::showMinorTickMarks() const +{ + return d->showMinorTickMarks; +} + +void RulerAttributes::setLabelMargin(int margin) +{ + d->labelMargin = margin; +} + +int RulerAttributes::labelMargin() const +{ + return d->labelMargin; +} + +void RulerAttributes::setMajorTickMarkLength( int length ) +{ + d->majorTickLength = length; + d->majorTickLengthIsSet = true; +} + +int RulerAttributes::majorTickMarkLength() const +{ + return d->majorTickLength; +} + +bool RulerAttributes::majorTickMarkLengthIsSet() const +{ + return d->majorTickLengthIsSet; +} + +void RulerAttributes::setMinorTickMarkLength( int length ) +{ + d->minorTickLength = length; + d->minorTickLengthIsSet = true; +} + +int RulerAttributes::minorTickMarkLength() const +{ + return d->minorTickLength; +} + +bool RulerAttributes::minorTickMarkLengthIsSet() const +{ + return d->minorTickLengthIsSet; +} + +void RulerAttributes::setShowFirstTick( bool show ) +{ + d->showFirstTick = show; +} + +bool RulerAttributes::showFirstTick() const +{ + return d->showFirstTick; +} + +RulerAttributes & RulerAttributes::operator=( const RulerAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +RulerAttributes::~RulerAttributes() +{ + delete _d; _d = 0; +} + +bool RulerAttributes::operator==( const RulerAttributes& r ) const +{ + bool isEqual = tickMarkPen() == r.tickMarkPen() && + majorTickMarkPen() == r.majorTickMarkPen() && + minorTickMarkPen() == r.minorTickMarkPen() && + majorTickMarkPenIsSet() == r.majorTickMarkPenIsSet() && + minorTickMarkPenIsSet() == r.minorTickMarkPenIsSet() && + showMajorTickMarks() == r.showMajorTickMarks() && + showMinorTickMarks() == r.showMinorTickMarks() && + showRulerLine() == r.showRulerLine() && + majorTickMarkLengthIsSet() == r.majorTickMarkLengthIsSet() && + minorTickMarkLengthIsSet() == r.minorTickMarkLengthIsSet() && + showFirstTick() == r.showFirstTick() && + d->customTickMarkPens.size() == r.d->customTickMarkPens.size(); + if ( !isEqual ) { + return false; + } + QMap< qreal, QPen >::ConstIterator it = d->customTickMarkPens.constBegin(); + QMap< qreal, QPen >::ConstIterator it2 = r.d->customTickMarkPens.constBegin(); + for ( ; it != d->customTickMarkPens.constEnd(); ++it, ++it2 ) { + if ( it.key() != it2.key() || it.value() != it2.value() ) { + return false; + } + } + return true; +} + +void RulerAttributes::setShowRulerLine( bool show ) +{ + d->showRulerLine = show; +} + +bool RulerAttributes::showRulerLine() const +{ + return d->showRulerLine; +} + +#if !defined( QT_NO_DEBUG_STREAM ) +QDebug operator << ( QDebug dbg, const KDChart::RulerAttributes& a ) +{ + dbg << "KDChart::RulerAttributes(" + << "tickMarkPen=" << a.tickMarkPen() + << "majorTickMarkPen=" << a.majorTickMarkPen() + << "minorTickMarkPen=" << a.minorTickMarkPen(); + const RulerAttributes::TickMarkerPensMap pens( a.tickMarkPens() ); + QMapIterator it( pens ); + while ( it.hasNext() ) { + it.next(); + dbg << "customTickMarkPen=(" << it.value() << " : " << it.key() << ")"; + } + dbg << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.h b/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.h new file mode 100644 index 00000000..d72dc654 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartRulerAttributes.h @@ -0,0 +1,152 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRULERATTRIBUTES_H +#define KDCHARTRULERATTRIBUTES_H + +#include +#include "KDChartGlobal.h" +#include "KDChartEnums.h" + +QT_BEGIN_NAMESPACE +class QPen; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of axis rulers + */ +class KDCHART_EXPORT RulerAttributes +{ +public: + RulerAttributes(); + RulerAttributes( const RulerAttributes& ); + RulerAttributes &operator= ( const RulerAttributes& ); + + ~RulerAttributes(); + + /** + * Sets the pen used to draw the tick marks + */ + void setTickMarkPen( const QPen& pen ); + QPen tickMarkPen() const; + + /** + * Sets the pen used to draw major tick marks + */ + void setMajorTickMarkPen( const QPen& pen ); + bool majorTickMarkPenIsSet() const; + QPen majorTickMarkPen() const; + + /** + * Sets the pen used to draw minor tick marks + */ + void setMinorTickMarkPen( const QPen& pen ); + bool minorTickMarkPenIsSet() const; + QPen minorTickMarkPen() const; + + /** + * Sets the pen used to draw the tick mark at a specific value + * + * Note: This will not paint a tick mark at the specified value + * if it wasn't already drawn before. + */ + void setTickMarkPen( qreal value, const QPen& pen ); + QPen tickMarkPen( qreal value ) const; + typedef QMap TickMarkerPensMap; + TickMarkerPensMap tickMarkPens() const; + + bool hasTickMarkPenAt( qreal value) const; + + /** + * Color setter method provided for convenience + */ + void setTickMarkColor( const QColor& color ); + QColor tickMarkColor() const; + + /** + * Shows or hides minor tick marks + */ + void setShowMinorTickMarks( bool show ); + bool showMinorTickMarks() const; + + void setShowRulerLine( bool show ); + bool showRulerLine() const; + + /** + * Shows or hides major tick marks + */ + void setShowMajorTickMarks( bool show ); + bool showMajorTickMarks() const; + + /** + * Sets the length of major tick marks + */ + void setMajorTickMarkLength( int length ); + int majorTickMarkLength() const; + bool majorTickMarkLengthIsSet() const; + + /** + * Sets the length of minor tick marks + */ + void setMinorTickMarkLength( int length ); + int minorTickMarkLength() const; + bool minorTickMarkLengthIsSet() const; + + /** + * Set margin that should be used between the labels and the ticks. By + * default the value is -1, which means that half of the label's font + * height/width should be used as margin. + */ + void setLabelMargin(int margin); + int labelMargin() const; + + /** + * Shows or hides the first tick. This is usually where the axes cross. + * The tick itself may be obscured by the other axis, but the label will be visible. + */ + void setShowFirstTick( bool show ); + bool showFirstTick() const; + + bool operator==( const RulerAttributes& ) const; + inline bool operator!=( const RulerAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( RulerAttributes ) +}; // End of class RulerAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::RulerAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::RulerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::RulerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::RulerAttributes ) + +#endif // KDCHARTRULERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.cpp new file mode 100644 index 00000000..909db28a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartSignalCompressor.h" + +using namespace KDChart; + +SignalCompressor::SignalCompressor( QObject* receiver, const char* signal, + QObject* parent ) + : QObject( parent ) +{ + connect( this, SIGNAL( finallyEmit() ), receiver, signal ); + connect( &m_timer, SIGNAL( timeout() ), SLOT( nowGoAlready() ) ); + m_timer.setSingleShot( true ); + // m_timer.setIntervall( 0 ); // default, just to know... +} + +void SignalCompressor::emitSignal() +{ + if ( !m_timer.isActive() ) m_timer.start(); +} + +void SignalCompressor::nowGoAlready() +{ + emit finallyEmit(); +} + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.h b/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.h new file mode 100644 index 00000000..f3bd6352 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartSignalCompressor.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTSIGNALCOMPRESSOR_H +#define KDCHARTSIGNALCOMPRESSOR_H + +#include +#include + +namespace KDChart { + + /** SignalCompressor compresses signals where the same signal + needs to be emitted by several pieces of the code, but only + one of the signals should be received at the end. + Usage: + * create a object of SignalCompressor, and give it the name + and object of the signal it is supposed to manage + * instead of emitting the signal, call emitSignal() on the compressor + * the signal will only be emitted once, and that is after the + current call stack ends and returns to the event loop + + With the current implementation, the class changes the + sematics of signals to be a queued connection. If that is not + wanted, another compression algorithm needs to be + implemented. + Also, at the moment, only nullary signals are supported, as + parameters could not be compressed. + A typical use of the class is to compress update + notifications. + This class is not part of the published KDChart API. + */ + class SignalCompressor : public QObject + { + Q_OBJECT + + public: + SignalCompressor( QObject* receiver, const char* signal, + QObject* parent = 0 ); + + Q_SIGNALS: + void finallyEmit(); + + public Q_SLOTS: + void emitSignal(); // emit() won't work, because of stupid defines + + private Q_SLOTS: + void nowGoAlready(); + + private: + QTimer m_timer; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.cpp new file mode 100644 index 00000000..1fd2871c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.cpp @@ -0,0 +1,111 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTextArea.h" +#include "KDChartTextArea_p.h" + +#include + +#include +#include + +#include + + +using namespace KDChart; + +TextArea::Private::Private() : + AbstractAreaBase::Private() +{ + // this bloc left empty intentionally +} + + +TextArea::Private::~Private() +{ + // this bloc left empty intentionally +} + + +TextArea::TextArea() + : QObject() + , KDChart::AbstractAreaBase() + , KDChart::TextLayoutItem() +{ + // this bloc left empty intentionally +} + +TextArea::~TextArea() +{ + // this bloc left empty intentionally +} + + +void TextArea::init() +{ + // this bloc left empty intentionally +} + +void TextArea::paintIntoRect( QPainter& painter, const QRect& rect ) +{ + const QRect oldGeometry( geometry() ); + if ( oldGeometry != rect ) + setGeometry( rect ); + painter.translate( rect.left(), rect.top() ); + paintAll( painter ); + painter.translate( -rect.left(), -rect.top() ); + if ( oldGeometry != rect ) + setGeometry( oldGeometry ); +} + +void TextArea::paintAll( QPainter& painter ) +{ + // Paint the background and frame + paintBackground( painter, geometry() ); + paintFrame( painter, geometry() ); + + // temporarily adjust the widget size, to be sure all content gets calculated + // to fit into the inner rectangle + const QRect oldGeometry( areaGeometry() ); + QRect inner( innerRect() ); + inner.moveTo( + oldGeometry.left() + inner.left(), + oldGeometry.top() + inner.top() ); + const bool needAdjustGeometry = oldGeometry != inner; + if ( needAdjustGeometry ) + setGeometry( inner ); + paint( &painter ); + if ( needAdjustGeometry ) + setGeometry( oldGeometry ); + //qDebug() << "TextAreaWidget::paintAll() done."; +} + +QRect TextArea::areaGeometry() const +{ + return geometry(); +} + +void TextArea::positionHasChanged() +{ + emit positionChanged( this ); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.h b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.h new file mode 100644 index 00000000..f7d96997 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_TEXT_AREA_H +#define KDCHART_TEXT_AREA_H + +#include + +#include "KDChartGlobal.h" +#include "KDChartAbstractAreaBase.h" +#include "KDChartLayoutItems.h" + +namespace KDChart { + + +/** + * @class TextArea KDChartTextArea.h + * @brief A text area in the chart with a background, a frame, etc. + * + * TextArea is the base class for all text containing non-widget chart elements + * that have a set of background attributes and frame attributes, such as + * headers or footers. + * + * @note This class inherits AbstractAreaBase, TextLayoutItem, and QObject. + * The reason for this triple inheritance is that neither AbstractAreaBase nor + * TextLayoutItem inherit QObject. + */ +class KDCHART_EXPORT TextArea : public QObject, public AbstractAreaBase, public TextLayoutItem +{ + Q_OBJECT + + Q_DISABLE_COPY( TextArea ) + KDCHART_DECLARE_PRIVATE_DERIVED( TextArea ) + + +public: + virtual ~TextArea() ; + +// virtual TextArea * clone() const = 0; + /** + * @brief Draws the background and frame, then calls paint(). + * + * In most cases there is no need to overwrite this method in a derived + * class, but you would overwrite TextLayoutItem::paint() instead. + */ + virtual void paintIntoRect( QPainter& painter, const QRect& rect ); + + /** + * Call paintAll, if you want the background and the frame to be drawn + * before the normal paint() is invoked automatically. + */ + void paintAll( QPainter& painter ); + +protected: + TextArea(); + virtual QRect areaGeometry() const; + virtual void positionHasChanged(); + +Q_SIGNALS: + void positionChanged( TextArea * ); + + //KDCHART_DECLARE_PRIVATE_DERIVED(TextArea) +}; // End of class TextArea + +} +#endif // KDCHART_TEXT_AREA_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextArea_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea_p.h new file mode 100644 index 00000000..1e0a11ee --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextArea_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_TEXT_AREA_P_H +#define KDCHART_TEXT_AREA_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +/** \file KDChartTextArea_p.h + * \internal + */ + +#include "KDChartTextArea.h" +#include "KDChartAbstractAreaBase_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ + class TextArea::Private : public AbstractAreaBase::Private + { + friend class TextArea; + public: + explicit Private(); + virtual ~Private(); + + Private( const Private& rhs ) : + AbstractAreaBase::Private( rhs ) + { + // Just for consistency + } + }; + + + inline TextArea::TextArea( Private * p ) + : QObject(), AbstractAreaBase( p ), TextLayoutItem() + { + init(); + } + inline TextArea::Private * TextArea::d_func() + { + return static_cast( AbstractAreaBase::d_func() ); + } + inline const TextArea::Private * TextArea::d_func() const + { + return static_cast( AbstractAreaBase::d_func() ); + } + +} + +#endif /* KDCHART_TEXT_AREA_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.cpp new file mode 100644 index 00000000..5f60ade0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.cpp @@ -0,0 +1,291 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTextAttributes.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#define d d_func() + +using namespace KDChart; + +class TextAttributes::Private +{ + friend class TextAttributes; +public: + Private(); +private: + bool visible; + QFont font; + mutable QFont cachedFont; + mutable qreal cachedFontSize; + Measure fontSize; + Measure minimalFontSize; + bool autoRotate; + bool autoShrink; + bool hasRotation; + int rotation; + QPen pen; + QSharedPointer document; +}; + +TextAttributes::Private::Private() + : visible( true ), + font( QApplication::font() ), + cachedFontSize( -1.0 ), + autoRotate( false ), + autoShrink( false ), + hasRotation( false ), + rotation( 0 ), + pen( Qt::black ) +{ +} + +TextAttributes::TextAttributes() + : _d( new Private() ) +{ +} + +TextAttributes::TextAttributes( const TextAttributes& r ) + : _d( new Private( *r.d ) ) +{ + +} + +TextAttributes & TextAttributes::operator=( const TextAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +TextAttributes::~TextAttributes() +{ + delete _d; _d = 0; +} + + +bool TextAttributes::operator==( const TextAttributes& r ) const +{ + // the following works around a bug in gcc 4.3.2 + // causing StyleHint to be set to Zero when copying a QFont + const QFont myFont( font() ); + QFont r_font( r.font() ); + r_font.setStyleHint( myFont.styleHint(), myFont.styleStrategy() ); + return ( isVisible() == r.isVisible() && + myFont == r_font && + fontSize() == r.fontSize() && + minimalFontSize() == r.minimalFontSize() && + autoRotate() == r.autoRotate() && + autoShrink() == r.autoShrink() && + rotation() == r.rotation() && + pen() == r.pen() && + textDocument() == r.textDocument() ); +} + + +void TextAttributes::setVisible( bool visible ) +{ + d->visible = visible; +} + +bool TextAttributes::isVisible() const +{ + return d->visible; +} + +void TextAttributes::setFont( const QFont& font ) +{ + d->font = font; + d->cachedFont = font; // note: we do not set the font's size here, but in calculatedFont() + d->cachedFontSize = -1.0; +} + +QFont TextAttributes::font() const +{ + return d->font; +} + +void TextAttributes::setFontSize( const Measure & measure ) +{ + d->fontSize = measure; +} + +Measure TextAttributes::fontSize() const +{ + return d->fontSize; +} + +void TextAttributes::setMinimalFontSize( const Measure & measure ) +{ + d->minimalFontSize = measure; +} + +Measure TextAttributes::minimalFontSize() const +{ + return d->minimalFontSize; +} + +bool TextAttributes::hasAbsoluteFontSize() const +{ + return d->fontSize.calculationMode() == KDChartEnums::MeasureCalculationModeAbsolute + && d->minimalFontSize.calculationMode() == KDChartEnums::MeasureCalculationModeAbsolute; +} + +qreal TextAttributes::calculatedFontSize( const QSizeF &referenceSize, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const +{ + const qreal normalSize = fontSize().calculatedValue( referenceSize, autoReferenceOrientation ); + const qreal minimalSize = minimalFontSize().calculatedValue( referenceSize, autoReferenceOrientation ); + return qMax( normalSize, minimalSize ); +} + +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) +const +#endif +qreal TextAttributes::calculatedFontSize( const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const +{ + const qreal normalSize = fontSize().calculatedValue( autoReferenceArea, autoReferenceOrientation ); + const qreal minimalSize = minimalFontSize().calculatedValue( autoReferenceArea, autoReferenceOrientation ); + return qMax( normalSize, minimalSize ); +} + +const QFont TextAttributes::calculatedFont( const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const +{ + qreal size = NaN; + + const CartesianCoordinatePlane* plane = qobject_cast< const CartesianCoordinatePlane* >( autoReferenceArea ); + if ( plane && plane->hasFixedDataCoordinateSpaceRelation() ) { + // HACK + // if hasFixedDataCoordinateSpaceRelation, we use a zoom trick to keep the diagram at a constant size + // even when the plane size changes. calculatedFontSize() usually uses the plane size, not the diagram + // size, to determine the font size. here we need to give it the diagram size in order to make the font + // size constant, too. see KDCHDEV-219. + CartesianCoordinatePlane::Private *priv + = CartesianCoordinatePlane::Private::get( const_cast< CartesianCoordinatePlane * >( plane ) ); + size = calculatedFontSize( priv->fixedDataCoordinateSpaceRelationPinnedSize, + autoReferenceOrientation ); + } else { + size = calculatedFontSize( autoReferenceArea, autoReferenceOrientation ); + } + + if ( size > 0.0 && d->cachedFontSize != size ) { + d->cachedFontSize = size; + d->cachedFont.setPointSizeF( d->cachedFontSize ); + } + + return d->cachedFont; +} + + +void TextAttributes::setAutoRotate( bool autoRotate ) +{ + d->autoRotate = autoRotate; +} + +bool TextAttributes::autoRotate() const +{ + return d->autoRotate; +} + +void TextAttributes::setAutoShrink( bool autoShrink ) +{ + d->autoShrink = autoShrink; +} + +bool TextAttributes::autoShrink() const +{ + return d->autoShrink; +} + +void TextAttributes::setRotation( int rotation ) +{ + d->hasRotation = true; + d->rotation = rotation; +} + +int TextAttributes::rotation() const +{ + return d->rotation; +} + +void TextAttributes::resetRotation() +{ + d->hasRotation = false; + d->rotation = 0; +} + +bool TextAttributes::hasRotation() const +{ + return d->hasRotation; +} + +void TextAttributes::setPen( const QPen& pen ) +{ + d->pen = pen; +} + +QPen TextAttributes::pen() const +{ + return d->pen; +} + +QTextDocument* TextAttributes::textDocument() const +{ + return d->document.data(); +} + +void TextAttributes::setTextDocument(QTextDocument* document) +{ + d->document = QSharedPointer(document); +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::TextAttributes& ta) +{ + dbg << "KDChart::TextAttributes(" + << "visible=" << ta.isVisible() + << "font=" << ta.font().toString() /* What? No QDebug for QFont? */ + << "fontsize=" << ta.fontSize() + << "minimalfontsize=" << ta.minimalFontSize() + << "autorotate=" << ta.autoRotate() + << "autoshrink=" << ta.autoShrink() + << "rotation=" << ta.rotation() + << "pen=" << ta.pen() + << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.h b/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.h new file mode 100644 index 00000000..cd65314a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextAttributes.h @@ -0,0 +1,239 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTEXTATTRIBUTES_H +#define KDCHARTTEXTATTRIBUTES_H + +#include +#include +#include "KDChartGlobal.h" +#include "KDChartMeasure.h" + +QT_BEGIN_NAMESPACE +class QPen; +class QFont; +class QTextDocument; +QT_END_NAMESPACE + +namespace KDChart { + + /** + * \brief A set of text attributes. + * + * TextAttributes encapsulates settings that have to do with + * text. This includes font, fontsize, color, whether the text + * is rotated, etc + */ +class KDCHART_EXPORT TextAttributes +{ +public: + TextAttributes(); + TextAttributes( const TextAttributes& ); + TextAttributes &operator= ( const TextAttributes& ); + bool operator==( const TextAttributes& ) const; + inline bool operator!=( const TextAttributes& other ) const + { return !operator==(other); } + + ~TextAttributes(); + + /** + * Set whether the text is to be rendered at all. + * \param visible Whether the text is visible. + */ + void setVisible( bool visible ); + + /** + * \return Whether the text is visible. + */ + bool isVisible() const; + + /** + * Set the font to be used for rendering the text. + * + * \note All of the font's attributes will be used - except of its size! + * To specify the size please use setFontSize (or setMinimalFontSize, resp.) + * + * \param font The font to use. + * + * \sa setFontSize, setMinimalFontSize + */ + void setFont( const QFont& font ); + + /** + * \return The font that is used for rendering text. + */ + QFont font() const; + + /** + * Set the size of the font used for rendering text. + * \param measure The measure to use. + * \see Measure + */ + void setFontSize( const Measure & measure ); + + /** + * \return The measure used for the font size. + */ + Measure fontSize() const; + + /** + * Set the minimal size of the font used for rendering text. + * \param measure The measure to use. + * \see Measure + */ + void setMinimalFontSize( const Measure & measure ); + + /** + * \return The measure used for the minimal font size. + */ + Measure minimalFontSize() const; + + /** + * \brief Returns the font size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font size as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ + qreal calculatedFontSize( const QSizeF &referenceSize, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \brief Returns the font size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font size as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ +#if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) + const qreal calculatedFontSize( +#else + qreal calculatedFontSize( +#endif + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \brief Returns the font in the size that is used at drawing time. + * + * This method is called at drawing time. It returns the + * font as it is used for rendering text, taking into account + * any measures that were set via setFontSize and/or setMinimalFontSize. + */ + const QFont calculatedFont( + const QObject* autoReferenceArea, + KDChartEnums::MeasureOrientation autoReferenceOrientation ) const; + + /** + * \return Whether the text has an absolute font size set. + */ + bool hasAbsoluteFontSize() const; + + /** + * Set whether the text should be automatically rotated as + * needed when space is tight. + * \param autoRotate Whether text should be automatically rotated. + */ + void setAutoRotate( bool autoRotate ); + + /** + * \return Whether text is automatically rotated when space is + * tight. + */ + bool autoRotate() const; + + /** + * Set whether the text should automatically be shrunk if + * space is tight. + * \param autoShrink Whether text should be auto-shrunk. + */ + void setAutoShrink( bool autoShrink ); + + /** + * \return Whether text is automatically shrunk if space is + * tight. + */ + bool autoShrink() const; + + /** + * Set the rotation angle to use for the text. + * + * \note For axis titles the rotation angle can be set to one of the + * following angles: 0, 90, 180, 270 + * Any other values specified will be replaced by the next smaller + * one of the allowed values, so no matter what you set the rotation + * will always be one of these four values. + * + * \param rotation The rotation angle. + */ + void setRotation( int rotation ); + void resetRotation(); + bool hasRotation() const; + + /** + * \return The rotation angle used for rendering the text. + */ + int rotation() const; + + /** + * Set the pen to use for rendering the text. + * \param pen The pen to use. + */ + void setPen( const QPen& pen ); + + /** + * \return The pen used for rendering the text. + */ + QPen pen() const; + + /** + * \return The document used for the drawing the text or NULL if the + * default document is used. + */ + QTextDocument* textDocument() const; + + /** + * Sets the document to use for the text. The previous document is deleted. + */ + void setTextDocument(QTextDocument* layout); + + // FIXME KDChartEnums::TextLayoutPolicy? + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( TextAttributes ) + +}; // End of class TextAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::TextAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::TextAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::TextAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE +Q_DECLARE_METATYPE( KDChart::TextAttributes ) + +#endif // KDCHARTTEXTATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.cpp new file mode 100644 index 00000000..3e9451cf --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.cpp @@ -0,0 +1,325 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTextLabelCache.h" + +#include + +#include +#include +#include +#include +#include + +#ifndef NDEBUG +int HitCount = 0; +int MissCount = 0; +#define INC_HIT_COUNT { ++HitCount; } +#define INC_MISS_COUNT { ++MissCount; } +#define DUMP_CACHE_STATS \ + if ( HitCount != 0 && MissCount != 0 ) { \ + int total = HitCount + MissCount; \ + qreal hitQuote = ( 1.0 * HitCount ) / total; \ + qDebug() << "PrerenderedLabel dtor: hits/misses/total:" \ + << HitCount << "/" << MissCount << "/" << total \ + << "(" << 100 * hitQuote << "% hits)"; \ + } +#else +#define INC_HIT_COUNT +#define INC_MISS_COUNT +#define DUMP_CACHE_STATS +#endif + +PrerenderedElement::PrerenderedElement() + : m_referencePoint( KDChartEnums::PositionNorthWest ) +{ +} + +void PrerenderedElement::setPosition( const QPointF& position ) +{ // this does not invalidate the element + m_position = position; +} + +const QPointF& PrerenderedElement::position() const +{ + return m_position; +} + +void PrerenderedElement::setReferencePoint( KDChartEnums::PositionValue point ) +{ // this does not invalidate the element + m_referencePoint = point; +} + +KDChartEnums::PositionValue PrerenderedElement::referencePoint() const +{ + return m_referencePoint; +} + +PrerenderedLabel::PrerenderedLabel() + : PrerenderedElement() + , m_dirty( true ) + , m_font( qApp->font() ) + , m_brush( Qt::black ) + , m_pen( Qt::black ) // do not use anything invisible + , m_angle( 0.0 ) +{ +} + +PrerenderedLabel::~PrerenderedLabel() +{ + DUMP_CACHE_STATS; +} + +/** + * Invalidates the preredendered data, forces re-rendering. + */ +void PrerenderedLabel::invalidate() const +{ + m_dirty = true; +} + +/** + * Sets the label's font to \a font. + */ +void PrerenderedLabel::setFont( const QFont& font ) +{ + m_font = font; + invalidate(); +} + +/** + * @return the label's font. + */ +const QFont& PrerenderedLabel::font() const +{ + return m_font; +} + +/** + * Sets the label's text to \a text + */ +void PrerenderedLabel::setText( const QString& text ) +{ + m_text = text; + invalidate(); +} + +/** + * @return the label's text + */ +const QString& PrerenderedLabel::text() const +{ + return m_text; +} + +/** + * Sets the label's brush to \a brush + */ +void PrerenderedLabel::setBrush( const QBrush& brush ) +{ + m_brush = brush; + invalidate(); +} + +/** + * @return the label's brush + */ +const QBrush& PrerenderedLabel::brush() const +{ + return m_brush; +} + +/** + * Sets the angle of the label to \a angle degrees + */ +void PrerenderedLabel::setAngle( qreal angle ) +{ + m_angle = angle; + invalidate(); +} + +/** + * @return the label's angle in degrees + */ +qreal PrerenderedLabel::angle() const +{ + return m_angle; +} + +const QPixmap& PrerenderedLabel::pixmap() const +{ + if ( m_dirty ) { + INC_MISS_COUNT; + paint(); + } else { + INC_HIT_COUNT; + } + return m_pixmap; +} + +void PrerenderedLabel::paint() const +{ + // FIXME find a better value using font metrics of text (this + // requires finding the diameter of the circle formed by rotating + // the bounding rect around the center): + const int Width = 1000; + const int Height = Width; + + QRectF boundingRect; + const QColor FullTransparent( 255, 255, 255, 0 ); +#ifdef Q_WS_X11 + QImage pixmap( Width, Height, QImage::Format_ARGB32_Premultiplied ); + qWarning() << "PrerenderedLabel::paint: using QImage for prerendered labels " + << "to work around XRender/Qt4 bug."; +#else + QPixmap pixmap( Width, Height ); +#endif + // pixmap.fill( FullTransparent ); + { + static const QPointF Center ( 0.0, 0.0 ); + QPointF textBottomRight; + QPainter painter( &pixmap ); + painter.setRenderHint(QPainter::TextAntialiasing, true ); + painter.setRenderHint(QPainter::Antialiasing, true ); + + // QImage (X11 workaround) does not have fill(): + painter.setPen( FullTransparent ); + painter.setBrush( FullTransparent ); + QPainter::CompositionMode mode = painter.compositionMode(); + painter.setCompositionMode( QPainter::CompositionMode_Clear ); + painter.drawRect( 0, 0, Width, Height ); + painter.setCompositionMode( mode ); + + QMatrix matrix; + matrix.translate( 0.5 * Width, 0.5 * Height ); + matrix.rotate( m_angle ); +#if QT_VERSION > 0x040199 + painter.setWorldMatrix( matrix ); +#else + painter.setMatrix( matrix ); +#endif + + painter.setPen( m_pen ); + painter.setBrush( m_brush ); + painter.setFont( m_font ); + QRectF container( -0.5 * Width, -0.5 * Height, Width, 0.5 * Height ); + painter.drawText( container, Qt::AlignHCenter | Qt::AlignBottom, + m_text, &boundingRect ); + m_referenceBottomLeft = QPointF( boundingRect.bottomLeft().x(), 0.0 ); + textBottomRight = QPointF( boundingRect.bottomRight().x(), 0.0 ); + m_textAscendVector = boundingRect.topRight() - textBottomRight; + m_textBaseLineVector = textBottomRight - m_referenceBottomLeft; + + // FIXME translate topright by char height + boundingRect = matrix.mapRect( boundingRect ); + m_referenceBottomLeft = matrix.map( m_referenceBottomLeft ) + - boundingRect.topLeft(); + textBottomRight = matrix.map( textBottomRight ) + - boundingRect.topLeft(); + m_textAscendVector = matrix.map( m_textAscendVector ) + - matrix.map( Center ); + m_textBaseLineVector = matrix.map( m_textBaseLineVector ) + - matrix.map( Center ); + } + + m_dirty = false; // now all the calculation vectors are valid + + QPixmap temp( static_cast( boundingRect.width() ), + static_cast( boundingRect.height() ) ); + { + temp.fill( FullTransparent ); + QPainter painter( &temp ); +#ifdef Q_WS_X11 + painter.drawImage( QPointF( 0.0, 0.0 ), pixmap, boundingRect ); +#else + painter.drawPixmap( QPointF( 0.0, 0.0 ), pixmap, boundingRect ); +#endif +// #define PRERENDEREDLABEL_DEBUG +#ifdef PRERENDEREDLABEL_DEBUG + painter.setPen( QPen( Qt::red, 2 ) ); + painter.setBrush( Qt::red ); + // paint markers for the reference points + QList positions; + positions << KDChartEnums::PositionCenter + << KDChartEnums::PositionNorthWest + << KDChartEnums::PositionNorth + << KDChartEnums::PositionNorthEast + << KDChartEnums::PositionEast + << KDChartEnums::PositionSouthEast + << KDChartEnums::PositionSouth + << KDChartEnums::PositionSouthWest + << KDChartEnums::PositionWest; + Q_FOREACH( KDChartEnums::PositionValue position, positions ) { //krazy:exclude=foreach + static const double Radius = 0.5; + static const double Diameter = 2 * Radius; + + QPointF point ( referencePointLocation( position ) ); + painter.drawEllipse( QRectF( point - QPointF( Radius, Radius ), + QSizeF( Diameter, Diameter ) ) ); + } +#endif + } + + m_pixmap = temp; +} + +QPointF PrerenderedLabel::referencePointLocation() const +{ + return referencePointLocation( referencePoint() ); +} + +QPointF PrerenderedLabel::referencePointLocation( KDChartEnums::PositionValue position ) const +{ + if ( m_dirty ) { + INC_MISS_COUNT; + paint(); + } else { + INC_HIT_COUNT; + } + + switch ( position ) { + case KDChartEnums::PositionCenter: + return m_referenceBottomLeft + 0.5 * m_textBaseLineVector + 0.5 * m_textAscendVector; + case KDChartEnums::PositionNorthWest: + return m_referenceBottomLeft + m_textAscendVector; + case KDChartEnums::PositionNorth: + return m_referenceBottomLeft + 0.5 * m_textBaseLineVector + m_textAscendVector; + case KDChartEnums::PositionNorthEast: + return m_referenceBottomLeft + m_textBaseLineVector + m_textAscendVector; + case KDChartEnums::PositionEast: + return m_referenceBottomLeft + 0.5 * m_textAscendVector; + case KDChartEnums::PositionSouthEast: + return m_referenceBottomLeft + m_textBaseLineVector; + case KDChartEnums::PositionSouth: + return m_referenceBottomLeft + 0.5 * m_textBaseLineVector; + case KDChartEnums::PositionSouthWest: + return m_referenceBottomLeft; + case KDChartEnums::PositionWest: + return m_referenceBottomLeft + m_textBaseLineVector + 0.5 * m_textAscendVector; + + case KDChartEnums::PositionUnknown: // intentional fall-through + case KDChartEnums::PositionFloating: // intentional fall-through + return QPointF(); + } + + return QPointF(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.h b/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.h new file mode 100644 index 00000000..a71fd0ef --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartTextLabelCache.h @@ -0,0 +1,148 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTEXTLABELCACHE_H +#define KDCHARTTEXTLABELCACHE_H + +#include +#include +#include +#include + +#include "KDChartEnums.h" + +/** + * @brief base class for prerendered elements like labels, pixmaps, markers, etc. + */ +class PrerenderedElement { +public: + PrerenderedElement(); + virtual ~PrerenderedElement() {} + + /** Returns the rendered element. + If any of the properties have change, the element will be + regenerated. */ + virtual const QPixmap& pixmap() const = 0; + + /** Return the location of the reference point relatively to the + pixmap's origin. */ + virtual QPointF referencePointLocation( KDChartEnums::PositionValue ) const = 0; + + /** Set the position of the element. */ + void setPosition( const QPointF& position ); + /** Get the position of the element. */ + const QPointF& position() const; + + /** Set the reference point of the element. + Every element has nine possible reference points (all compass + directions, plus the center. + */ + void setReferencePoint( KDChartEnums::PositionValue ); + /** Get the reference point of the element. */ + KDChartEnums::PositionValue referencePoint() const; + +protected: + /** invalidate() needs to be called if any of the properties that + determine the visual appearance of the prerendered element + change. + It can be called for a const object, as objects may need to + force recalculation of the pixmap. + */ + virtual void invalidate() const = 0; + +private: + QPointF m_position; + KDChartEnums::PositionValue m_referencePoint; +}; + +/** + @brief PrerenderedLabel is an internal KDChart class that simplifies creation + and caching of cached text labels. + + It provides referenze points to anchor the text to other + elements. Reference points use the positions defined in + KDChartEnums. + + Usage: +
+    qreal angle = 90.0;
+    CachedLabel label;
+    label.paint( font, tr("Label"), angle );
+    
+*/ + +// FIXME this is merely a prototype +// FIXME caching could be done by a second layer that can be used to, +// e.g., query for a prerendered element by id or name, or by changing +// the pixmap() method to do lazy evaluation. +class PrerenderedLabel : public PrerenderedElement +{ +public: + PrerenderedLabel(); + ~PrerenderedLabel(); + + void setFont( const QFont& font ); + const QFont& font() const; + + void setText( const QString& text ); + const QString& text() const; + + void setBrush( const QBrush& brush ); + const QBrush& brush() const; + + void setPen( const QPen& ); + const QPen& pen() const; + + void setAngle( qreal angle ); + qreal angle() const; + + // reimpl PrerenderedElement: + const QPixmap& pixmap() const; + QPointF referencePointLocation( KDChartEnums::PositionValue position ) const; + // overload: return location of referencePoint(): + QPointF referencePointLocation() const; + +protected: + void invalidate() const; + +private: + /** Create a label with the given text and the given rotation + angle. Needs to be const, otherwise the pixmap() method cannot + update when needed. */ + void paint() const; + + // store the settings (these are used for the painting): + mutable bool m_dirty; + QFont m_font; + QString m_text; + QBrush m_brush; + QPen m_pen; + qreal m_angle; + + // these are valid once the label has been rendered: + mutable QPixmap m_pixmap; + mutable QPointF m_referenceBottomLeft; + mutable QPointF m_textBaseLineVector; + mutable QPointF m_textAscendVector; +}; + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.cpp new file mode 100644 index 00000000..d21ac059 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartThreeDLineAttributes.h" +#include "KDChartThreeDLineAttributes_p.h" + +#include + +#include + +#define d d_func() + +using namespace KDChart; + +ThreeDLineAttributes::Private::Private() + : lineXRotation( 15 ), + lineYRotation( 15 ) +{ +} + + +ThreeDLineAttributes::ThreeDLineAttributes() + : AbstractThreeDAttributes( new Private() ) +{ + +} + +ThreeDLineAttributes::ThreeDLineAttributes( const ThreeDLineAttributes& r ) + : AbstractThreeDAttributes( new Private( *r.d) ) +{ +} + +ThreeDLineAttributes& ThreeDLineAttributes::operator= ( const ThreeDLineAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +ThreeDLineAttributes::~ThreeDLineAttributes() +{ +} + +void ThreeDLineAttributes::init() +{ +} + + +bool ThreeDLineAttributes::operator==( const ThreeDLineAttributes& r ) const +{ + return ( lineXRotation() == r.lineXRotation() && + lineYRotation() == r.lineYRotation() && + AbstractThreeDAttributes::operator==(r)); +} + + + +void ThreeDLineAttributes::setLineXRotation( const uint degrees ) +{ + d->lineXRotation = degrees; +} + +uint ThreeDLineAttributes::lineXRotation() const +{ + return d->lineXRotation; +} + +void ThreeDLineAttributes::setLineYRotation( const uint degrees ) +{ + d->lineYRotation = degrees; +} + +uint ThreeDLineAttributes::lineYRotation() const +{ + return d->lineYRotation; +} + + +#if !defined(QT_NO_DEBUG_STREAM) + +QDebug operator<<(QDebug dbg, const KDChart::ThreeDLineAttributes& a) +{ + dbg << "KDChart::ThreeDLineAttributes("; + dbg = operator <<( dbg, static_cast(a) ); + dbg << " lineXRotation="<< a.lineXRotation() + << " lineYRotation="<< a.lineYRotation() + << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ + diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.h b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.h new file mode 100644 index 00000000..2705bddd --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDLINEATTRIBUTES_H +#define KDCHARTTHREEDLINEATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D line attributes + */ + class KDCHART_EXPORT ThreeDLineAttributes : public AbstractThreeDAttributes + { + public: + ThreeDLineAttributes(); + ThreeDLineAttributes( const ThreeDLineAttributes& ); + ThreeDLineAttributes &operator= ( const ThreeDLineAttributes& ); + + ~ThreeDLineAttributes(); + + /* threeD lines specific */ + void setLineXRotation( const uint degrees ); + uint lineXRotation() const; + void setLineYRotation( const uint degrees ); + uint lineYRotation() const; + + bool operator==( const ThreeDLineAttributes& ) const; + inline bool operator!=( const ThreeDLineAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDLineAttributes) + + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDLineAttributes) + + }; // End of class ThreeDLineAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDLineAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDLineAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDLineAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDLineAttributes ) + +#endif // KDCHARTTHREEDLINEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes_p.h new file mode 100644 index 00000000..09b1ed8a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartThreeDLineAttributes_p.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDLINESATTRIBUTES_P_H +#define KDCHARTTHREEDLINESATTRIBUTES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + + +namespace KDChart { + +/** + * \internal + */ +class ThreeDLineAttributes::Private : public AbstractThreeDAttributes::Private +{ + friend class ThreeDLineAttributes; +public: + Private(); + +private: + //ThreeDLines + uint lineXRotation; + uint lineYRotation; +}; + +KDCHART_DERIVED_PRIVATE_FOOTER(ThreeDLineAttributes, AbstractThreeDAttributes) + +} + + +#endif // KDCHARTTHREEDLINESATTRIBUTES_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartValueTrackerAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartValueTrackerAttributes.cpp new file mode 100644 index 00000000..957a0338 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartValueTrackerAttributes.cpp @@ -0,0 +1,205 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartValueTrackerAttributes.h" + +#include +#include +#include +#include + +#define d d_func() + +using namespace KDChart; + +class ValueTrackerAttributes::Private +{ + friend class ValueTrackerAttributes; + public: + Private(); + private: + QPen linePen; + QPen markerPen; + QBrush markerBrush; + QBrush arrowBrush; + QSizeF markerSize; + bool enabled; + QBrush areaBrush; + Qt::Orientations orientations; +}; + +ValueTrackerAttributes::Private::Private() + : linePen( QPen( QColor( 80, 80, 80, 200 ) ) ), + markerSize( QSizeF( 6.0, 6.0 ) ), + enabled( false ), + areaBrush( QBrush() ), + orientations(Qt::Vertical|Qt::Horizontal) +{ + markerPen = linePen; + arrowBrush = linePen.color(); +} + + +ValueTrackerAttributes::ValueTrackerAttributes() + : _d( new Private() ) +{ +} + +ValueTrackerAttributes::ValueTrackerAttributes( const ValueTrackerAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +ValueTrackerAttributes & ValueTrackerAttributes::operator=( const ValueTrackerAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +ValueTrackerAttributes::~ValueTrackerAttributes() +{ + delete _d; _d = 0; +} + + +bool ValueTrackerAttributes::operator==( const ValueTrackerAttributes& r ) const +{ + return ( linePen() == r.linePen() && + markerPen() == r.markerPen() && + markerBrush() == r.markerBrush() && + arrowBrush() == r.arrowBrush() && + areaBrush() == r.areaBrush() && + markerSize() == r.markerSize() && + isEnabled() == r.isEnabled() ); +} + +void ValueTrackerAttributes::setPen( const QPen& pen ) +{ + d->linePen = pen; + d->markerPen = pen; + d->markerBrush = QBrush(); + d->arrowBrush = pen.color(); +} + +QPen ValueTrackerAttributes::pen() const +{ + return d->linePen; +} + +void ValueTrackerAttributes::setLinePen( const QPen &pen ) +{ + d->linePen = pen; +} + +QPen ValueTrackerAttributes::linePen() const +{ + return d->linePen; +} + +void ValueTrackerAttributes::setMarkerPen( const QPen &pen ) +{ + d->markerPen = pen; +} + +QPen ValueTrackerAttributes::markerPen() const +{ + return d->markerPen; +} + +void ValueTrackerAttributes::setMarkerBrush( const QBrush &brush ) +{ + d->markerBrush = brush; +} + +QBrush ValueTrackerAttributes::markerBrush() const +{ + return d->markerBrush; +} + +void ValueTrackerAttributes::setArrowBrush( const QBrush &brush ) +{ + d->arrowBrush = brush; +} + +QBrush ValueTrackerAttributes::arrowBrush() const +{ + return d->arrowBrush; +} + +void ValueTrackerAttributes::setAreaBrush( const QBrush& brush ) +{ + d->areaBrush = brush; +} + +QBrush ValueTrackerAttributes::areaBrush() const +{ + return d->areaBrush; +} + +void ValueTrackerAttributes::setMarkerSize( const QSizeF& size ) +{ + d->markerSize = size; +} + +QSizeF ValueTrackerAttributes::markerSize() const +{ + return d->markerSize; +} + +Qt::Orientations ValueTrackerAttributes::orientations() const +{ + return d->orientations; +} + +void ValueTrackerAttributes::setOrientations( Qt::Orientations orientations ) +{ + d->orientations = orientations; +} + +void ValueTrackerAttributes::setEnabled( bool enabled ) +{ + d->enabled = enabled; +} + +bool ValueTrackerAttributes::isEnabled() const +{ + return d->enabled; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::ValueTrackerAttributes& va) +{ + dbg << "KDChart::ValueTrackerAttributes(" + << "linePen="< +#include +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * \class ValueTrackerAttributes KDChartValueTrackerAttributes.h KDChartValueTrackerAttributes + * \brief Cell-specific attributes regarding value tracking + * + * ValueTrackerAttributes groups the properties regarding + * value tracking, and how it is displayed. + * Value tracking can be used to emphasize on one or several + * specific points in a line diagram. + */ + + class KDCHART_EXPORT ValueTrackerAttributes + { + public: + ValueTrackerAttributes(); + ValueTrackerAttributes( const ValueTrackerAttributes& ); + ValueTrackerAttributes &operator= ( const ValueTrackerAttributes& ); + + ~ValueTrackerAttributes(); + + /** Set the pen the value tracking lines and markers will be drawn with + * \param pen The pen the lines and markers will be drawn with + */ + void setPen( const QPen& pen ); + + /** + * @return The pen the lines and markers are drawn with + */ + QPen pen() const; + + void setLinePen( const QPen &pen ); + QPen linePen() const; + + void setMarkerPen( const QPen &pen ); + QPen markerPen() const; + + void setMarkerBrush( const QBrush &brush ); + QBrush markerBrush() const; + + void setArrowBrush( const QBrush &brush ); + QBrush arrowBrush() const; + + /** Set the brush the area below the value tracking + * lines should be filled with. Default is a black brush + * with the style Qt::NoBrush. + * \param brush The brush the area should be filled with + */ + void setAreaBrush( const QBrush& brush ); + + /** + * @return The brush the area below the value tracking lines is filled with + */ + QBrush areaBrush() const; + + /** Set the size of the markers. This includes both the arrows at + * the axises and the circle at the data point. + * \param size The size of the markers + */ + void setMarkerSize( const QSizeF& size ); + + /** + * @return The size of the markers + */ + QSizeF markerSize() const; + + /** + * @return The orientations used to show the value tracking. Using only a + * vertical line, horizontal line or both (the default). + */ + Qt::Orientations orientations() const; + + /** Set the orientations used to show the value tracking. + * \param orientations The orientations of the value tracking lines. + */ + void setOrientations( Qt::Orientations orientations ); + + /** Set whether value tracking should be enabled for a specific + * index or not + * \param enabled Whether value tracking should be enabled or not + */ + void setEnabled( bool enabled ); + + /** + * @return Whether value tracking is enabled or not + */ + bool isEnabled() const; + + bool operator==( const ValueTrackerAttributes& ) const; + inline bool operator!=( const ValueTrackerAttributes& other ) const { return !operator==(other); } + + private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( ValueTrackerAttributes ) + }; // End of class ValueTrackerAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ValueTrackerAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::ValueTrackerAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ValueTrackerAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ValueTrackerAttributes ) + +#endif // KDCHARTVALUETRACKERATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartWidget.cpp b/massif-visualizer/kdchart/src/KDChart/KDChartWidget.cpp new file mode 100644 index 00000000..dbd6d812 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartWidget.cpp @@ -0,0 +1,629 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#define d d_func() + +using namespace KDChart; + +Widget::Private::Private( Widget * qq ) + : q( qq ), + layout( q ), + m_model( q ), + m_chart( q ), + m_cartPlane( &m_chart ), + m_polPlane( &m_chart ), + usedDatasetWidth( 0 ) +{ + KDAB_SET_OBJECT_NAME( layout ); + KDAB_SET_OBJECT_NAME( m_model ); + KDAB_SET_OBJECT_NAME( m_chart ); + + layout.addWidget( &m_chart ); +} + +Widget::Private::~Private() {} + + +/** +* \class Widget KDChartWidget.h +* \brief The KDChart widget for usage without Interwiev. +* +* If you want to use KDChart with Interview, use KDChart::Chart instead. +*/ + +/** + * Constructor. Creates a new widget with all data initialized empty. + * + * \param parent the widget parent; passed on to QWidget + */ +Widget::Widget( QWidget* parent ) : + QWidget(parent), _d( new Private( this ) ) +{ + // as default we have a cartesian coordinate plane ... + // ... and a line diagram + setType( Line ); +} + +/** + * Destructor. + */ +Widget::~Widget() +{ + delete _d; _d = 0; +} + +void Widget::init() +{ +} + +void Widget::setDataset( int column, const QVector< qreal > & data, const QString& title ) +{ + if ( ! checkDatasetWidth( 1 ) ) + return; + + QStandardItemModel & model = d->m_model; + + justifyModelSize( data.size(), column + 1 ); + + for ( int i = 0; i < data.size(); ++i ) + { + const QModelIndex index = model.index( i, column ); + model.setData( index, QVariant( data[i] ), Qt::DisplayRole ); + } + if ( ! title.isEmpty() ) + model.setHeaderData( column, Qt::Horizontal, QVariant( title ) ); +} + +void Widget::setDataset( int column, const QVector< QPair< qreal, qreal > > & data, const QString& title ) +{ + if ( ! checkDatasetWidth( 2 )) + return; + + QStandardItemModel & model = d->m_model; + + justifyModelSize( data.size(), (column + 1) * 2 ); + + for ( int i = 0; i < data.size(); ++i ) + { + QModelIndex index = model.index( i, column * 2 ); + model.setData( index, QVariant( data[i].first ), Qt::DisplayRole ); + + index = model.index( i, column * 2 + 1 ); + model.setData( index, QVariant( data[i].second ), Qt::DisplayRole ); + } + if ( ! title.isEmpty() ) { + model.setHeaderData( column, Qt::Horizontal, QVariant( title ) ); + } +} + +void Widget::setDataCell( int row, int column, qreal data ) +{ + if ( ! checkDatasetWidth( 1 ) ) + return; + + QStandardItemModel & model = d->m_model; + + justifyModelSize( row + 1, column + 1 ); + + const QModelIndex index = model.index( row, column ); + model.setData( index, QVariant( data ), Qt::DisplayRole ); +} + +void Widget::setDataCell( int row, int column, QPair< qreal, qreal > data ) +{ + if ( ! checkDatasetWidth( 2 )) + return; + + QStandardItemModel & model = d->m_model; + + justifyModelSize( row + 1, (column + 1) * 2 ); + + QModelIndex index = model.index( row, column * 2 ); + model.setData( index, QVariant( data.first ), Qt::DisplayRole ); + + index = model.index( row, column * 2 + 1 ); + model.setData( index, QVariant( data.second ), Qt::DisplayRole ); +} + +/* + * Resets all data. + */ +void Widget::resetData() +{ + d->m_model.clear(); + d->usedDatasetWidth = 0; +} + +/** + * Sets all global leadings (borders). + */ +void Widget::setGlobalLeading( int left, int top, int right, int bottom ) +{ + d->m_chart.setGlobalLeading( left, top, right, bottom ); +} + +/** + * Sets the left leading (border). + */ +void Widget::setGlobalLeadingLeft( int leading ) +{ + d->m_chart.setGlobalLeadingLeft( leading ); +} + +/** + * Returns the left leading (border). + */ +int Widget::globalLeadingLeft() const +{ + return d->m_chart.globalLeadingLeft(); +} + +/** + * Sets the top leading (border). + */ +void Widget::setGlobalLeadingTop( int leading ) +{ + d->m_chart.setGlobalLeadingTop( leading ); +} + +/** + * Returns the top leading (border). + */ +int Widget::globalLeadingTop() const +{ + return d->m_chart.globalLeadingTop(); +} + +/** + * Sets the right leading (border). + */ +void Widget::setGlobalLeadingRight( int leading ) +{ + d->m_chart.setGlobalLeadingRight( leading ); +} + +/** + * Returns the right leading (border). + */ +int Widget::globalLeadingRight() const +{ + return d->m_chart.globalLeadingRight(); +} + +/** + * Sets the bottom leading (border). + */ +void Widget::setGlobalLeadingBottom( int leading ) +{ + d->m_chart.setGlobalLeadingBottom( leading ); +} + +/** + * Returns the bottom leading (border). + */ +int Widget::globalLeadingBottom() const +{ + return d->m_chart.globalLeadingBottom(); +} + +/** + * Returns the first of all headers. + */ +KDChart::HeaderFooter* Widget::firstHeaderFooter() +{ + return d->m_chart.headerFooter(); +} + +/** + * Returns a list with all headers. + */ +QList Widget::allHeadersFooters() +{ + return d->m_chart.headerFooters(); +} + +/** + * Adds a new header/footer with the given text to the position. + */ +void Widget::addHeaderFooter( const QString& text, + HeaderFooter::HeaderFooterType type, + Position position) +{ + HeaderFooter* newHeader = new HeaderFooter( &d->m_chart ); + newHeader->setType( type ); + newHeader->setPosition( position ); + newHeader->setText( text ); + d->m_chart.addHeaderFooter( newHeader ); // we need this explicit call ! +} + +/** + * Adds an existing header / footer object. + */ +void Widget::addHeaderFooter( HeaderFooter* header ) +{ + header->setParent( &d->m_chart ); + d->m_chart.addHeaderFooter( header ); // we need this explicit call ! +} + +void Widget::replaceHeaderFooter( HeaderFooter* header, HeaderFooter* oldHeader ) +{ + header->setParent( &d->m_chart ); + d->m_chart.replaceHeaderFooter( header, oldHeader ); +} + +void Widget::takeHeaderFooter( HeaderFooter* header ) +{ + d->m_chart.takeHeaderFooter( header ); +} + +/** + * Returns the first of all legends. + */ +KDChart::Legend* Widget::legend() +{ + return d->m_chart.legend(); +} + +/** + * Returns a list with all legends. + */ +QList Widget::allLegends() +{ + return d->m_chart.legends(); +} + +/** + * Adds an empty legend on the given position. + */ +void Widget::addLegend( Position position ) +{ + Legend* legend = new Legend( diagram(), &d->m_chart ); + legend->setPosition( position ); + d->m_chart.addLegend( legend ); +} + +/** + * Adds a new, already existing, legend. + */ +void Widget::addLegend( Legend* legend ) +{ + legend->setDiagram( diagram() ); + legend->setParent( &d->m_chart ); + d->m_chart.addLegend( legend ); +} + +void Widget::replaceLegend( Legend* legend, Legend* oldLegend ) +{ + legend->setDiagram( diagram() ); + legend->setParent( &d->m_chart ); + d->m_chart.replaceLegend( legend, oldLegend ); +} + +void Widget::takeLegend( Legend* legend ) +{ + d->m_chart.takeLegend( legend ); +} + +AbstractDiagram* Widget::diagram() +{ + if ( coordinatePlane() == 0 ) + qDebug() << "diagram(): coordinatePlane() was NULL"; + + return coordinatePlane()->diagram(); +} + +BarDiagram* Widget::barDiagram() +{ + return dynamic_cast( diagram() ); +} +LineDiagram* Widget::lineDiagram() +{ + return dynamic_cast( diagram() ); +} +Plotter* Widget::plotter() +{ + return dynamic_cast( diagram() ); +} +PieDiagram* Widget::pieDiagram() +{ + return dynamic_cast( diagram() ); +} +RingDiagram* Widget::ringDiagram() +{ + return dynamic_cast( diagram() ); +} +PolarDiagram* Widget::polarDiagram() +{ + return dynamic_cast( diagram() ); +} + +AbstractCoordinatePlane* Widget::coordinatePlane() +{ + return d->m_chart.coordinatePlane(); +} + +static bool isCartesian( KDChart::Widget::ChartType type ) +{ + return (type == KDChart::Widget::Bar) || (type == KDChart::Widget::Line); +} + +static bool isPolar( KDChart::Widget::ChartType type ) +{ + return (type == KDChart::Widget::Pie) + || (type == KDChart::Widget::Ring) + || (type == KDChart::Widget::Polar); +} + +void Widget::setType( ChartType chartType, SubType chartSubType ) +{ + AbstractDiagram* diag = 0; + const ChartType oldType = type(); + + if ( chartType != oldType ) { + if ( chartType != NoType ) { + if ( isCartesian( chartType ) && ! isCartesian( oldType ) ) + { + if ( coordinatePlane() == &d->m_polPlane ) { + d->m_chart.takeCoordinatePlane( &d->m_polPlane ); + d->m_chart.addCoordinatePlane( &d->m_cartPlane ); + } else { + d->m_chart.replaceCoordinatePlane( &d->m_cartPlane ); + } + } + else if ( isPolar( chartType ) && ! isPolar( oldType ) ) + { + if ( coordinatePlane() == &d->m_cartPlane ) { + d->m_chart.takeCoordinatePlane( &d->m_cartPlane ); + d->m_chart.addCoordinatePlane( &d->m_polPlane ); + } else { + d->m_chart.replaceCoordinatePlane( &d->m_polPlane ); + } + } + } + switch ( chartType ) { + case Bar: + diag = new BarDiagram( &d->m_chart, &d->m_cartPlane ); + break; + case Line: + diag = new LineDiagram( &d->m_chart, &d->m_cartPlane ); + break; + case Plot: + diag = new Plotter( &d->m_chart, &d->m_cartPlane ); + break; + case Pie: + diag = new PieDiagram( &d->m_chart, &d->m_polPlane ); + break; + case Polar: + diag = new PolarDiagram( &d->m_chart, &d->m_polPlane ); + break; + case Ring: + diag = new RingDiagram( &d->m_chart, &d->m_polPlane ); + break; + case NoType: + break; + } + if ( diag != NULL ) { + if ( isCartesian( oldType ) && isCartesian( chartType ) ) { + AbstractCartesianDiagram *oldDiag = + qobject_cast( coordinatePlane()->diagram() ); + AbstractCartesianDiagram *newDiag = + qobject_cast( diag ); + Q_FOREACH( CartesianAxis* axis, oldDiag->axes() ) { + oldDiag->takeAxis( axis ); + newDiag->addAxis ( axis ); + } + } + + Q_FOREACH( Legend* l, d->m_chart.legends() ) { + l->setDiagram( diag ); + } + + diag->setModel( &d->m_model ); + coordinatePlane()->replaceDiagram( diag ); + + //checkDatasetWidth( d->usedDatasetWidth ); + } + //coordinatePlane()->setGridNeedsRecalculate(); + } + + if ( chartType != NoType ) { + if ( chartType != oldType || chartSubType != subType() ) + setSubType( chartSubType ); + d->m_chart.resize( size() ); // triggering immediate update + } +} + +template< class DiagramType, class Subtype > +void setSubtype( AbstractDiagram *_dia, Subtype st) +{ + if ( DiagramType *dia = qobject_cast< DiagramType * >( _dia ) ) { + dia->setType( st ); + } +} + +void Widget::setSubType( SubType subType ) +{ + // ### at least PieDiagram, PolarDiagram and RingDiagram are unhandled here + + AbstractDiagram *dia = diagram(); + switch ( subType ) { + case Normal: + setSubtype< BarDiagram >( dia, BarDiagram::Normal ); + setSubtype< LineDiagram >( dia, LineDiagram::Normal ); + setSubtype< Plotter >( dia, Plotter::Normal ); + break; + case Stacked: + setSubtype< BarDiagram >( dia, BarDiagram::Stacked ); + setSubtype< LineDiagram >( dia, LineDiagram::Stacked ); + // setSubtype< Plotter >( dia, Plotter::Stacked ); + break; + case Percent: + setSubtype< BarDiagram >( dia, BarDiagram::Percent ); + setSubtype< LineDiagram >( dia, LineDiagram::Percent ); + setSubtype< Plotter >( dia, Plotter::Percent ); + break; + case Rows: + setSubtype< BarDiagram >( dia, BarDiagram::Rows ); + break; + default: + Q_ASSERT_X ( false, "Widget::setSubType", "Sub-type not supported!" ); + break; + } +} + +/** + * Returns the type of the chart. + */ +Widget::ChartType Widget::type() const +{ + // PENDING(christoph) save the type out-of-band: + AbstractDiagram * const dia = const_cast( this )->diagram(); + if ( qobject_cast< BarDiagram* >( dia ) ) + return Bar; + else if ( qobject_cast< LineDiagram* >( dia ) ) + return Line; + else if ( qobject_cast< Plotter* >( dia ) ) + return Plot; + else if ( qobject_cast< PieDiagram* >( dia ) ) + return Pie; + else if ( qobject_cast< PolarDiagram* >( dia ) ) + return Polar; + else if ( qobject_cast< RingDiagram* >( dia ) ) + return Ring; + else + return NoType; +} + +Widget::SubType Widget::subType() const +{ + // PENDING(christoph) save the type out-of-band: + Widget::SubType retVal = Normal; + + AbstractDiagram * const dia = const_cast( this )->diagram(); + BarDiagram* barDia = qobject_cast< BarDiagram* >( dia ); + LineDiagram* lineDia = qobject_cast< LineDiagram* >( dia ); + Plotter* plotterDia = qobject_cast< Plotter* >( dia ); + +//FIXME(khz): Add the impl for these chart types - or remove them from here: +// PieDiagram* pieDia = qobject_cast< PieDiagram* >( diagram() ); +// PolarDiagram* polarDia = qobject_cast< PolarDiagram* >( diagram() ); +// RingDiagram* ringDia = qobject_cast< RingDiagram* >( diagram() ); + +#define TEST_SUB_TYPE(DIAGRAM, INTERNALSUBTYPE, SUBTYPE) \ +{ \ + if ( DIAGRAM && DIAGRAM->type() == INTERNALSUBTYPE ) \ + retVal = SUBTYPE; \ +} + const Widget::ChartType mainType = type(); + switch ( mainType ) + { + case Bar: + TEST_SUB_TYPE( barDia, BarDiagram::Normal, Normal ); + TEST_SUB_TYPE( barDia, BarDiagram::Stacked, Stacked ); + TEST_SUB_TYPE( barDia, BarDiagram::Percent, Percent ); + TEST_SUB_TYPE( barDia, BarDiagram::Rows, Rows ); + break; + case Line: + TEST_SUB_TYPE( lineDia, LineDiagram::Normal, Normal ); + TEST_SUB_TYPE( lineDia, LineDiagram::Stacked, Stacked ); + TEST_SUB_TYPE( lineDia, LineDiagram::Percent, Percent ); + break; + case Plot: + TEST_SUB_TYPE( plotterDia, Plotter::Normal, Normal ); + TEST_SUB_TYPE( plotterDia, Plotter::Percent, Percent ); + break; + case Pie: + // no impl. yet + break; + case Polar: + // no impl. yet + break; + case Ring: + // no impl. yet + break; + default: + Q_ASSERT_X ( false, + "Widget::subType", "Chart type not supported!" ); + break; + } + return retVal; +} + + +/** + * Checks whether the given width matches with the one used until now. + */ +bool Widget::checkDatasetWidth( int width ) +{ + if ( width == diagram()->datasetDimension() ) + { + d->usedDatasetWidth = width; + return true; + } + qDebug() << "The current diagram type doesn't support this data dimension."; + return false; +/* if ( d->usedDatasetWidth == width || d->usedDatasetWidth == 0 ) { + d->usedDatasetWidth = width; + diagram()->setDatasetDimension( width ); + return true; + } + qDebug() << "It's impossible to mix up the different setDataset() methods on the same widget."; + return false;*/ +} + +/** + * Justifies the model, so that the given rows and columns fit into it. + */ +void Widget::justifyModelSize( int rows, int columns ) +{ + QAbstractItemModel & model = d->m_model; + const int currentRows = model.rowCount(); + const int currentCols = model.columnCount(); + + if ( currentCols < columns ) + if ( ! model.insertColumns( currentCols, columns - currentCols )) + qDebug() << "justifyModelSize: could not increase model size."; + if ( currentRows < rows ) + if ( ! model.insertRows( currentRows, rows - currentRows )) + qDebug() << "justifyModelSize: could not increase model size."; + + Q_ASSERT( model.rowCount() >= rows ); + Q_ASSERT( model.columnCount() >= columns ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartWidget.h b/massif-visualizer/kdchart/src/KDChart/KDChartWidget.h new file mode 100644 index 00000000..e82ea80f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartWidget.h @@ -0,0 +1,242 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTWIDGET_H__ +#define __KDCHARTWIDGET_H__ + +#include "KDChartGlobal.h" + +#include + +#include "KDChartEnums.h" +#include "KDChartHeaderFooter.h" + +QT_BEGIN_NAMESPACE +template class QVector; +template struct QPair; +QT_END_NAMESPACE + +namespace KDChart { + + // some forward declarations + class AbstractDiagram; + class Chart; + class AbstractCoordinatePlane; + class TableModel; + class BarDiagram; + class LineDiagram; + class Plotter; + class PieDiagram; + class RingDiagram; + class PolarDiagram; + class Legend; + class Position; + + /** + * \class Widget KDChartWidget.h + * \brief The KD Chart widget for usage without Model/View. + * + * If you want to use KD Chart with Model/View, use KDChart::Chart instead. + */ + class KDCHART_EXPORT Widget : public QWidget + { + Q_OBJECT + + Q_DISABLE_COPY( Widget ) + KDCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC_QWIDGET( Widget ) + + public: + /** + * Standard Qt-style Constructor + * + * Creates a new widget with all data initialized empty. + * + * \param parent the widget parent; passed on to QWidget + */ + explicit Widget( QWidget* parent = 0 ); + + /** Destructor. */ + ~Widget(); + /** Sets the data in the given column using a QVector of qreal for the Y values. */ + void setDataset( int column, const QVector< qreal > & data, const QString& title = QString() ); + /** Sets the data in the given column using a QVector of QPairs + * of qreal for the (X, Y) values. */ + void setDataset( int column, const QVector< QPair< qreal, qreal > > & data, const QString& title = QString() ); + /** Sets the Y value data for a given cell. */ + void setDataCell( int row, int column, qreal data ); + /** Sets the data for a given column using an (X, Y) QPair of qreals. */ + void setDataCell( int row, int column, QPair< qreal, qreal > data ); + /** Resets all data. */ + void resetData(); + + public Q_SLOTS: + /** Sets all global leadings (borders). */ + void setGlobalLeading( int left, int top, int right, int bottom ); + /** Sets the left leading (border). */ + void setGlobalLeadingLeft( int leading ); + /** Sets the top leading (border). */ + void setGlobalLeadingTop( int leading ); + /** Sets the right leading (border). */ + void setGlobalLeadingRight( int leading ); + /** Sets the bottom leading (border). */ + void setGlobalLeadingBottom( int leading ); + + public: + /** Returns the left leading (border). */ + int globalLeadingLeft() const; + /** Returns the top leading (border). */ + int globalLeadingTop() const; + /** Returns the right leading (border). */ + int globalLeadingRight() const; + /** Returns the bottom leading (border). */ + int globalLeadingBottom() const; + + /** Returns the first of all headers. */ + HeaderFooter* firstHeaderFooter(); + /** Returns a list with all headers. */ + QList allHeadersFooters(); + + /** Adds a new header/footer with the given text to the position. */ + void addHeaderFooter( const QString& text, + HeaderFooter::HeaderFooterType type, + Position position ); + + /** + * Adds the existing header / footer object \a header. + * \sa replaceHeaderFooter, takeHeaderFooter + */ + void addHeaderFooter( HeaderFooter* header ); + + /** + * Replaces the old header (or footer, resp.), or appends the + * new header or footer, it there is none yet. + * + * @param header The header or footer to be used instead of the old one. + * This parameter must not be zero, or the method will do nothing. + * + * @param oldHeader The header or footer to be removed by the new one. This + * header or footer will be deleted automatically. If the parameter is omitted, + * the very first header or footer will be replaced. In case, there was no + * header and no footer yet, the new header or footer will just be added. + * + * \note If you want to re-use the old header or footer, call takeHeaderFooter and + * addHeaderFooter, instead of using replaceHeaderFooter. + * + * \sa addHeaderFooter, takeHeaderFooter + */ + void replaceHeaderFooter( HeaderFooter* header, + HeaderFooter* oldHeader = 0 ); + + /** Remove the header (or footer, resp.) from the widget, + * without deleting it. + * The chart no longer owns the header or footer, so it is + * the caller's responsibility to delete the header or footer. + * + * \sa addHeaderFooter, replaceHeaderFooter + */ + void takeHeaderFooter( HeaderFooter* header ); + + /** Returns the first of all legends. */ + Legend* legend(); + /** Returns a list with all legends. */ + QList allLegends(); + + /** Adds an empty legend on the given position. */ + void addLegend( Position position ); + /** Adds a new, already existing, legend. */ + void addLegend (Legend* legend ); + + void replaceLegend( Legend* legend, Legend* oldLegend = 0 ); + void takeLegend( Legend* legend ); + + + /** Returns a pointer to the current diagram. */ + AbstractDiagram* diagram(); + + /** If the current diagram is a BarDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + BarDiagram* barDiagram(); + /** If the current diagram is a LineDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + LineDiagram* lineDiagram(); + /** If the current diagram is a LineDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + * + * \note Do not use lineDiagram for multi-dimensional diagrams, but use plotter instead + * + * \sa plotter + */ + Plotter* plotter(); + /** If the current diagram is a Plotter, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + PieDiagram* pieDiagram(); + /** If the current diagram is a RingDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + RingDiagram* ringDiagram(); + /** If the current diagram is a PolarDiagram, it is returnd; otherwise 0 is returned. + * This function provides type-safe casting. + */ + PolarDiagram* polarDiagram(); + + /** Returns a pointer to the current coordinate plane. */ + AbstractCoordinatePlane* coordinatePlane(); + + + enum ChartType { NoType, Bar, Line, Plot, Pie, Ring, Polar }; + + /** Returns the type of the chart. */ + ChartType type() const; + + /** Sub type values, matching the values defines for the respective Diagram classes. */ + enum SubType { Normal, Stacked, Percent, Rows }; + + /** Returns the sub-type of the chart. */ + SubType subType() const; + + public Q_SLOTS: + /** Sets the type of the chart. */ + void setType( ChartType chartType, SubType subType=Normal ); + /** \brief Sets the type of the chart without changing the main type. + * + * Make sure to use a sub-type that matches the main type, + * so e.g. setting sub-type Rows makes sense for Bar charts only, + * and it will be ignored for all other chart types. + * + * \sa KDChartBarDiagram::BarType, KDChartLineDiagram::LineType + * \sa KDChartPieDiagram::PieType, KDChartRingDiagram::RingType + * \sa KDChartPolarDiagram::PolarType + */ + void setSubType( SubType subType ); + + private: + /** Justifies the model, so that the given rows and columns fit into it. */ + void justifyModelSize( int rows, int columns ); + /** Checks wether the given width matches with the one used until now. */ + bool checkDatasetWidth( int width ); + }; +} + +#endif // KDChartWidget_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartWidget_p.h b/massif-visualizer/kdchart/src/KDChart/KDChartWidget_p.h new file mode 100644 index 00000000..7be1a441 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartWidget_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef __KDCHARTWIDGET_P_H__ +#define __KDCHARTWIDGET_P_H__ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include + +#include + +#include +#include + +/** + * \internal + */ +class KDChart::Widget::Private +{ + friend class ::KDChart::Widget; + Widget * const q; +public: + explicit Private( Widget * qq ); + ~Private(); // non-virtual, since nothing inherits this + +protected: + QGridLayout layout; + QStandardItemModel m_model; + Chart m_chart; + CartesianCoordinatePlane m_cartPlane; + PolarCoordinatePlane m_polPlane; + + int usedDatasetWidth; +}; + + +#endif // KDChartWidget_p_H diff --git a/massif-visualizer/kdchart/src/KDChart/KDChartZoomParameters.h b/massif-visualizer/kdchart/src/KDChart/KDChartZoomParameters.h new file mode 100644 index 00000000..e19f309a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDChartZoomParameters.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef ZOOMPARAMETERS_H +#define ZOOMPARAMETERS_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +namespace KDChart { + /** + * ZoomParameters stores the center and the factor of zooming internally + * \internal + */ + class ZoomParameters { + public: + ZoomParameters() + : xFactor( 1.0 ), + yFactor( 1.0 ), + xCenter( 0.5 ), + yCenter( 0.5) + { + } + + ZoomParameters( qreal xFactor, qreal yFactor, const QPointF& center ) + : xFactor( xFactor ), + yFactor( yFactor ), + xCenter( center.x() ), + yCenter( center.y() ) + { + } + + void setCenter( const QPointF& center ) + { + xCenter = center.x(); + yCenter = center.y(); + } + const QPointF center() const + { + return QPointF( xCenter, yCenter ); + } + + qreal xFactor; + qreal yFactor; + + qreal xCenter; + qreal yCenter; + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/KDTextDocument.cpp b/massif-visualizer/kdchart/src/KDChart/KDTextDocument.cpp new file mode 100644 index 00000000..d8807014 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDTextDocument.cpp @@ -0,0 +1,101 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDTextDocument.h" +#include +#include +#include +#include + +#include + +// This is an internal class that mimicks some of the behavior of a +// QLabel with rich text assigned, this is mostly a workaround around +// QTextDocumentLayout not being a public class. + +KDTextDocument::KDTextDocument( QObject * p ) + : QTextDocument( p ), + mHintValid( false ), + mSizeHint(), + mMinimumSizeHint() +{ + +} + +KDTextDocument::KDTextDocument( const QString & text, QObject * p ) + : QTextDocument( text, p ), + mHintValid( false ), + mSizeHint(), + mMinimumSizeHint() +{ + +} + +KDTextDocument::~KDTextDocument() {} + + +QSize KDTextDocument::sizeHint() +{ + if ( !mHintValid ) + (void)minimumSizeHint(); + return mSizeHint; +} + +QSize KDTextDocument::minimumSizeHint() +{ + /* + QTextCursor cursor( this ); + if ( ! cursor.atEnd() ) + cursor.movePosition( QTextCursor::NextBlock ); + qDebug() << "KDTextDocument::minimumSizeHint() found:" << cursor.block().text(); + QSizeF s( documentLayout()->blockBoundingRect( cursor.block() ).size() ); + qDebug() << "KDTextDocument::minimumSizeHint() found rect" << documentLayout()->blockBoundingRect( cursor.block()); + return QSize( static_cast(s.width()), + static_cast(s.height()) ); + */ + + if ( mHintValid ) + return mMinimumSizeHint; + + mHintValid = true; + mSizeHint = sizeForWidth( -1 ); + QSize sz(-1, -1); + + // PENDING(kalle) Cache + sz.rwidth() = sizeForWidth( 0 ).width(); + sz.rheight() = sizeForWidth( 32000 ).height(); + if ( mSizeHint.height() < sz.height()) + sz.rheight() = mSizeHint.height(); + + mMinimumSizeHint = sz; + return sz; +} + + +QSize KDTextDocument::sizeForWidth(int w) +{ + Q_UNUSED( w ); + + setPageSize(QSize(0, 100000)); + + return documentLayout()->documentSize().toSize(); +} diff --git a/massif-visualizer/kdchart/src/KDChart/KDTextDocument.h b/massif-visualizer/kdchart/src/KDChart/KDTextDocument.h new file mode 100644 index 00000000..6c014083 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/KDTextDocument.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDTEXTDOCUMENT_H +#define KDTEXTDOCUMENT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +/** + * KDTextDocument is an internally used enhanced QTextDocument + * \internal + */ +class KDTextDocument : public QTextDocument +{ + Q_OBJECT + +public: + explicit KDTextDocument( QObject* parent = 0 ); + explicit KDTextDocument( const QString& text, QObject* parent = 0 ); + ~KDTextDocument(); + + QSize sizeHint(); + QSize minimumSizeHint(); + +private: + QSize sizeForWidth( int width ); + +private: + bool mHintValid; + QSize mSizeHint; + QSize mMinimumSizeHint; +}; + + +#endif /* KDTEXTDOCUMENT_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.cpp new file mode 100644 index 00000000..1d707efe --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractPieDiagram.h" +#include "KDChartAbstractPieDiagram_p.h" + +#include "KDChartAttributesModel.h" +#include "KDChartPieAttributes.h" +#include "KDChartThreeDPieAttributes.h" + +#include + +#include + + +using namespace KDChart; + +AbstractPieDiagram::Private::Private() + : granularity( 1.0 ) + , autoRotateLabels( false ) +{ +} + +AbstractPieDiagram::Private::~Private() {} + +AbstractPieDiagram::AbstractPieDiagram( QWidget* parent, PolarCoordinatePlane *plane ) : + AbstractPolarDiagram( new Private(), parent, plane ) +{ + init(); +} + +AbstractPieDiagram::~AbstractPieDiagram() +{ +} + + +void AbstractPieDiagram::init() +{ +} + + +bool AbstractPieDiagram::compare( const AbstractPieDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + //qDebug() << "AbstractPieDiagram::compare() cannot compare to Null pointer"; + return false; + } + /* + qDebug() << "\n AbstractPieDiagram::compare():"; + // compare own properties + qDebug() << + (granularity() == other->granularity()) && + (startPosition() == other->startPosition()); + */ + return // compare the base class + ( static_cast(this)->compare( other ) ) && + // compare own properties + (granularity() == other->granularity()) && + (startPosition() == other->startPosition()); +} + + +#define d d_func() + +void AbstractPieDiagram::setGranularity( qreal value ) +{ + d->granularity = value; +} + +qreal AbstractPieDiagram::granularity() const +{ + return (d->granularity < 0.05 || d->granularity > 36.0) + ? 1.0 + : d->granularity; +} + + +void AbstractPieDiagram::setStartPosition( int degrees ) +{ + Q_UNUSED( degrees ); + qWarning() << "Deprecated AbstractPieDiagram::setStartPosition() called, setting ignored."; +} + +int AbstractPieDiagram::startPosition() const +{ + qWarning() << "Deprecated AbstractPieDiagram::startPosition() called."; + return 0; +} + +void AbstractPieDiagram::setAutoRotateLabels( bool autoRotate ) +{ + d->autoRotateLabels = autoRotate; +} + +bool AbstractPieDiagram::autoRotateLabels() const +{ + return d->autoRotateLabels; +} + +void AbstractPieDiagram::setPieAttributes( const PieAttributes & attrs ) +{ + d->attributesModel->setModelData( qVariantFromValue( attrs ), PieAttributesRole ); + emit layoutChanged( this ); +} + +void AbstractPieDiagram::setPieAttributes( int column, const PieAttributes & attrs ) +{ + d->setDatasetAttrs( column, qVariantFromValue( attrs ), PieAttributesRole ); + emit layoutChanged( this ); +} + +void AbstractPieDiagram::setPieAttributes( const QModelIndex & index, const PieAttributes & attrs ) +{ + d->attributesModel->setData( index, qVariantFromValue( attrs), PieAttributesRole ); + emit layoutChanged( this ); +} + +PieAttributes AbstractPieDiagram::pieAttributes() const +{ + return d->attributesModel->data( PieAttributesRole ).value(); +} + +PieAttributes AbstractPieDiagram::pieAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, PieAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value< PieAttributes >(); + return pieAttributes(); +} + +PieAttributes AbstractPieDiagram::pieAttributes( const QModelIndex & index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), + PieAttributesRole ).value(); +} + + +void AbstractPieDiagram::setThreeDPieAttributes( const ThreeDPieAttributes & tda ) +{ + d->attributesModel->setModelData( qVariantFromValue( tda ), ThreeDPieAttributesRole ); + emit layoutChanged( this ); +} + +void AbstractPieDiagram::setThreeDPieAttributes( int column, const ThreeDPieAttributes & tda ) +{ + d->setDatasetAttrs( column, qVariantFromValue( tda ), ThreeDPieAttributesRole ); + emit layoutChanged( this ); +} + +void AbstractPieDiagram::setThreeDPieAttributes( const QModelIndex & index, const ThreeDPieAttributes & tda ) +{ + model()->setData( index, qVariantFromValue( tda ), ThreeDPieAttributesRole ); + emit layoutChanged( this ); +} + +ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes() const +{ + return d->attributesModel->data( ThreeDPieAttributesRole ).value(); +} + +ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes( int column ) const +{ + const QVariant attrs( d->datasetAttrs( column, ThreeDPieAttributesRole ) ); + if ( attrs.isValid() ) + return attrs.value< ThreeDPieAttributes >(); + return threeDPieAttributes(); +} + +ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes( const QModelIndex & index ) const +{ + return d->attributesModel->data( + d->attributesModel->mapFromSource( index ), + ThreeDPieAttributesRole ).value(); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.h new file mode 100644 index 00000000..75737845 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPIEDIAGRAM_H +#define KDCHARTABSTRACTPIEDIAGRAM_H + +#include "KDChartAbstractPolarDiagram.h" + +namespace KDChart { + class PieAttributes; + class ThreeDPieAttributes; + +/** + * @brief Base class for any diagram type + */ +class KDCHART_EXPORT AbstractPieDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( AbstractPieDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractPieDiagram, PolarCoordinatePlane ) + +public: + explicit AbstractPieDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~AbstractPieDiagram(); + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const AbstractPieDiagram* other ) const; + + /** Set the granularity: the smaller the granularity the more your diagram + * segments will show facettes instead of rounded segments. + * \param value the granularity value between 0.05 (one twentieth of a degree) + * and 36.0 (one tenth of a full circle), other values will be interpreted as 1.0. + */ + void setGranularity( qreal value ); + + /** @return the granularity. */ + qreal granularity() const; + + /** \deprecated Use PolarCoordinatePlane::setStartPosition( qreal degrees ) instead. */ + void setStartPosition( int degrees ); + /** \deprecated Use qreal PolarCoordinatePlane::startPosition instead. */ + int startPosition() const; + + /** If this property is set, and if a pie's TextAttributes have no rotation set, its labels will + * automatically be rotated according to the pie's angle. + */ + void setAutoRotateLabels( bool autoRotate ); + /** \see setAutoRotateLabels( bool autoRotate ) + */ + bool autoRotateLabels() const; + + void setPieAttributes( const PieAttributes & a ); + void setPieAttributes( int column, + const PieAttributes & a ); + void setPieAttributes( const QModelIndex & index, + const PieAttributes & a ); + PieAttributes pieAttributes() const; + PieAttributes pieAttributes( int column ) const; + PieAttributes pieAttributes( const QModelIndex & index ) const; + + void setThreeDPieAttributes( const ThreeDPieAttributes & a ); + void setThreeDPieAttributes( int column, + const ThreeDPieAttributes & a ); + void setThreeDPieAttributes( const QModelIndex & index, + const ThreeDPieAttributes & a ); + ThreeDPieAttributes threeDPieAttributes() const; + ThreeDPieAttributes threeDPieAttributes( int column ) const; + ThreeDPieAttributes threeDPieAttributes( const QModelIndex & index ) const; +}; // End of class KDChartAbstractPieDiagram + +} + +#endif // KDCHARTABSTACTPIEDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram_p.h new file mode 100644 index 00000000..9db179c4 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPieDiagram_p.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPIEDIAGRAM_P_H +#define KDCHARTABSTRACTPIEDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractPolarDiagram_p.h" +#include + +#include + + +namespace KDChart { + +class PolarCoordinatePlane; + +/** + * \internal + */ +class AbstractPieDiagram::Private : public AbstractPolarDiagram::Private +{ + friend class AbstractPieDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractPolarDiagram::Private( rhs ), + granularity( rhs.granularity ) + { + } + +private: + qreal granularity; + bool autoRotateLabels; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( AbstractPieDiagram, AbstractPolarDiagram, PolarCoordinatePlane ) + +} +#endif /* KDCHARTABSTRACTPIEDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.cpp new file mode 100644 index 00000000..8bdaf1cf --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractPolarDiagram.h" +#include "KDChartAbstractPolarDiagram_p.h" + +#include + + +using namespace KDChart; + +AbstractPolarDiagram::Private::Private() +{ +} + +AbstractPolarDiagram::Private::~Private() +{ +} + +void AbstractPolarDiagram::init() +{ +} + +#define d d_func() + +AbstractPolarDiagram::AbstractPolarDiagram ( + QWidget* parent, PolarCoordinatePlane* plane ) + : AbstractDiagram ( new Private(), parent, plane ) +{ +} + + +const PolarCoordinatePlane * AbstractPolarDiagram::polarCoordinatePlane() const +{ + return dynamic_cast( coordinatePlane() ); +} + +int AbstractPolarDiagram::columnCount() const +{ + return static_cast( numberOfValuesPerDataset() ); +} + +int AbstractPolarDiagram::rowCount() const +{ + return static_cast( numberOfDatasets() ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.h new file mode 100644 index 00000000..25ee8392 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPOLARDIAGRAM_H +#define KDCHARTABSTRACTPOLARDIAGRAM_H + +#include "KDChartPolarCoordinatePlane.h" +#include "KDChartAbstractDiagram.h" + +namespace KDChart { + + class GridAttributes; + + /** + * @brief Base class for diagrams based on a polar coordinate system. + */ + class KDCHART_EXPORT AbstractPolarDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractPolarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractPolarDiagram, PolarCoordinatePlane ) + + public: + explicit AbstractPolarDiagram ( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~AbstractPolarDiagram() {} + + virtual qreal valueTotals () const = 0; + virtual qreal numberOfValuesPerDataset() const = 0; + virtual qreal numberOfDatasets() const { return 1; }; + virtual qreal numberOfGridRings() const = 0; + + const PolarCoordinatePlane * polarCoordinatePlane() const; + + int columnCount() const; + int rowCount() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram_p.h new file mode 100644 index 00000000..40c39927 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartAbstractPolarDiagram_p.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTPOLARDIAGRAM_P_H +#define KDCHARTABSTRACTPOLARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractDiagram_p.h" +#include + +#include + + +namespace KDChart { + + class PolarCoordinatePlane; + +/** + * \internal + */ +class AbstractPolarDiagram::Private : public AbstractDiagram::Private +{ + friend class AbstractPolarDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractDiagram::Private( rhs ) + { + // just for consistency + } + + /** \reimpl */ + // FIXME: Optimize when needed + virtual qreal calcPercentValue( const QModelIndex & index ) const + { + Q_ASSERT( index.isValid() ); + qreal sum = 0.0; + for ( int row = 0; row < attributesModel->rowCount( QModelIndex() ); row++ ) + sum += attributesModel->data( attributesModel->index( row, index.column(), QModelIndex() ) ).toReal(); // checked + if ( sum == 0.0 ) + return 0.0; + return attributesModel->data( attributesModel->mapFromSource( index ) ).toReal() / sum * 100.0; + } + +private: + qreal granularity; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( AbstractPolarDiagram, AbstractDiagram, PolarCoordinatePlane ) +/* +inline AbstractPolarDiagram::AbstractPolarDiagram( Private * p ) + : AbstractDiagram( p ) { init(); } +inline AbstractPolarDiagram::AbstractPolarDiagram( + Private *p, QWidget* parent, PolarCoordinatePlane* plane ) + : AbstractDiagram( p, parent, plane ) { init(); } +inline AbstractPolarDiagram::Private * AbstractPolarDiagram::d_func() +{ return static_cast( AbstractDiagram::d_func() ); } +inline const AbstractPolarDiagram::Private * AbstractPolarDiagram::d_func() const +{ return static_cast( AbstractDiagram::d_func() ); } +*/ + +} +#endif /* KDCHARTABSTRACTCARTESIANDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.cpp new file mode 100644 index 00000000..ea41a7a6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.cpp @@ -0,0 +1,125 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPieAttributes.h" +#include "KDChartPieAttributes_p.h" + +#include + +#include + +#define d d_func() + + +using namespace KDChart; + + +PieAttributes::Private::Private() + : explodeFactor( 0.0 ) + , tangentialGapFactor( 0.0 ) + , radialGapFactor( 0.0 ) +{ +} + + +PieAttributes::PieAttributes() + : _d( new Private() ) +{ +} + +PieAttributes::PieAttributes( const PieAttributes& r ) + : _d( new Private( *r.d ) ) +{ +} + +PieAttributes& PieAttributes::operator= ( const PieAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +PieAttributes::~PieAttributes() +{ + delete _d; _d = 0; +} + + +bool PieAttributes::operator==( const PieAttributes& r ) const +{ + return + explodeFactor() == r.explodeFactor() && + gapFactor( true ) == r.gapFactor( true ) && + gapFactor( false) == r.gapFactor( false); +} + + +void PieAttributes::init( ) +{ + +} + +void PieAttributes::setExplode( bool enabled ) +{ + d->explodeFactor = (enabled ? 0.1 : 0.0); +} + +bool PieAttributes::explode() const +{ + return (d->explodeFactor != 0.0); +} + +void PieAttributes::setExplodeFactor( qreal factor ) +{ + d->explodeFactor = factor; +} + +qreal PieAttributes::explodeFactor() const +{ + return d->explodeFactor; +} + +void PieAttributes::setGapFactor( bool circular, qreal factor ) +{ + if ( circular ) + d->tangentialGapFactor = factor; + else + d->radialGapFactor = factor; +} + +qreal PieAttributes::gapFactor( bool circular ) const +{ + return circular ? d->tangentialGapFactor : d->radialGapFactor; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::PieAttributes& a) +{ + dbg << "KDChart::PieAttributes("; + dbg << "explodeFactor="<< a.explodeFactor() << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.h new file mode 100644 index 00000000..06d6c77f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_PIE_ATTRIBUTES_H +#define KDCHART_PIE_ATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + +/** + * @brief A set of attributes controlling the appearance of pie charts + */ +class KDCHART_EXPORT PieAttributes +{ +public: + PieAttributes(); + PieAttributes( const PieAttributes& ); + PieAttributes &operator= ( const PieAttributes& ); + + ~PieAttributes(); + + /** \brief Enable or disable exploding the respective pie piece(s). + * + * The default explode factor is 10 percent; use setExplodeFactor + * to specify a different factor. + * + * \note This is a convenience function: Calling setExplode( true ) + * does the same as calling setExplodeFactor( 0.1 ), and calling + * setExplode( false ) does the same as calling setExplodeFactor( 0.0 ). + * + * \sa setExplodeFactor + */ + void setExplode( bool explode ); + + /** @return whether the respective pie piece(s) will be exploded. */ + bool explode() const; + + /** Set the explode factor. + * The explode factor is a qreal between 0 and 1, and is interpreted + * as a percentage of the total available radius of the pie. + * + * \sa setExplode + */ + void setExplodeFactor( qreal factor ); + + /** @return the explode factor set by setExplode or by setExplodeFactor. */ + qreal explodeFactor() const; + + void setGapFactor( bool circular, qreal factor ); + qreal gapFactor( bool circular ) const; + + bool operator==( const PieAttributes& ) const; + inline bool operator!=( const PieAttributes& other ) const { return !operator==(other); } + +private: + KDCHART_DECLARE_PRIVATE_BASE_VALUE( PieAttributes ) +}; // End of class PieAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::PieAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION( KDChart::PieAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::PieAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::PieAttributes ) + +#endif // KDCHART_PIE_ATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes_p.h new file mode 100644 index 00000000..e556e073 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieAttributes_p.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_PIE_ATTRIBUTES_P_H +#define KDCHART_PIE_ATTRIBUTES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + + +namespace KDChart { + +/** + * \internal + */ +class PieAttributes::Private +{ + friend class PieAttributes; +public: + Private(); + + qreal explodeFactor; + qreal tangentialGapFactor; + qreal radialGapFactor; +}; + +} + +#endif // KDCHART_PIE_ATTRIBUTES_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.cpp new file mode 100644 index 00000000..604c21f9 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.cpp @@ -0,0 +1,968 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include +#include +#include + +#include "KDChartPieDiagram.h" +#include "KDChartPieDiagram_p.h" + +#include "KDChartPaintContext.h" +#include "KDChartPieAttributes.h" +#include "KDChartPolarCoordinatePlane_p.h" +#include "KDChartThreeDPieAttributes.h" +#include "KDChartPainterSaver_p.h" + +#include + + +using namespace KDChart; + +PieDiagram::Private::Private() + : labelDecorations( PieDiagram::NoDecoration ), + isCollisionAvoidanceEnabled( false ) +{ +} + +PieDiagram::Private::~Private() {} + +#define d d_func() + +PieDiagram::PieDiagram( QWidget* parent, PolarCoordinatePlane* plane ) : + AbstractPieDiagram( new Private(), parent, plane ) +{ + init(); +} + +PieDiagram::~PieDiagram() +{ +} + +void PieDiagram::init() +{ +} + +/** + * Creates an exact copy of this diagram. + */ +PieDiagram * PieDiagram::clone() const +{ + return new PieDiagram( new Private( *d ) ); +} + +void PieDiagram::setLabelDecorations( LabelDecorations decorations ) +{ + d->labelDecorations = decorations; +} + +PieDiagram::LabelDecorations PieDiagram::labelDecorations() const +{ + return d->labelDecorations; +} + +void PieDiagram::setLabelCollisionAvoidanceEnabled( bool enabled ) +{ + d->isCollisionAvoidanceEnabled = enabled; +} + +bool PieDiagram::isLabelCollisionAvoidanceEnabled() const +{ + return d->isCollisionAvoidanceEnabled; +} + +const QPair PieDiagram::calculateDataBoundaries () const +{ + if ( !checkInvariants( true ) || model()->rowCount() < 1 ) return QPair( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + + const PieAttributes attrs( pieAttributes() ); + + QPointF bottomLeft( QPointF( 0, 0 ) ); + QPointF topRight; + // If we explode, we need extra space for the slice that has the largest explosion distance. + if ( attrs.explode() ) { + const int colCount = columnCount(); + qreal maxExplode = 0.0; + for ( int j = 0; j < colCount; ++j ) { + const PieAttributes columnAttrs( pieAttributes( model()->index( 0, j, rootIndex() ) ) ); // checked + maxExplode = qMax( maxExplode, columnAttrs.explodeFactor() ); + } + topRight = QPointF( 1.0 + maxExplode, 1.0 + maxExplode ); + } else { + topRight = QPointF( 1.0, 1.0 ); + } + return QPair ( bottomLeft, topRight ); +} + + +void PieDiagram::paintEvent( QPaintEvent* ) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void PieDiagram::resizeEvent( QResizeEvent* ) +{ +} + +void PieDiagram::resize( const QSizeF& ) +{ +} + +void PieDiagram::paint( PaintContext* ctx ) +{ + // Painting is a two stage process + // In the first stage we figure out how much space is needed + // for text labels. + // In the second stage, we make use of that information and + // perform the actual painting. + placeLabels( ctx ); + paintInternal( ctx ); +} + +void PieDiagram::calcSliceAngles() +{ + // determine slice positions and sizes + const qreal sum = valueTotals(); + const qreal sectorsPerValue = 360.0 / sum; + const PolarCoordinatePlane* plane = polarCoordinatePlane(); + qreal currentValue = plane ? plane->startPosition() : 0.0; + + const int colCount = columnCount(); + d->startAngles.resize( colCount ); + d->angleLens.resize( colCount ); + + bool atLeastOneValue = false; // guard against completely empty tables + for ( int iColumn = 0; iColumn < colCount; ++iColumn ) { + bool isOk; + const qreal cellValue = qAbs( model()->data( model()->index( 0, iColumn, rootIndex() ) ) // checked + .toReal( &isOk ) ); + // toReal() returns 0.0 if there was no value or a non-numeric value + atLeastOneValue = atLeastOneValue || isOk; + + d->startAngles[ iColumn ] = currentValue; + d->angleLens[ iColumn ] = cellValue * sectorsPerValue; + + currentValue = d->startAngles[ iColumn ] + d->angleLens[ iColumn ]; + } + + // If there was no value at all, this is the sign for other code to bail out + if ( !atLeastOneValue ) { + d->startAngles.clear(); + d->angleLens.clear(); + } +} + +void PieDiagram::calcPieSize( const QRectF &contentsRect ) +{ + d->size = qMin( contentsRect.width(), contentsRect.height() ); + + // if any slice explodes, the whole pie needs additional space so we make the basic size smaller + qreal maxExplode = 0.0; + const int colCount = columnCount(); + for ( int j = 0; j < colCount; ++j ) { + const PieAttributes columnAttrs( pieAttributes( model()->index( 0, j, rootIndex() ) ) ); // checked + maxExplode = qMax( maxExplode, columnAttrs.explodeFactor() ); + } + d->size /= ( 1.0 + 1.0 * maxExplode ); + + if ( d->size < 0.0 ) { + d->size = 0; + } +} + +// this is the rect of the top surface of the pie, i.e. excluding the "3D" rim effect. +QRectF PieDiagram::twoDPieRect( const QRectF &contentsRect, const ThreeDPieAttributes& threeDAttrs ) const +{ + QRectF pieRect; + if ( !threeDAttrs.isEnabled() ) { + qreal x = ( contentsRect.width() - d->size ) / 2.0; + qreal y = ( contentsRect.height() - d->size ) / 2.0; + pieRect = QRectF( contentsRect.left() + x, contentsRect.top() + y, d->size, d->size ); + } else { + // threeD: width is the maximum possible width; height is 1/2 of that + qreal sizeFor3DEffect = 0.0; + + qreal x = ( contentsRect.width() - d->size ) / 2.0; + qreal height = d->size; + // make sure that the height plus the threeDheight is not more than the + // available size + if ( threeDAttrs.depth() >= 0.0 ) { + // positive pie height: absolute value + sizeFor3DEffect = threeDAttrs.depth(); + height = d->size - sizeFor3DEffect; + } else { + // negative pie height: relative value + sizeFor3DEffect = - threeDAttrs.depth() / 100.0 * height; + height = d->size - sizeFor3DEffect; + } + qreal y = ( contentsRect.height() - height - sizeFor3DEffect ) / 2.0; + + pieRect = QRectF( contentsRect.left() + x, contentsRect.top() + y, d->size, height ); + } + return pieRect; +} + +void PieDiagram::placeLabels( PaintContext* paintContext ) +{ + if ( !checkInvariants(true) || model()->rowCount() < 1 ) { + return; + } + if ( paintContext->rectangle().isEmpty() || valueTotals() == 0.0 ) { + return; + } + + const ThreeDPieAttributes threeDAttrs( threeDPieAttributes() ); + const int colCount = columnCount(); + + d->reverseMapper.clear(); // on first call, this sets up the internals of the ReverseMapper. + + calcSliceAngles(); + if ( d->startAngles.isEmpty() ) { + return; + } + + calcPieSize( paintContext->rectangle() ); + + // keep resizing the pie until the labels and the pie fit into paintContext->rectangle() + + bool tryAgain = true; + while ( tryAgain ) { + tryAgain = false; + + QRectF pieRect = twoDPieRect( paintContext->rectangle(), threeDAttrs ); + d->forgetAlreadyPaintedDataValues(); + d->labelPaintCache.clear(); + + for ( int slice = 0; slice < colCount; slice++ ) { + if ( d->angleLens[ slice ] != 0.0 ) { + const QRectF explodedPieRect = explodedDrawPosition( pieRect, slice ); + addSliceLabel( &d->labelPaintCache, explodedPieRect, slice ); + } + } + + QRectF textBoundingRect; + d->paintDataValueTextsAndMarkers( paintContext, d->labelPaintCache, false, true, + &textBoundingRect ); + if ( d->isCollisionAvoidanceEnabled ) { + shuffleLabels( &textBoundingRect ); + } + + if ( !textBoundingRect.isEmpty() && d->size > 0.0 ) { + const QRectF &clipRect = paintContext->rectangle(); + // see by how many pixels the text is clipped on each side + qreal right = qMax( qreal( 0.0 ), textBoundingRect.right() - clipRect.right() ); + qreal left = qMax( qreal( 0.0 ), clipRect.left() - textBoundingRect.left() ); + // attention here - y coordinates in Qt are inverted compared to the convention in maths + qreal top = qMax( qreal( 0.0 ), clipRect.top() - textBoundingRect.top() ); + qreal bottom = qMax( qreal( 0.0 ), textBoundingRect.bottom() - clipRect.bottom() ); + qreal maxOverhang = qMax( qMax( right, left ), qMax( top, bottom ) ); + + if ( maxOverhang > 0.0 ) { + // subtract 2x as much because every side only gets half of the total diameter reduction + // and we have to make up for the overhang on one particular side. + d->size -= qMin( d->size, maxOverhang * 2.0 ); + tryAgain = true; + } + } + } +} + +static int wraparound( int i, int size ) +{ + while ( i < 0 ) { + i += size; + } + while ( i >= size ) { + i -= size; + } + return i; +} + +//#define SHUFFLE_DEBUG + +void PieDiagram::shuffleLabels( QRectF* textBoundingRect ) +{ + // things that could be improved here: + // - use a variable number (chosen using angle information) of neighbors to check + // - try harder to arrange the labels to look nice + + // ideas: + // - leave labels that don't collide alone (only if they their offset is zero) + // - use a graphics view for collision detection + + LabelPaintCache& lpc = d->labelPaintCache; + const int n = lpc.paintReplay.size(); + bool modified = false; + qreal direction = 5.0; + QVector< qreal > offsets; + offsets.fill( 0.0, n ); + + for ( bool lastRoundModified = true; lastRoundModified; ) { + lastRoundModified = false; + + for ( int i = 0; i < n; i++ ) { + const int neighborsToCheck = qMax( 10, lpc.paintReplay.size() - 1 ); + const int minComp = wraparound( i - neighborsToCheck / 2, n ); + const int maxComp = wraparound( i + ( neighborsToCheck + 1 ) / 2, n ); + + QPainterPath& path = lpc.paintReplay[ i ].labelArea; + + for ( int j = minComp; j != maxComp; j = wraparound( j + 1, n ) ) { + if ( i == j ) { + continue; + } + QPainterPath& otherPath = lpc.paintReplay[ j ].labelArea; + + while ( ( offsets[ i ] + direction > 0 ) && otherPath.intersects( path ) ) { +#ifdef SHUFFLE_DEBUG + qDebug() << "collision involving" << j << "and" << i << " -- n =" << n; + TextAttributes ta = lpc.paintReplay[ i ].attrs.textAttributes(); + ta.setPen( QPen( Qt::white ) ); + lpc.paintReplay[ i ].attrs.setTextAttributes( ta ); +#endif + uint slice = lpc.paintReplay[ i ].index.column(); + qreal angle = DEGTORAD( d->startAngles[ slice ] + d->angleLens[ slice ] / 2.0 ); + qreal dx = cos( angle ) * direction; + qreal dy = -sin( angle ) * direction; + offsets[ i ] += direction; + path.translate( dx, dy ); + lastRoundModified = true; + } + } + } + direction *= -1.07; // this can "overshoot", but avoids getting trapped in local minimums + modified = modified || lastRoundModified; + } + + if ( modified ) { + for ( int i = 0; i < lpc.paintReplay.size(); i++ ) { + *textBoundingRect |= lpc.paintReplay[ i ].labelArea.boundingRect(); + } + } +} + +static QPolygonF polygonFromPainterPath( const QPainterPath &pp ) +{ + QPolygonF ret; + for ( int i = 0; i < pp.elementCount(); i++ ) { + const QPainterPath::Element& el = pp.elementAt( i ); + Q_ASSERT( el.type == QPainterPath::MoveToElement || el.type == QPainterPath::LineToElement ); + ret.append( el ); + } + return ret; +} + +// you can call it "normalizedProjectionLength" if you like +static qreal normProjection( const QLineF &l1, const QLineF &l2 ) +{ + const qreal dotProduct = l1.dx() * l2.dx() + l1.dy() * l2.dy(); + return qAbs( dotProduct / ( l1.length() * l2.length() ) ); +} + +static QLineF labelAttachmentLine( const QPointF ¢er, const QPointF &start, const QPainterPath &label ) +{ + Q_ASSERT ( label.elementCount() == 5 ); + + // start is assumed to lie on the outer rim of the slice(!), making it possible to derive the + // radius of the pie + const qreal pieRadius = QLineF( center, start ).length(); + + // don't draw a line at all when the label is connected to its slice due to at least one of its + // corners falling inside the slice. + for ( int i = 0; i < 4; i++ ) { // point 4 is just a duplicate of point 0 + if ( QLineF( label.elementAt( i ), center ).length() < pieRadius ) { + return QLineF(); + } + } + + // find the closest edge in the polygon, and its two neighbors + QPointF closeCorners[3]; + { + QPointF closest = QPointF( 1000000, 1000000 ); + int closestIndex = 0; // better misbehave than crash + for ( int i = 0; i < 4; i++ ) { // point 4 is just a duplicate of point 0 + QPointF p = label.elementAt( i ); + if ( QLineF( p, center ).length() < QLineF( closest, center ).length() ) { + closest = p; + closestIndex = i; + } + } + + closeCorners[ 0 ] = label.elementAt( wraparound( closestIndex - 1, 4 ) ); + closeCorners[ 1 ] = closest; + closeCorners[ 2 ] = label.elementAt( wraparound( closestIndex + 1, 4 ) ); + } + + QLineF edge1 = QLineF( closeCorners[ 0 ], closeCorners[ 1 ] ); + QLineF edge2 = QLineF( closeCorners[ 1 ], closeCorners[ 2 ] ); + QLineF connection1 = QLineF( ( closeCorners[ 0 ] + closeCorners[ 1 ] ) / 2.0, center ); + QLineF connection2 = QLineF( ( closeCorners[ 1 ] + closeCorners[ 2 ] ) / 2.0, center ); + QLineF ret; + // prefer the connecting line meeting its edge at a more perpendicular angle + if ( normProjection( edge1, connection1 ) < normProjection( edge2, connection2 ) ) { + ret = connection1; + } else { + ret = connection2; + } + + // This tends to look a bit better than not doing it *shrug* + ret.setP2( ( start + center ) / 2.0 ); + + // make the line end at the rim of the slice (not 100% accurate because the line is not precisely radial) + qreal p1Radius = QLineF( ret.p1(), center ).length(); + ret.setLength( p1Radius - pieRadius ); + + return ret; +} + +void PieDiagram::paintInternal( PaintContext* paintContext ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants( true ) || model()->rowCount() < 1 ) { + return; + } + if ( d->startAngles.isEmpty() || paintContext->rectangle().isEmpty() || valueTotals() == 0.0 ) { + return; + } + + const ThreeDPieAttributes threeDAttrs( threeDPieAttributes() ); + const int colCount = columnCount(); + + // Paint from back to front ("painter's algorithm") - first draw the backmost slice, + // then the slices on the left and right from back to front, then the frontmost one. + + QRectF pieRect = twoDPieRect( paintContext->rectangle(), threeDAttrs ); + const int backmostSlice = findSliceAt( 90, colCount ); + const int frontmostSlice = findSliceAt( 270, colCount ); + int currentLeftSlice = backmostSlice; + int currentRightSlice = backmostSlice; + + drawSlice( paintContext->painter(), pieRect, backmostSlice ); + + if ( backmostSlice == frontmostSlice ) { + const int rightmostSlice = findSliceAt( 0, colCount ); + const int leftmostSlice = findSliceAt( 180, colCount ); + + if ( backmostSlice == leftmostSlice ) { + currentLeftSlice = findLeftSlice( currentLeftSlice, colCount ); + } + if ( backmostSlice == rightmostSlice ) { + currentRightSlice = findRightSlice( currentRightSlice, colCount ); + } + } + + while ( currentLeftSlice != frontmostSlice ) { + if ( currentLeftSlice != backmostSlice ) { + drawSlice( paintContext->painter(), pieRect, currentLeftSlice ); + } + currentLeftSlice = findLeftSlice( currentLeftSlice, colCount ); + } + + while ( currentRightSlice != frontmostSlice ) { + if ( currentRightSlice != backmostSlice ) { + drawSlice( paintContext->painter(), pieRect, currentRightSlice ); + } + currentRightSlice = findRightSlice( currentRightSlice, colCount ); + } + + // if the backmost slice is not the frontmost slice, we draw the frontmost one last + if ( backmostSlice != frontmostSlice || ! threeDPieAttributes().isEnabled() ) { + drawSlice( paintContext->painter(), pieRect, frontmostSlice ); + } + + d->paintDataValueTextsAndMarkers( paintContext, d->labelPaintCache, false, false ); + // it's safer to do this at the beginning of placeLabels, but we can save some memory here. + d->forgetAlreadyPaintedDataValues(); + // ### maybe move this into AbstractDiagram, also make ReverseMapper deal better with multiple polygons + const QPointF center = paintContext->rectangle().center(); + const PainterSaver painterSaver( paintContext->painter() ); + paintContext->painter()->setBrush( Qt::NoBrush ); + KDAB_FOREACH( const LabelPaintInfo &pi, d->labelPaintCache.paintReplay ) { + // we expect the PainterPath to be a rectangle + if ( pi.labelArea.elementCount() != 5 ) { + continue; + } + + paintContext->painter()->setPen( pen( pi.index ) ); + if ( d->labelDecorations & LineFromSliceDecoration ) { + paintContext->painter()->drawLine( labelAttachmentLine( center, pi.markerPos, pi.labelArea ) ); + } + if ( d->labelDecorations & FrameDecoration ) { + paintContext->painter()->drawPath( pi.labelArea ); + } + d->reverseMapper.addPolygon( pi.index.row(), pi.index.column(), + polygonFromPainterPath( pi.labelArea ) ); + } + d->labelPaintCache.clear(); + d->startAngles.clear(); + d->angleLens.clear(); +} + +#if defined ( Q_OS_WIN) +#define trunc(x) ((int)(x)) +#endif + +QRectF PieDiagram::explodedDrawPosition( const QRectF& drawPosition, uint slice ) const +{ + const QModelIndex index( model()->index( 0, slice, rootIndex() ) ); // checked + const PieAttributes attrs( pieAttributes( index ) ); + + QRectF adjustedDrawPosition = drawPosition; + if ( attrs.explode() ) { + qreal startAngle = d->startAngles[ slice ]; + qreal angleLen = d->angleLens[ slice ]; + qreal explodeAngle = ( DEGTORAD( startAngle + angleLen / 2.0 ) ); + qreal explodeDistance = attrs.explodeFactor() * d->size / 2.0; + + adjustedDrawPosition.translate( explodeDistance * cos( explodeAngle ), + explodeDistance * - sin( explodeAngle ) ); + } + return adjustedDrawPosition; +} + +/** + Internal method that draws one of the slices in a pie chart. + + \param painter the QPainter to draw in + \param dataset the dataset to draw the pie for + \param slice the slice to draw + \param threeDPieHeight the height of the three dimensional effect + */ +void PieDiagram::drawSlice( QPainter* painter, const QRectF& drawPosition, uint slice) +{ + // Is there anything to draw at all? + if ( d->angleLens[ slice ] == 0.0 ) { + return; + } + const QRectF adjustedDrawPosition = explodedDrawPosition( drawPosition, slice ); + draw3DEffect( painter, adjustedDrawPosition, slice ); + drawSliceSurface( painter, adjustedDrawPosition, slice ); +} + +/** + Internal method that draws the surface of one of the slices in a pie chart. + + \param painter the QPainter to draw in + \param dataset the dataset to draw the slice for + \param slice the slice to draw + */ +void PieDiagram::drawSliceSurface( QPainter* painter, const QRectF& drawPosition, uint slice ) +{ + // Is there anything to draw at all? + const qreal angleLen = d->angleLens[ slice ]; + const qreal startAngle = d->startAngles[ slice ]; + const QModelIndex index( model()->index( 0, slice, rootIndex() ) ); // checked + + const PieAttributes attrs( pieAttributes( index ) ); + const ThreeDPieAttributes threeDAttrs( threeDPieAttributes( index ) ); + + painter->setRenderHint ( QPainter::Antialiasing ); + QBrush br = brush( index ); + if ( threeDAttrs.isEnabled() ) { + br = threeDAttrs.threeDBrush( br, drawPosition ); + } + painter->setBrush( br ); + + QPen pen = this->pen( index ); + if ( threeDAttrs.isEnabled() ) { + pen.setColor( Qt::black ); + } + painter->setPen( pen ); + + if ( angleLen == 360 ) { + // full circle, avoid nasty line in the middle + painter->drawEllipse( drawPosition ); + + //Add polygon to Reverse mapper for showing tool tips. + QPolygonF poly( drawPosition ); + d->reverseMapper.addPolygon( index.row(), index.column(), poly ); + } else { + // draw the top of this piece + // Start with getting the points for the arc. + const int arcPoints = static_cast(trunc( angleLen / granularity() )); + QPolygonF poly( arcPoints + 2 ); + qreal degree = 0.0; + int iPoint = 0; + bool perfectMatch = false; + + while ( degree <= angleLen ) { + poly[ iPoint ] = pointOnEllipse( drawPosition, startAngle + degree ); + //qDebug() << degree << angleLen << poly[ iPoint ]; + perfectMatch = ( degree == angleLen ); + degree += granularity(); + ++iPoint; + } + // if necessary add one more point to fill the last small gap + if ( !perfectMatch ) { + poly[ iPoint ] = pointOnEllipse( drawPosition, startAngle + angleLen ); + + // add the center point of the piece + poly.append( drawPosition.center() ); + } else { + poly[ iPoint ] = drawPosition.center(); + } + //find the value and paint it + //fix value position + d->reverseMapper.addPolygon( index.row(), index.column(), poly ); + + painter->drawPolygon( poly ); + } +} + +// calculate the position points for the label and pass them to addLabel() +void PieDiagram::addSliceLabel( LabelPaintCache* lpc, const QRectF& drawPosition, uint slice ) +{ + const qreal angleLen = d->angleLens[ slice ]; + const qreal startAngle = d->startAngles[ slice ]; + const QModelIndex index( model()->index( 0, slice, rootIndex() ) ); // checked + const qreal sum = valueTotals(); + + // Position points are calculated relative to the slice. + // They are calculated as if the slice was 'standing' on its tip and the rim was up, + // so North is the middle (also highest part) of the rim and South is the tip of the slice. + + const QPointF south = drawPosition.center(); + const QPointF southEast = south; + const QPointF southWest = south; + const QPointF north = pointOnEllipse( drawPosition, startAngle + angleLen / 2.0 ); + + const QPointF northEast = pointOnEllipse( drawPosition, startAngle ); + const QPointF northWest = pointOnEllipse( drawPosition, startAngle + angleLen ); + QPointF center = ( south + north ) / 2.0; + const QPointF east = ( south + northEast ) / 2.0; + const QPointF west = ( south + northWest ) / 2.0; + + PositionPoints points( center, northWest, north, northEast, east, southEast, south, southWest, west ); + qreal topAngle = startAngle - 90; + if ( topAngle < 0.0 ) { + topAngle += 360.0; + } + + points.setDegrees( KDChartEnums::PositionEast, topAngle ); + points.setDegrees( KDChartEnums::PositionNorthEast, topAngle ); + points.setDegrees( KDChartEnums::PositionWest, topAngle + angleLen ); + points.setDegrees( KDChartEnums::PositionNorthWest, topAngle + angleLen ); + points.setDegrees( KDChartEnums::PositionCenter, topAngle + angleLen / 2.0 ); + points.setDegrees( KDChartEnums::PositionNorth, topAngle + angleLen / 2.0 ); + + qreal favoriteTextAngle = 0.0; + if ( autoRotateLabels() ) { + favoriteTextAngle = - ( startAngle + angleLen / 2 ) + 90.0; + while ( favoriteTextAngle <= 0.0 ) { + favoriteTextAngle += 360.0; + } + // flip the label when upside down + if ( favoriteTextAngle > 90.0 && favoriteTextAngle < 270.0 ) { + favoriteTextAngle = favoriteTextAngle - 180.0; + } + // negative angles can have special meaning in addLabel; otherwise they work fine + if ( favoriteTextAngle <= 0.0 ) { + favoriteTextAngle += 360.0; + } + } + + d->addLabel( lpc, index, 0, points, Position::Center, Position::Center, + angleLen * sum / 360, favoriteTextAngle ); +} + +static bool doSpansOverlap( qreal s1Start, qreal s1End, qreal s2Start, qreal s2End ) +{ + if ( s1Start < s2Start ) { + return s1End >= s2Start; + } else { + return s1Start <= s2End; + } +} + +static bool doArcsOverlap( qreal a1Start, qreal a1End, qreal a2Start, qreal a2End ) +{ + Q_ASSERT( a1Start >= 0 && a1Start <= 360 && a1End >= 0 && a1End <= 360 && + a2Start >= 0 && a2Start <= 360 && a2End >= 0 && a2End <= 360 ); + // all of this could probably be done better... + if ( a1End < a1Start ) { + a1End += 360; + } + if ( a2End < a2Start ) { + a2End += 360; + } + + if ( doSpansOverlap( a1Start, a1End, a2Start, a2End ) ) { + return true; + } + if ( a1Start > a2Start ) { + return doSpansOverlap( a1Start - 360.0, a1End - 360.0, a2Start, a2End ); + } else { + return doSpansOverlap( a1Start + 360.0, a1End + 360.0, a2Start, a2End ); + } +} + +/** + Internal method that draws the shadow creating the 3D effect of a pie + + \param painter the QPainter to draw in + \param drawPosition the position to draw at + \param slice the slice to draw the shadow for + */ +void PieDiagram::draw3DEffect( QPainter* painter, const QRectF& drawPosition, uint slice ) +{ + const QModelIndex index( model()->index( 0, slice, rootIndex() ) ); // checked + const ThreeDPieAttributes threeDAttrs( threeDPieAttributes( index ) ); + if ( ! threeDAttrs.isEnabled() ) { + return; + } + + // NOTE: We cannot optimize away drawing some of the effects (even + // when not exploding), because some of the pies might be left out + // in future versions which would make some of the normally hidden + // pies visible. Complex hidden-line algorithms would be much more + // expensive than just drawing for nothing. + + // No need to save the brush, will be changed on return from this + // method anyway. + const QBrush brush = this->brush( model()->index( 0, slice, rootIndex() ) ); // checked + if ( threeDAttrs.useShadowColors() ) { + painter->setBrush( QBrush( brush.color().darker() ) ); + } else { + painter->setBrush( brush ); + } + + qreal startAngle = d->startAngles[ slice ]; + qreal endAngle = startAngle + d->angleLens[ slice ]; + // Normalize angles + while ( startAngle >= 360 ) + startAngle -= 360; + while ( endAngle >= 360 ) + endAngle -= 360; + Q_ASSERT( startAngle >= 0 && startAngle <= 360 ); + Q_ASSERT( endAngle >= 0 && endAngle <= 360 ); + + // positive pie height: absolute value + // negative pie height: relative value + const int depth = threeDAttrs.depth() >= 0.0 ? threeDAttrs.depth() : -threeDAttrs.depth() / 100.0 * drawPosition.height(); + + if ( startAngle == endAngle || startAngle == endAngle - 360 ) { // full circle + draw3dOuterRim( painter, drawPosition, depth, 180, 360 ); + } else { + if ( doArcsOverlap( startAngle, endAngle, 180, 360 ) ) { + draw3dOuterRim( painter, drawPosition, depth, startAngle, endAngle ); + } + + if ( startAngle >= 270 || startAngle <= 90 ) { + draw3dCutSurface( painter, drawPosition, depth, startAngle ); + } + if ( endAngle >= 90 && endAngle <= 270 ) { + draw3dCutSurface( painter, drawPosition, depth, endAngle ); + } + } +} + + +/** + Internal method that draws the cut surface of a slice (think of a real pie cut into slices) + in 3D mode, for surfaces that are facing the observer. + + \param painter the QPainter to draw in + \param rect the position to draw at + \param threeDHeight the height of the shadow + \param angle the angle of the segment + */ +void PieDiagram::draw3dCutSurface( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal angle ) +{ + QPolygonF poly( 4 ); + const QPointF center = rect.center(); + const QPointF circlePoint = pointOnEllipse( rect, angle ); + poly[0] = center; + poly[1] = circlePoint; + poly[2] = QPointF( circlePoint.x(), circlePoint.y() + threeDHeight ); + poly[3] = QPointF( center.x(), center.y() + threeDHeight ); + // TODO: add polygon to ReverseMapper + painter->drawPolygon( poly ); +} + +/** + Internal method that draws the outer rim of a slice when the rim is facing the observer. + + \param painter the QPainter to draw in + \param rect the position to draw at + \param threeDHeight the height of the shadow + \param startAngle the starting angle of the segment + \param endAngle the ending angle of the segment + */ +void PieDiagram::draw3dOuterRim( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal startAngle, + qreal endAngle ) +{ + // Start with getting the points for the inner arc. + if ( endAngle < startAngle ) { + endAngle += 360; + } + startAngle = qMax( startAngle, qreal( 180.0 ) ); + endAngle = qMin( endAngle, qreal( 360.0 ) ); + + int numHalfPoints = trunc( ( endAngle - startAngle ) / granularity() ) + 1; + if ( numHalfPoints < 2 ) { + return; + } + + QPolygonF poly( numHalfPoints ); + + qreal degree = endAngle; + int iPoint = 0; + bool perfectMatch = false; + while ( degree >= startAngle ) { + poly[ numHalfPoints - iPoint - 1 ] = pointOnEllipse( rect, degree ); + + perfectMatch = (degree == startAngle); + degree -= granularity(); + ++iPoint; + } + // if necessary add one more point to fill the last small gap + if ( !perfectMatch ) { + poly.prepend( pointOnEllipse( rect, startAngle ) ); + ++numHalfPoints; + } + + poly.resize( numHalfPoints * 2 ); + + // Now copy these arcs again into the final array, but in the + // opposite direction and moved down by the 3D height. + for ( int i = numHalfPoints - 1; i >= 0; --i ) { + QPointF pointOnFirstArc( poly[ i ] ); + pointOnFirstArc.setY( pointOnFirstArc.y() + threeDHeight ); + poly[ numHalfPoints * 2 - i - 1 ] = pointOnFirstArc; + } + + // TODO: Add polygon to ReverseMapper + painter->drawPolygon( poly ); +} + +/** + Internal method that finds the slice that is located at the position specified by \c angle. + + \param angle the angle at which to search for a slice + \return the number of the slice found + */ +uint PieDiagram::findSliceAt( qreal angle, int colCount ) +{ + for ( int i = 0; i < colCount; ++i ) { + qreal endseg = d->startAngles[ i ] + d->angleLens[ i ]; + if ( d->startAngles[ i ] <= angle && endseg >= angle ) { + return i; + } + } + + // If we have not found it, try wrap around + // but only if the current searched angle is < 360 degree + if ( angle < 360 ) + return findSliceAt( angle + 360, colCount ); + // otherwise - what ever went wrong - we return 0 + return 0; +} + + +/** + Internal method that finds the slice that is located to the left of \c slice. + + \param slice the slice to start the search from + \return the number of the pie to the left of \c pie + */ +uint PieDiagram::findLeftSlice( uint slice, int colCount ) +{ + if ( slice == 0 ) { + if ( colCount > 1 ) { + return colCount - 1; + } else { + return 0; + } + } else { + return slice - 1; + } +} + + +/** + Internal method that finds the slice that is located to the right of \c slice. + + \param slice the slice to start the search from + \return the number of the slice to the right of \c slice + */ +uint PieDiagram::findRightSlice( uint slice, int colCount ) +{ + int rightSlice = slice + 1; + if ( rightSlice == colCount ) { + rightSlice = 0; + } + return rightSlice; +} + + +/** + * Auxiliary method returning a point to a given boundary + * rectangle of the enclosed ellipse and an angle. + */ +QPointF PieDiagram::pointOnEllipse( const QRectF& boundingBox, qreal angle ) +{ + qreal angleRad = DEGTORAD( angle ); + qreal cosAngle = cos( angleRad ); + qreal sinAngle = -sin( angleRad ); + qreal posX = cosAngle * boundingBox.width() / 2.0; + qreal posY = sinAngle * boundingBox.height() / 2.0; + return QPointF( posX + boundingBox.center().x(), + posY + boundingBox.center().y() ); + +} + +/*virtual*/ +qreal PieDiagram::valueTotals() const +{ + if ( !model() ) + return 0; + const int colCount = columnCount(); + qreal total = 0.0; + Q_ASSERT( model()->rowCount() >= 1 ); + for ( int j = 0; j < colCount; ++j ) { + total += qAbs(model()->data( model()->index( 0, j, rootIndex() ) ).toReal()); // checked + } + return total; +} + +/*virtual*/ +qreal PieDiagram::numberOfValuesPerDataset() const +{ + return model() ? model()->columnCount( rootIndex() ) : 0.0; +} + +/*virtual*/ +qreal PieDiagram::numberOfGridRings() const +{ + return 1; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.h new file mode 100644 index 00000000..805e5280 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPIEDIAGRAM_H +#define KDCHARTPIEDIAGRAM_H + +#include "KDChartAbstractPieDiagram.h" + +namespace KDChart { + + class LabelPaintCache; + +/** + * @brief PieDiagram defines a common pie diagram + */ +class KDCHART_EXPORT PieDiagram : public AbstractPieDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( PieDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( PieDiagram, PolarCoordinatePlane ) + +public: + explicit PieDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~PieDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint( PaintContext* paintContext ); + +public: + /** + * Describes which decorations are painted around data labels. + */ + enum LabelDecoration { + NoDecoration = 0, ///< No decoration + FrameDecoration = 1, ///< A rectangular frame is painted around the label text + LineFromSliceDecoration = 2 ///< A line is drawn from the pie slice to its label + }; + Q_DECLARE_FLAGS( LabelDecorations, LabelDecoration ) + /// Set the decorations to be painted around data labels according to @p decorations. + void setLabelDecorations( LabelDecorations decorations ); + /// Return the decorations to be painted around data labels. + LabelDecorations labelDecorations() const; + + /// If @p enabled is set to true, labels that would overlap will be shuffled to avoid overlap. + /// \note Collision avoidance may allow labels to be closer than AbstractDiagram with + /// allowOverlappingDataValueTexts() == false, so you should usually also call + /// setAllowOverlappingDataValueTexts( true ) if you enable this feature. + void setLabelCollisionAvoidanceEnabled( bool enabled ); + /// Return whether overlapping labels will be moved to until they don't overlap anymore. + bool isLabelCollisionAvoidanceEnabled() const; + + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + virtual PieDiagram * clone() const; + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent( QPaintEvent* ); + void resizeEvent( QResizeEvent* ); + +private: + // ### move to private class? + void placeLabels( PaintContext* paintContext ); + // Solve problems with label overlap by changing label positions inside d->labelPaintCache. + void shuffleLabels( QRectF* textBoundingRect ); + void paintInternal( PaintContext* paintContext ); + void drawSlice( QPainter* painter, const QRectF& drawPosition, uint slice ); + void drawSliceSurface( QPainter* painter, const QRectF& drawPosition, uint slice ); + void addSliceLabel( LabelPaintCache* lpc, const QRectF& drawPosition, uint slice ); + void draw3DEffect( QPainter* painter, const QRectF& drawPosition, uint slice ); + void draw3dCutSurface( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal angle ); + void draw3dOuterRim( QPainter* painter, + const QRectF& rect, + qreal threeDHeight, + qreal startAngle, + qreal endAngle ); + void calcSliceAngles(); + void calcPieSize( const QRectF &contentsRect ); + QRectF twoDPieRect( const QRectF &contentsRect, const ThreeDPieAttributes& threeDAttrs ) const; + QRectF explodedDrawPosition( const QRectF& drawPosition, uint slice ) const; + uint findSliceAt( qreal angle, int columnCount ); + uint findLeftSlice( uint slice, int columnCount ); + uint findRightSlice( uint slice, int columnCount ); + QPointF pointOnEllipse( const QRectF& boundingBox, qreal angle ); +}; // End of class KDChartPieDiagram + +Q_DECLARE_OPERATORS_FOR_FLAGS( PieDiagram::LabelDecorations ) + +} +#endif // KDCHARTPIEDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram_p.h new file mode 100644 index 00000000..aa509ef6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPieDiagram_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPIEDIAGRAM_P_H +#define KDCHARTPIEDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractPieDiagram_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class PieDiagram::Private : public AbstractPieDiagram::Private +{ + friend class PieDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractPieDiagram::Private( rhs ) + { + // just for consistency + } + +protected: + // this information needed temporarily at drawing time + QVector< qreal > startAngles; + QVector< qreal > angleLens; + qreal size; + LabelPaintCache labelPaintCache; + PieDiagram::LabelDecorations labelDecorations; + bool isCollisionAvoidanceEnabled; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( PieDiagram, AbstractPieDiagram, PolarCoordinatePlane ) + +} + +#endif /* KDCHARTPIEDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.cpp new file mode 100644 index 00000000..f35000f3 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.cpp @@ -0,0 +1,381 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPolarCoordinatePlane.h" +#include "KDChartPolarCoordinatePlane_p.h" + +#include "KDChartPainterSaver_p.h" +#include "KDChartChart.h" +#include "KDChartPaintContext.h" +#include "KDChartAbstractDiagram.h" +#include "KDChartAbstractPolarDiagram.h" +#include "KDChartPolarDiagram.h" + +#include + +#include +#include +#include +#include +#include + +#include + +using namespace KDChart; + +#define d d_func() + +PolarCoordinatePlane::PolarCoordinatePlane ( Chart* parent ) + : AbstractCoordinatePlane ( new Private(), parent ) +{ + // this bloc left empty intentionally +} + +PolarCoordinatePlane::~PolarCoordinatePlane() +{ + // this bloc left empty intentionally +} + +void PolarCoordinatePlane::init() +{ + // this bloc left empty intentionally +} + +void PolarCoordinatePlane::addDiagram ( AbstractDiagram* diagram ) +{ + Q_ASSERT_X ( dynamic_cast ( diagram ), + "PolarCoordinatePlane::addDiagram", "Only polar" + "diagrams can be added to a polar coordinate plane!" ); + AbstractCoordinatePlane::addDiagram ( diagram ); + connect ( diagram, SIGNAL ( layoutChanged ( AbstractDiagram* ) ), + SLOT ( slotLayoutChanged ( AbstractDiagram* ) ) ); + +} + +void PolarCoordinatePlane::paint ( QPainter* painter ) +{ + AbstractDiagramList diags = diagrams(); + if ( d->coordinateTransformations.size() != diags.size() ) { + // diagrams have not been set up yet + return; + } + // need at least one so d->currentTransformation can be a valid pointer + Q_ASSERT( !d->coordinateTransformations.isEmpty() ); + + PaintContext ctx; + ctx.setPainter ( painter ); + ctx.setCoordinatePlane ( this ); + ctx.setRectangle ( geometry() /*d->contentRect*/ ); + + // 1. ask (only!) PolarDiagrams if they need additional space for data labels / data comments + + const qreal oldZoomX = zoomFactorX(); + const qreal oldZoomY = zoomFactorY(); + d->newZoomX = oldZoomX; + d->newZoomY = oldZoomY; + for ( int i = 0; i < diags.size(); i++ ) { + d->currentTransformation = & ( d->coordinateTransformations[i] ); + qreal zoomX; + qreal zoomY; + PolarDiagram* polarDia = dynamic_cast ( diags[i] ); + if ( polarDia ) { + polarDia->paint( &ctx, true, zoomX, zoomY ); + d->newZoomX = qMin( d->newZoomX, zoomX ); + d->newZoomY = qMin( d->newZoomY, zoomY ); + } + } + + if ( d->newZoomX != oldZoomX || d->newZoomY != oldZoomY ) { + //qDebug() << "new zoom:" << d->newZoomY << " old zoom:" << oldZoomY; + d->currentTransformation = 0; // not painting anymore until we get called again + QMetaObject::invokeMethod( this, "adjustZoomAndRepaint", Qt::QueuedConnection ); + return; + } + + // 2. there was room enough for the labels, so start drawing + + // paint the coordinate system rulers: + d->currentTransformation = &d->coordinateTransformations.first(); + d->grid->drawGrid( &ctx ); + + // paint the diagrams which will re-use their DataValueTextInfoList(s) filled in step 1: + for ( int i = 0; i < diags.size(); i++ ) { + d->currentTransformation = & ( d->coordinateTransformations[i] ); + PainterSaver painterSaver( painter ); + PolarDiagram* polarDia = dynamic_cast( diags[i] ); + if ( polarDia ) { + qreal dummy1, dummy2; + polarDia->paint( &ctx, false, dummy1, dummy2 ); + } else { + diags[i]->paint( &ctx ); + } + } + d->currentTransformation = 0; +} + + +void PolarCoordinatePlane::adjustZoomAndRepaint() +{ + const qreal newZoom = qMin(d->newZoomX, d->newZoomY); + setZoomFactors(newZoom, newZoom); + update(); +} + + +void PolarCoordinatePlane::resizeEvent ( QResizeEvent* ) +{ + d->initialResizeEventReceived = true; + layoutDiagrams(); +} + +void PolarCoordinatePlane::layoutDiagrams() +{ + // the rectangle the diagrams cover in the *plane*: + // (Why -3? We save 1px on each side for the antialiased drawing, and + // respect the way QPainter calculates the width of a painted rect (the + // size is the rectangle size plus the pen width). This way, most clipping + // for regular pens should be avoided. When pens with a penWidth or larger + // than 1 are used, this may not b sufficient. + const QRect rect( areaGeometry() ); + d->contentRect = QRectF ( 1, 1, rect.width() - 3, rect.height() - 3 ); + + const ZoomParameters zoom = d->coordinateTransformations.isEmpty() ? ZoomParameters() + : d->coordinateTransformations.front().zoom; + // FIXME distribute space according to options: + const qreal oldStartPosition = startPosition(); + d->coordinateTransformations.clear(); + Q_FOREACH( AbstractDiagram* diagram, diagrams() ) + { + AbstractPolarDiagram *polarDiagram = dynamic_cast( diagram ); + Q_ASSERT( polarDiagram ); + QPair dataBoundariesPair = polarDiagram->dataBoundaries(); + + const qreal angleUnit = 360 / polarDiagram->valueTotals(); +//qDebug() << "--------------------------------------------------------"; + const qreal radius = qAbs( dataBoundariesPair.first.y() ) + dataBoundariesPair.second.y(); +//qDebug() << radius <<"="<contentRect.width(); + const qreal planeHeight = d->contentRect.height(); + const qreal radiusUnit = qMin( planeWidth, planeHeight ) / diagramWidth; +//qDebug() << radiusUnit <<"=" << "qMin( "<contentRect.topLeft(); + + CoordinateTransformation diagramTransposition; + diagramTransposition.originTranslation = coordinateOrigin; + diagramTransposition.radiusUnit = radiusUnit; + diagramTransposition.angleUnit = angleUnit; + diagramTransposition.startPosition = oldStartPosition; + diagramTransposition.zoom = zoom; + diagramTransposition.minValue = dataBoundariesPair.first.y() < 0 ? dataBoundariesPair.first.y() : 0.0; + d->coordinateTransformations.append( diagramTransposition ); + } + update(); +} + +const QPointF PolarCoordinatePlane::translate( const QPointF& diagramPoint ) const +{ + Q_ASSERT_X ( d->currentTransformation != 0, "PolarCoordinatePlane::translate", + "Only call translate() from within paint()." ); + return d->currentTransformation->translate ( diagramPoint ); +} + +const QPointF PolarCoordinatePlane::translatePolar( const QPointF& diagramPoint ) const +{ + Q_ASSERT_X ( d->currentTransformation != 0, "PolarCoordinatePlane::translate", + "Only call translate() from within paint()." ); + return d->currentTransformation->translatePolar ( diagramPoint ); +} + +qreal PolarCoordinatePlane::angleUnit() const +{ + Q_ASSERT_X ( d->currentTransformation != 0, "PolarCoordinatePlane::angleUnit", + "Only call angleUnit() from within paint()." ); + return d->currentTransformation->angleUnit; +} + +qreal PolarCoordinatePlane::radiusUnit() const +{ + Q_ASSERT_X ( d->currentTransformation != 0, "PolarCoordinatePlane::radiusUnit", + "Only call radiusUnit() from within paint()." ); + return d->currentTransformation->radiusUnit; +} + +void PolarCoordinatePlane::slotLayoutChanged ( AbstractDiagram* ) +{ + if ( d->initialResizeEventReceived ) layoutDiagrams(); +} + +void PolarCoordinatePlane::setStartPosition( qreal degrees ) +{ + Q_ASSERT_X ( diagram(), "PolarCoordinatePlane::setStartPosition", + "setStartPosition() needs a diagram to be associated to the plane." ); + for ( CoordinateTransformationList::iterator it = d->coordinateTransformations.begin(); + it != d->coordinateTransformations.end(); + ++it ) + { + CoordinateTransformation& trans = *it; + trans.startPosition = degrees; + } +} + +qreal PolarCoordinatePlane::startPosition() const +{ + return d->coordinateTransformations.isEmpty() + ? 0.0 + : d->coordinateTransformations.first().startPosition; +} + +qreal PolarCoordinatePlane::zoomFactorX() const +{ + return d->coordinateTransformations.isEmpty() + ? 1.0 + : d->coordinateTransformations.first().zoom.xFactor; +} + +qreal PolarCoordinatePlane::zoomFactorY() const +{ + return d->coordinateTransformations.isEmpty() + ? 1.0 + : d->coordinateTransformations.first().zoom.yFactor; +} + +void PolarCoordinatePlane::setZoomFactors( qreal factorX, qreal factorY ) +{ + setZoomFactorX( factorX ); + setZoomFactorY( factorY ); +} + +void PolarCoordinatePlane::setZoomFactorX( qreal factor ) +{ + for ( CoordinateTransformationList::iterator it = d->coordinateTransformations.begin(); + it != d->coordinateTransformations.end(); + ++it ) + { + CoordinateTransformation& trans = *it; + trans.zoom.xFactor = factor; + } +} + +void PolarCoordinatePlane::setZoomFactorY( qreal factor ) +{ + for ( CoordinateTransformationList::iterator it = d->coordinateTransformations.begin(); + it != d->coordinateTransformations.end(); + ++it ) + { + CoordinateTransformation& trans = *it; + trans.zoom.yFactor = factor; + } +} + +QPointF PolarCoordinatePlane::zoomCenter() const +{ + return d->coordinateTransformations.isEmpty() + ? QPointF( 0.5, 0.5 ) + : QPointF( d->coordinateTransformations.first().zoom.xCenter, d->coordinateTransformations.first().zoom.yCenter ); +} + +void PolarCoordinatePlane::setZoomCenter( const QPointF& center ) +{ + for ( CoordinateTransformationList::iterator it = d->coordinateTransformations.begin(); + it != d->coordinateTransformations.end(); + ++it ) + { + CoordinateTransformation& trans = *it; + trans.zoom.xCenter = center.x(); + trans.zoom.yCenter = center.y(); + } +} + +DataDimensionsList PolarCoordinatePlane::getDataDimensionsList() const +{ + DataDimensionsList l; + + //FIXME(khz): do the real calculation + + return l; +} + +void KDChart::PolarCoordinatePlane::setGridAttributes( + bool circular, + const GridAttributes& a ) +{ + if ( circular ) + d->gridAttributesCircular = a; + else + d->gridAttributesSagittal = a; + setHasOwnGridAttributes( circular, true ); + update(); + emit propertiesChanged(); +} + +void KDChart::PolarCoordinatePlane::resetGridAttributes( + bool circular ) +{ + setHasOwnGridAttributes( circular, false ); + update(); +} + +const GridAttributes KDChart::PolarCoordinatePlane::gridAttributes( + bool circular ) const +{ + if ( hasOwnGridAttributes( circular ) ) { + if ( circular ) + return d->gridAttributesCircular; + else + return d->gridAttributesSagittal; + } else { + return globalGridAttributes(); + } +} + +QRectF KDChart::PolarCoordinatePlane::Private::contentsRect( const KDChart::PolarCoordinatePlane* plane ) +{ + QRectF contentsRect; + QPointF referencePointAtTop = plane->translate( QPointF( 1, 0 ) ); + QPointF temp = plane->translate( QPointF( 0, 0 ) ) - referencePointAtTop; + const qreal offset = temp.y(); + referencePointAtTop.setX( referencePointAtTop.x() - offset ); + contentsRect.setTopLeft( referencePointAtTop ); + contentsRect.setBottomRight( referencePointAtTop + QPointF( 2.0 * offset, 2.0 * offset) ); + return contentsRect; +} + +void KDChart::PolarCoordinatePlane::setHasOwnGridAttributes( + bool circular, bool on ) +{ + if ( circular ) + d->hasOwnGridAttributesCircular = on; + else + d->hasOwnGridAttributesSagittal = on; + emit propertiesChanged(); +} + +bool KDChart::PolarCoordinatePlane::hasOwnGridAttributes( + bool circular ) const +{ + return + ( circular ) + ? d->hasOwnGridAttributesCircular + : d->hasOwnGridAttributesSagittal; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.h new file mode 100644 index 00000000..05004f29 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane.h @@ -0,0 +1,167 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_POLAR_COORDINATEPLANE_H +#define KDCHART_POLAR_COORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class Chart; + class PaintContext; + + /** + * @brief Polar coordinate plane + */ + class KDCHART_EXPORT PolarCoordinatePlane : public AbstractCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( PolarCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( PolarCoordinatePlane, Chart* ) + + public: + struct CoordinateTransformation; + typedef QList CoordinateTransformationList; + + explicit PolarCoordinatePlane ( Chart* parent = 0 ); + ~PolarCoordinatePlane(); + + void addDiagram ( AbstractDiagram* diagram ); + + const QPointF translate ( const QPointF& diagramPoint ) const; + const QPointF translatePolar ( const QPointF& diagramPoint ) const; + + /** \brief Specify the rotation of the coordinate plane. + * + * In a pie diagram this indicates the position where the first pie starts, + * in a polar diagram it specifies the Zero position of the circular axis: + * + * \image html polar-plane-start-position.png "Illustration of \"start position\" property" + * + * \sa startPosition + */ + void setStartPosition( qreal degrees ); + /** Retrieve the rotation of the coordinate plane. + * \sa setStartPosition + */ + qreal startPosition() const; + + virtual qreal zoomFactorX() const; + virtual qreal zoomFactorY() const; + + virtual void setZoomFactors( qreal factorX, qreal factorY ); + virtual void setZoomFactorX( qreal factor ); + virtual void setZoomFactorY( qreal factor ); + + virtual QPointF zoomCenter() const; + + virtual void setZoomCenter( const QPointF& center ); + + /** + * Set the attributes to be used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * + * To disable circular grid painting, for example, your code should like this: + * \code + * GridAttributes ga = plane->gridAttributes( bool ); + * ga.setGridVisible( false ); + * plane-setGridAttributes( bool, ga ); + * \endcode + * + * \note setGridAttributes overwrites the global attributes that + * were set by AbstractCoordinatePlane::setGlobalGridAttributes. + * To re-activate these global attributes you can call + * resetGridAttributes. + * + * \sa resetGridAttributes, gridAttributes + * \sa AbstractCoordinatePlane::setGlobalGridAttributes + * \sa hasOwnGridAttributes + */ + void setGridAttributes( bool circular, const GridAttributes & ); + + /** + * Reset the attributes to be used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * By calling this method you specify that the global attributes set by + * AbstractCoordinatePlane::setGlobalGridAttributes be used. + * + * \sa setGridAttributes, gridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + void resetGridAttributes( bool circular ); + + /** + * \return The attributes used for grid lines drawn in circular + * direction (or in sagittal direction, resp.). + * + * \note This function always returns a valid set of grid attributes: + * If no special grid attributes were set for this direction + * the global attributes are returned, as returned by + * AbstractCoordinatePlane::globalGridAttributes. + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + * \sa hasOwnGridAttributes + */ + const GridAttributes gridAttributes( bool circular ) const; + + /** + * \return Returns whether the grid attributes have been set for the + * respective direction via setGridAttributes( bool circular ). + * + * If false, the grid will use the global attributes set + * by AbstractCoordinatePlane::globalGridAttributes (or the default + * attributes, resp.) + * + * \sa setGridAttributes + * \sa resetGridAttributes + * \sa AbstractCoordinatePlane::globalGridAttributes + */ + bool hasOwnGridAttributes( bool circular ) const; + + qreal angleUnit() const; + qreal radiusUnit() const; + + /** reimpl */ + virtual void paint( QPainter* ); + + protected: + virtual DataDimensionsList getDataDimensionsList() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + + void layoutDiagrams(); + protected Q_SLOTS: + void slotLayoutChanged( AbstractDiagram* diagram ); + void adjustZoomAndRepaint(); + + private: + void setHasOwnGridAttributes( bool circular, bool on ); + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane_p.h new file mode 100644 index 00000000..3c61e458 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarCoordinatePlane_p.h @@ -0,0 +1,142 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARCOORDINATEPLANE_P_H +#define KDCHARTPOLARCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractCoordinatePlane_p.h" +#include "KDChartZoomParameters.h" +#include "KDChartPolarGrid.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +struct PolarCoordinatePlane::CoordinateTransformation +{ + // represents the distance of the diagram coordinate origin to the + // origin of the coordinate plane space: + QPointF originTranslation; + qreal radiusUnit; + qreal angleUnit; + qreal minValue; + + qreal startPosition; + ZoomParameters zoom; + + static QPointF polarToCartesian( qreal R, qreal theta ) + { + // de-inline me + return QPointF( R * cos( DEGTORAD( theta ) ), R * sin( DEGTORAD( theta ) ) ); + } + + inline const QPointF translate( const QPointF& diagramPoint ) const + { + // ### de-inline me + // calculate the polar coordinates + const qreal x = (diagramPoint.x() * radiusUnit) - (minValue * radiusUnit); +//qDebug() << x << "=" << diagramPoint.x() << "*" << radiusUnit << " startPosition: " << startPosition; + const qreal y = ( diagramPoint.y() * -angleUnit) - 90.0 - startPosition; + // convert to cartesian coordinates + QPointF cartesianPoint = polarToCartesian( x, y ); + cartesianPoint.setX( cartesianPoint.x() * zoom.xFactor ); + cartesianPoint.setY( cartesianPoint.y() * zoom.yFactor ); + + QPointF newOrigin = originTranslation; + qreal minOrigin = qMin( newOrigin.x(), newOrigin.y() ); + newOrigin.setX( newOrigin.x() + minOrigin * ( 1 - zoom.xCenter * 2 ) * zoom.xFactor ); + newOrigin.setY( newOrigin.y() + minOrigin * ( 1 - zoom.yCenter * 2 ) * zoom.yFactor ); + + return newOrigin + cartesianPoint; + } + + inline const QPointF translatePolar( const QPointF& diagramPoint ) const + { + // ### de-inline me + return QPointF( diagramPoint.x() * angleUnit, diagramPoint.y() * radiusUnit ); + } +}; + +class PolarCoordinatePlane::Private : public AbstractCoordinatePlane::Private +{ + friend class PolarCoordinatePlane; +public: + explicit Private() + : currentTransformation(0) + , initialResizeEventReceived(false ) + , hasOwnGridAttributesCircular ( false ) + , hasOwnGridAttributesSagittal ( false ) + {} + + virtual ~Private() { } + + virtual void initialize() + { + grid = new PolarGrid(); + } + + static QRectF contentsRect( const PolarCoordinatePlane* plane ); + + // the coordinate plane will calculate coordinate transformations for all + // diagrams and store them here: + CoordinateTransformationList coordinateTransformations; + // when painting, this pointer selects the coordinate transformation for + // the current diagram: + CoordinateTransformation* currentTransformation; + // the reactangle occupied by the diagrams, in plane coordinates + QRectF contentRect; + // true after the first resize event came in + bool initialResizeEventReceived; + + // true after setGridAttributes( Qt::Orientation ) was used, + // false if resetGridAttributes( Qt::Orientation ) was called + bool hasOwnGridAttributesCircular; + bool hasOwnGridAttributesSagittal; + + GridAttributes gridAttributesCircular; + GridAttributes gridAttributesSagittal; + + qreal newZoomX, newZoomY; +}; + + + +KDCHART_IMPL_DERIVED_PLANE(PolarCoordinatePlane, AbstractCoordinatePlane) + +} + +#endif /* KDCHARTBARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.cpp new file mode 100644 index 00000000..32b2f346 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.cpp @@ -0,0 +1,308 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPolarDiagram.h" +#include "KDChartPolarDiagram_p.h" + +#include +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" + +#include + +using namespace KDChart; + +PolarDiagram::Private::Private() : + rotateCircularLabels( false ), + closeDatasets( false ) +{ +} + +PolarDiagram::Private::~Private() {} + +#define d d_func() + +PolarDiagram::PolarDiagram( QWidget* parent, PolarCoordinatePlane* plane ) : + AbstractPolarDiagram( new Private( ), parent, plane ) +{ + //init(); +} + +PolarDiagram::~PolarDiagram() +{ +} + + +void PolarDiagram::init() +{ + setShowDelimitersAtPosition( Position::Unknown, false ); + setShowDelimitersAtPosition( Position::Center, false ); + setShowDelimitersAtPosition( Position::NorthWest, false ); + setShowDelimitersAtPosition( Position::North, true ); + setShowDelimitersAtPosition( Position::NorthEast, false ); + setShowDelimitersAtPosition( Position::West, false ); + setShowDelimitersAtPosition( Position::East, false ); + setShowDelimitersAtPosition( Position::SouthWest, false ); + setShowDelimitersAtPosition( Position::South, true ); + setShowDelimitersAtPosition( Position::SouthEast, false ); + setShowDelimitersAtPosition( Position::Floating, false ); + + setShowLabelsAtPosition( Position::Unknown, false ); + setShowLabelsAtPosition( Position::Center, false ); + setShowLabelsAtPosition( Position::NorthWest, false ); + setShowLabelsAtPosition( Position::North, true ); + setShowLabelsAtPosition( Position::NorthEast, false ); + setShowLabelsAtPosition( Position::West, false ); + setShowLabelsAtPosition( Position::East, false ); + setShowLabelsAtPosition( Position::SouthWest, false ); + setShowLabelsAtPosition( Position::South, true ); + setShowLabelsAtPosition( Position::SouthEast, false ); + setShowLabelsAtPosition( Position::Floating, false ); +} + +/** + * Creates an exact copy of this diagram. + */ +PolarDiagram * PolarDiagram::clone() const +{ + PolarDiagram* newDiagram = new PolarDiagram( new Private( *d ) ); + // This needs to be copied after the fact + newDiagram->d->showDelimitersAtPosition = d->showDelimitersAtPosition; + newDiagram->d->showLabelsAtPosition = d->showLabelsAtPosition; + newDiagram->d->rotateCircularLabels = d->rotateCircularLabels; + newDiagram->d->closeDatasets = d->closeDatasets; + return newDiagram; +} + +const QPair PolarDiagram::calculateDataBoundaries () const +{ + if ( !checkInvariants(true) ) return QPair( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + const int rowCount = model()->rowCount(rootIndex()); + const int colCount = model()->columnCount(rootIndex()); + qreal xMin = 0.0; + qreal xMax = colCount; + qreal yMin = 0, yMax = 0; + for ( int iCol=0; iColdata( model()->index( iRow, iCol, rootIndex() ) ).toReal(); // checked + yMax = qMax( yMax, value ); + yMin = qMin( yMin, value ); + } + } + QPointF bottomLeft ( QPointF( xMin, yMin ) ); + QPointF topRight ( QPointF( xMax, yMax ) ); + return QPair ( bottomLeft, topRight ); +} + + + +void PolarDiagram::paintEvent ( QPaintEvent*) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void PolarDiagram::resizeEvent ( QResizeEvent*) +{ +} + +void PolarDiagram::paintPolarMarkers( PaintContext* ctx, const QPolygonF& polygon ) +{ + Q_UNUSED(ctx); + Q_UNUSED(polygon); + // obsolete, since we are using real markers now! +} + +void PolarDiagram::paint( PaintContext* ctx ) +{ + qreal dummy1, dummy2; + paint( ctx, true, dummy1, dummy2 ); + paint( ctx, false, dummy1, dummy2 ); +} + +void PolarDiagram::paint( PaintContext* ctx, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants(true) ) + return; + d->reverseMapper.clear(); + + const int rowCount = model()->rowCount( rootIndex() ); + const int colCount = model()->columnCount( rootIndex() ); + + if ( calculateListAndReturnScale ) { + // Check if all of the data value texts / data comments fit into the available space... + d->labelPaintCache.clear(); + + for ( int iCol = 0; iCol < colCount; ++iCol ) { + for ( int iRow=0; iRow < rowCount; ++iRow ) { + QModelIndex index = model()->index( iRow, iCol, rootIndex() ); // checked + const qreal value = model()->data( index ).toReal(); + QPointF point = coordinatePlane()->translate( + QPointF( value, iRow ) ) + ctx->rectangle().topLeft(); + //qDebug() << point; + d->addLabel( &d->labelPaintCache, index, 0, PositionPoints( point ), + Position::Center, Position::Center, value ); + } + } + + newZoomX = coordinatePlane()->zoomFactorX(); + newZoomY = coordinatePlane()->zoomFactorY(); + + if ( d->labelPaintCache.paintReplay.count() ) { + // ...and zoom out if necessary + const qreal oldZoomX = newZoomX; + const qreal oldZoomY = newZoomY; + + QRectF txtRectF; + d->paintDataValueTextsAndMarkers( ctx, d->labelPaintCache, true, true, &txtRectF ); + const QRect txtRect = txtRectF.toRect(); + const QRect curRect = coordinatePlane()->geometry(); + const qreal gapX = qMin( txtRect.left() - curRect.left(), curRect.right() - txtRect.right() ); + const qreal gapY = qMin( txtRect.top() - curRect.top(), curRect.bottom() - txtRect.bottom() ); + if ( gapX < 0.0 ) { + newZoomX = oldZoomX * ( 1.0 + ( gapX - 1.0 ) / curRect.width() ); + } + if ( gapY < 0.0 ) { + newZoomY = oldZoomY * ( 1.0 + ( gapY - 1.0 ) / curRect.height() ); + } + } + } else { + // Paint the data sets + for ( int iCol = 0; iCol < colCount; ++iCol ) { + //TODO(khz): As of yet PolarDiagram can not show per-segment line attributes + // but it draws every polyline in one go - using one color. + // This needs to be enhanced to allow for cell-specific settings + // in the same way as LineDiagram does it. + QBrush brush = d->datasetAttrs( iCol, KDChart::DatasetBrushRole ).value(); + QPolygonF polygon; + for ( int iRow = 0; iRow < rowCount; ++iRow ) { + QModelIndex index = model()->index( iRow, iCol, rootIndex() ); // checked + const qreal value = model()->data( index ).toReal(); + QPointF point = coordinatePlane()->translate( QPointF( value, iRow ) ) + + ctx->rectangle().topLeft(); + polygon.append( point ); + //qDebug() << point; + } + if ( closeDatasets() && !polygon.isEmpty() ) { + // close the circle by connecting the last data point to the first + polygon.append( polygon.first() ); + } + + PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setRenderHint ( QPainter::Antialiasing ); + ctx->painter()->setBrush( brush ); + QPen p = d->datasetAttrs( iCol, KDChart::DatasetPenRole ).value< QPen >(); + if ( p.style() != Qt::NoPen ) + { + ctx->painter()->setPen( PrintingParameters::scalePen( p ) ); + ctx->painter()->drawPolyline( polygon ); + } + } + d->paintDataValueTextsAndMarkers( ctx, d->labelPaintCache, true ); + } +} + +void PolarDiagram::resize ( const QSizeF& ) +{ +} + +/*virtual*/ +qreal PolarDiagram::valueTotals () const +{ + return model()->rowCount(rootIndex()); +} + +/*virtual*/ +qreal PolarDiagram::numberOfValuesPerDataset() const +{ + return model() ? model()->rowCount(rootIndex()) : 0.0; +} + +/*virtual*/ +qreal PolarDiagram::numberOfGridRings() const +{ + return 5; // FIXME +} + +void PolarDiagram::setZeroDegreePosition( int degrees ) +{ + Q_UNUSED( degrees ); + qWarning() << "Deprecated PolarDiagram::setZeroDegreePosition() called, setting ignored."; +} + +int PolarDiagram::zeroDegreePosition() const +{ + qWarning() << "Deprecated PolarDiagram::zeroDegreePosition() called."; + return 0; +} + +void PolarDiagram::setRotateCircularLabels( bool rotateCircularLabels ) +{ + d->rotateCircularLabels = rotateCircularLabels; +} + +bool PolarDiagram::rotateCircularLabels() const +{ + return d->rotateCircularLabels; +} + +void PolarDiagram::setCloseDatasets( bool closeDatasets ) +{ + d->closeDatasets = closeDatasets; +} + +bool PolarDiagram::closeDatasets() const +{ + return d->closeDatasets; +} + +void PolarDiagram::setShowDelimitersAtPosition( Position position, + bool showDelimiters ) +{ + d->showDelimitersAtPosition[position.value()] = showDelimiters; +} + +void PolarDiagram::setShowLabelsAtPosition( Position position, + bool showLabels ) +{ + d->showLabelsAtPosition[position.value()] = showLabels; +} + +bool PolarDiagram::showDelimitersAtPosition( Position position ) const +{ + return d->showDelimitersAtPosition[position.value()]; +} + +bool PolarDiagram::showLabelsAtPosition( Position position ) const +{ + return d->showLabelsAtPosition[position.value()]; +} + + + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.h new file mode 100644 index 00000000..ef137ca1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARDIAGRAM_H +#define KDCHARTPOLARDIAGRAM_H + + +#include "KDChartPosition.h" +#include "KDChartAbstractPolarDiagram.h" + +QT_BEGIN_NAMESPACE +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief PolarDiagram defines a common polar diagram + */ +class KDCHART_EXPORT PolarDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( PolarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( PolarDiagram, PolarCoordinatePlane ) + +public: + explicit PolarDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~PolarDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint ( PaintContext* paintContext ); + +public: + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + virtual PolarDiagram * clone() const; + + /** \deprecated Use PolarCoordinatePlane::setStartPosition( qreal degrees ) instead. */ + void setZeroDegreePosition( int degrees ); + /** \deprecated Use qreal PolarCoordinatePlane::startPosition instead. */ + int zeroDegreePosition() const; + + void setRotateCircularLabels( bool rotateCircularLabels ); + bool rotateCircularLabels() const; + + /** Close each of the data series by connecting the last point to its + * respective start point + */ + void setCloseDatasets( bool closeDatasets ); + bool closeDatasets() const; + + void setShowDelimitersAtPosition( Position position, + bool showDelimiters ); + void setShowLabelsAtPosition( Position position, + bool showLabels ); + + bool showDelimitersAtPosition( Position position ) const; + + bool showLabelsAtPosition( Position position ) const; + + virtual void paint ( PaintContext* paintContext, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ); // KDChart 3: references -> pointers + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + virtual void paintPolarMarkers( PaintContext* ctx, const QPolygonF& polygon ); + +}; // End of class PolarDiagram + +} + + +#endif // KDCHARTPOLARDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram_p.h new file mode 100644 index 00000000..31d8f10e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarDiagram_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARDIAGRAM_P_H +#define KDCHARTPOLARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractPolarDiagram_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class PolarDiagram::Private : public AbstractPolarDiagram::Private +{ + friend class PolarDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractPolarDiagram::Private( rhs ), + showDelimitersAtPosition( rhs.showDelimitersAtPosition ), + showLabelsAtPosition( rhs.showLabelsAtPosition ), + rotateCircularLabels( rhs.rotateCircularLabels ), + closeDatasets( rhs.closeDatasets ) + { + } + +private: + QMap showDelimitersAtPosition; + QMap showLabelsAtPosition; + bool rotateCircularLabels; + bool closeDatasets; + LabelPaintCache labelPaintCache; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( PolarDiagram, AbstractPolarDiagram, PolarCoordinatePlane ) + +} + +#endif /* KDCHARTPOLARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.cpp new file mode 100644 index 00000000..1ddaa52e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.cpp @@ -0,0 +1,123 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartPolarGrid.h" +#include "KDChartPaintContext.h" +#include "KDChartPolarDiagram.h" +#include "KDChartPieDiagram.h" +#include "KDChartPrintingParameters.h" + +#include + +#include + +using namespace KDChart; + + +DataDimensionsList PolarGrid::calculateGrid( + const DataDimensionsList& rawDataDimensions ) const +{ + qDebug("Calling PolarGrid::calculateGrid()"); + Q_ASSERT_X( rawDataDimensions.count() == 2, "PolarGrid::calculateGrid", + "calculateGrid() expects a list with exactly two entries." ); + Q_ASSERT_X( dynamic_cast< PolarCoordinatePlane* >( mPlane ), "PolarGrid::calculateGrid", + "PaintContext::calculatePlane() called, but no polar plane set." ); + + DataDimensionsList l; + + //FIXME(khz): do the real calculation + + l = rawDataDimensions; + + return l; +} + + +void PolarGrid::drawGrid( PaintContext* context ) +{ +// if ( d->coordinateTransformations.size () <= 0 ) return; + + const QBrush backupBrush( context->painter()->brush() ); + context->painter()->setBrush( QBrush() ); + PolarCoordinatePlane* plane = dynamic_cast(context->coordinatePlane()); + Q_ASSERT_X ( plane, "PolarGrid::drawGrid", + "Bad function call: PaintContext::coodinatePlane() NOT a polar plane." ); + + const GridAttributes gridAttrsCircular( plane->gridAttributes( true ) ); + const GridAttributes gridAttrsSagittal( plane->gridAttributes( false ) ); + + //qDebug() << "OK:"; + if ( !gridAttrsCircular.isGridVisible() && !gridAttrsSagittal.isGridVisible() ) return; + //qDebug() << "A"; + + // FIXME: we paint the rulers to the settings of the first diagram for now: + AbstractPolarDiagram* dgr = dynamic_cast (plane->diagrams().first() ); + Q_ASSERT ( dgr ); // only polar diagrams are allowed here + + + // Do not draw a grid for pie diagrams + if ( dynamic_cast (plane->diagrams().first() ) ) return; + + + context->painter()->setPen ( PrintingParameters::scalePen( QColor ( Qt::lightGray ) ) ); + const qreal min = dgr->dataBoundaries().first.y(); + QPointF origin = plane->translate( QPointF( min, 0 ) ) + context->rectangle().topLeft(); + //qDebug() << "origin" << origin; + + const qreal r = qAbs( min ) + dgr->dataBoundaries().second.y(); // use the full extents + + if ( gridAttrsSagittal.isGridVisible() ) { + const int numberOfSpokes = ( int ) ( 360 / plane->angleUnit() ); + for ( int i = 0; i < numberOfSpokes ; ++i ) { + context->painter()->drawLine( origin, plane->translate( QPointF( r - qAbs( min ), i ) ) + context->rectangle().topLeft() ); + } + } + + if ( gridAttrsCircular.isGridVisible() ) + { + const qreal startPos = plane->startPosition(); + plane->setStartPosition( 0.0 ); + const int numberOfGridRings = ( int )dgr->numberOfGridRings(); + for ( int j = 0; j < numberOfGridRings; ++j ) { + const qreal rad = min - ( ( j + 1) * r / numberOfGridRings ); + + if ( rad == 0 ) + continue; + + QRectF rect; + QPointF topLeftPoint; + QPointF bottomRightPoint; + + topLeftPoint = plane->translate( QPointF( rad, 0 ) ); + topLeftPoint.setX( plane->translate( QPointF( rad, 90 / plane->angleUnit() ) ).x() ); + bottomRightPoint = plane->translate( QPointF( rad, 180 / plane->angleUnit() ) ); + bottomRightPoint.setX( plane->translate( QPointF( rad, 270 / plane->angleUnit() ) ).x() ); + + rect.setTopLeft( topLeftPoint + context->rectangle().topLeft() ); + rect.setBottomRight( bottomRightPoint + context->rectangle().topLeft() ); + + context->painter()->drawEllipse( rect ); + } + plane->setStartPosition( startPos ); + } + context->painter()->setBrush( backupBrush ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.h new file mode 100644 index 00000000..15b7cd62 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartPolarGrid.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTPOLARGrid_H +#define KDCHARTPOLARGrid_H + +#include "KDChartPolarCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class PolarCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a polar plane. + * + * The PolarGrid interface is used + * for calculating and for drawing + * the sagittal grid lines, and the circular grid lines + * of a polar coordinate plane. + */ + class PolarGrid : public AbstractGrid + { + public: + PolarGrid() : AbstractGrid() {} + virtual ~PolarGrid() {} + + virtual void drawGrid( PaintContext* context ); + + private: + virtual DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.cpp new file mode 100644 index 00000000..c97a7137 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRadarCoordinatePlane.h" +#include "KDChartRadarCoordinatePlane_p.h" + + +using namespace KDChart; + +#define d d_func() + +KDChart::RadarCoordinatePlane::RadarCoordinatePlane ( Chart* parent ) : + PolarCoordinatePlane( new Private(), parent ) +{ +} +KDChart::RadarCoordinatePlane::~RadarCoordinatePlane() +{ +} + +void KDChart::RadarCoordinatePlane::setTextAttributes(const KDChart::TextAttributes& attr) +{ + d->textAttributes = attr; +} + +const KDChart::TextAttributes RadarCoordinatePlane::textAttributes() const +{ + return d->textAttributes; +} + +void RadarCoordinatePlane::init() +{ + // this bloc left empty intentionally +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.h new file mode 100644 index 00000000..17124c1b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_RADAR_COORDINATEPLANE_H +#define KDCHART_RADAR_COORDINATEPLANE_H + +#include "KDChartPolarCoordinatePlane.h" + +namespace KDChart { + + class Chart; + + /** + * @brief Radar coordinate plane + */ + class KDCHART_EXPORT RadarCoordinatePlane : public PolarCoordinatePlane + { + Q_OBJECT + + Q_DISABLE_COPY( RadarCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( RadarCoordinatePlane, Chart* ) + + public: + + explicit RadarCoordinatePlane ( Chart* parent = 0 ); + ~RadarCoordinatePlane(); + + + /** + * Set the attributes to be used for axis captions. + * + * To disable axis captions, for example, your code should like this: + * \code + * TextAttributes ta = plane->textAttributes(); + * ta.setVisible( false ); + * plane-setTextAttributes( ta ); + * \endcode + */ + void setTextAttributes( const TextAttributes & attr ); + + /** + * \return The attributes used for axis. + * + * \note This function always returns a valid set of text attributes: + * If no special text attributes was set a default one is + * returned. + * + * \sa setTextAttributes + */ + const TextAttributes textAttributes() const; + + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane_p.h new file mode 100644 index 00000000..8a057cbd --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarCoordinatePlane_p.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARCOORDINATEPLANE_P_H +#define KDCHARTRADARCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartPolarCoordinatePlane_p.h" +#include "KDChartRadarCoordinatePlane.h" +#include "KDChartRadarGrid.h" + + +namespace KDChart { + +class RadarCoordinatePlane::Private : public PolarCoordinatePlane::Private +{ + friend class RadarCoordinatePlane; +public: + explicit Private() { } + + virtual ~Private() { } + TextAttributes textAttributes; + + virtual void initialize() + { + grid = new RadarGrid(); + } +}; + + +KDCHART_IMPL_DERIVED_PLANE(RadarCoordinatePlane, PolarCoordinatePlane) + +} + +#endif /* KDCHARTBARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.cpp new file mode 100644 index 00000000..2c8203f5 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.cpp @@ -0,0 +1,337 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRadarDiagram.h" +#include "KDChartRadarDiagram_p.h" + +#include +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" + +#include + +using namespace KDChart; + +RadarDiagram::Private::Private() : + closeDatasets( false ), + reverseData( false ), + fillAlpha( 0.0 ) +{ +} + +RadarDiagram::Private::~Private() {} + +#define d d_func() + +RadarDiagram::RadarDiagram( QWidget* parent, RadarCoordinatePlane* plane ) : + AbstractPolarDiagram( new Private( ), parent, plane ) +{ + //init(); +} + +RadarDiagram::~RadarDiagram() +{ + +} + +void RadarDiagram::init() +{ +} + + +/** + * Creates an exact copy of this diagram. + */ +RadarDiagram * RadarDiagram::clone() const +{ + RadarDiagram* newDiagram = new RadarDiagram( new Private( *d ) ); + // This needs to be copied after the fact + newDiagram->d->closeDatasets = d->closeDatasets; + return newDiagram; +} + +const QPair RadarDiagram::calculateDataBoundaries () const +{ + if ( !checkInvariants(true) ) return QPair( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + const int rowCount = model()->rowCount(rootIndex()); + const int colCount = model()->columnCount(rootIndex()); + qreal xMin = 0.0; + qreal xMax = colCount; + qreal yMin = 0, yMax = 0; + for ( int iCol=0; iColdata( model()->index( iRow, iCol, rootIndex() ) ).toReal(); // checked + yMax = qMax( yMax, value ); + yMin = qMin( yMin, value ); + } + } + QPointF bottomLeft ( QPointF( xMin, yMin ) ); + QPointF topRight ( QPointF( xMax, yMax ) ); + return QPair ( bottomLeft, topRight ); +} + + + +void RadarDiagram::paintEvent ( QPaintEvent*) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void RadarDiagram::paint( PaintContext* ctx ) +{ + qreal dummy1, dummy2; + paint( ctx, true, dummy1, dummy2 ); + paint( ctx, false, dummy1, dummy2 ); +} + +static qreal fitFontSizeToGeometry( const QString& text, const QFont& font, const QRectF& geometry, const TextAttributes& ta ) +{ + QFont f = font; + const qreal origResult = f.pointSizeF(); + qreal result = origResult; + const QSizeF mySize = geometry.size(); + if ( mySize.isNull() ) + return result; + + const QString t = text; + QFontMetrics fm( f ); + while ( true ) + { + const QSizeF textSize = rotatedRect( fm.boundingRect( t ), ta.rotation() ).normalized().size(); + + if ( textSize.height() <= mySize.height() && textSize.width() <= mySize.width() ) + return result; + + result -= 0.5; + if ( result <= 0.0 ) + return origResult; + f.setPointSizeF( result ); + fm = QFontMetrics( f ); + } +} + +static QPointF scaleToRealPosition( const QPointF& origin, const QRectF& sourceRect, const QRectF& destRect, const AbstractCoordinatePlane& plane ) +{ + QPointF result = plane.translate( origin ); + result -= sourceRect.topLeft(); + result.setX( result.x() / sourceRect.width() * destRect.width() ); + result.setY( result.y() / sourceRect.height() * destRect.height() ); + result += destRect.topLeft(); + return result; +} + +void RadarDiagram::setReverseData( bool val ) +{ + d->reverseData = val; +} +bool RadarDiagram::reverseData() +{ + return d->reverseData; +} + +// local structure to remember the settings of a polygon inclusive the used color and pen. +struct Polygon { + QPolygonF polygon; + QBrush brush; + QPen pen; + Polygon(const QPolygonF &polygon, const QBrush &brush, const QPen &pen) : polygon(polygon), brush(brush), pen(pen) {} +}; + +void RadarDiagram::paint( PaintContext* ctx, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants(true) ) + return; + d->reverseMapper.clear(); + + const int rowCount = model()->rowCount( rootIndex() ); + const int colCount = model()->columnCount( rootIndex() ); + + int iRow, iCol; + + const qreal min = dataBoundaries().first.y(); + const qreal r = qAbs( min ) + dataBoundaries().second.y(); + const qreal step = ( r - qAbs( min ) ) / ( numberOfGridRings() ); + + RadarCoordinatePlane* plane = dynamic_cast(ctx->coordinatePlane()); + TextAttributes ta = plane->textAttributes(); + QRectF fontRect = ctx->rectangle(); + fontRect.setSize( QSizeF( fontRect.width(), step / 2.0 ) ); + const qreal labelFontSize = fitFontSizeToGeometry( QString::fromLatin1( "TestXYWQgqy" ), ta.font(), fontRect, ta ); + QFont labelFont = ta.font(); + ctx->painter()->setPen( ta.pen() ); + labelFont.setPointSizeF( labelFontSize ); + const QFontMetricsF metric( labelFont ); + const qreal labelHeight = metric.height(); + QPointF offset; + QRectF destRect = ctx->rectangle(); + if ( ta.isVisible() ) + { + destRect.setY( destRect.y() + 2 * labelHeight ); + destRect.setHeight( destRect.height() - 4 * labelHeight ); + } + + if ( calculateListAndReturnScale ) { + ctx->painter()->save(); + // Check if all of the data value texts / data comments will fit + // into the available space: + d->labelPaintCache.clear(); + ctx->painter()->save(); + for ( iCol=0; iCol < colCount; ++iCol ) { + for ( iRow=0; iRow < rowCount; ++iRow ) { + QModelIndex index = model()->index( iRow, iCol, rootIndex() ); // checked + const qreal value = model()->data( index ).toReal(); + QPointF point = scaleToRealPosition( QPointF( value, iRow ), ctx->rectangle(), destRect, *ctx->coordinatePlane() ); + d->addLabel( &d->labelPaintCache, index, 0, PositionPoints( point ), + Position::Center, Position::Center, value ); + } + } + ctx->painter()->restore(); + const qreal oldZoomX = coordinatePlane()->zoomFactorX(); + const qreal oldZoomY = coordinatePlane()->zoomFactorY(); + newZoomX = oldZoomX; + newZoomY = oldZoomY; + if ( d->labelPaintCache.paintReplay.count() ) { + QRectF txtRectF; + d->paintDataValueTextsAndMarkers( ctx, d->labelPaintCache, true, true, &txtRectF ); + const QRect txtRect = txtRectF.toRect(); + const QRect curRect = coordinatePlane()->geometry(); + const qreal gapX = qMin( txtRect.left() - curRect.left(), curRect.right() - txtRect.right() ); + const qreal gapY = qMin( txtRect.top() - curRect.top(), curRect.bottom() - txtRect.bottom() ); + newZoomX = oldZoomX; + newZoomY = oldZoomY; + if ( gapX < 0.0 ) + newZoomX *= 1.0 + (gapX-1.0) / curRect.width(); + if ( gapY < 0.0 ) + newZoomY *= 1.0 + (gapY-1.0) / curRect.height(); + } + ctx->painter()->restore(); + + } else { + // Iterate through data sets and create a list of polygons out of them. + QList polygons; + for ( iCol=0; iCol < colCount; ++iCol ) { + //TODO(khz): As of yet RadarDiagram can not show per-segment line attributes + // but it draws every polyline in one go - using one color. + // This needs to be enhanced to allow for cell-specific settings + // in the same way as LineDiagram does it. + QPolygonF polygon; + QPointF point0; + for ( iRow=0; iRow < rowCount; ++iRow ) { + QModelIndex index = model()->index( iRow, iCol, rootIndex() ); // checked + const qreal value = model()->data( index ).toReal(); + QPointF point = scaleToRealPosition( QPointF( value, d->reverseData ? ( rowCount - iRow ) : iRow ), ctx->rectangle(), destRect, *ctx->coordinatePlane() ); + polygon.append( point ); + if ( ! iRow ) + point0= point; + } + if ( closeDatasets() && rowCount ) + polygon.append( point0 ); + + QBrush brush = d->datasetAttrs( iCol, KDChart::DatasetBrushRole ).value(); + QPen p = d->datasetAttrs( iCol, KDChart::DatasetPenRole ).value< QPen >(); + if ( p.style() != Qt::NoPen ) + { + polygons.append( Polygon( polygon, brush, PrintingParameters::scalePen( p ) ) ); + } + } + + // first fill the areas with the brush-color and the defined alpha-value. + if (d->fillAlpha > 0.0) { + Q_FOREACH(const Polygon& p, polygons) { + PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setRenderHint ( QPainter::Antialiasing ); + QBrush br = p.brush; + QColor c = br.color(); + c.setAlphaF(d->fillAlpha); + br.setColor(c); + ctx->painter()->setBrush( br ); + ctx->painter()->setPen( p.pen ); + ctx->painter()->drawPolygon( p.polygon ); + } + } + + // then draw the poly-lines. + Q_FOREACH(const Polygon& p, polygons) { + PainterSaver painterSaver( ctx->painter() ); + ctx->painter()->setRenderHint ( QPainter::Antialiasing ); + ctx->painter()->setBrush( p.brush ); + ctx->painter()->setPen( p.pen ); + ctx->painter()->drawPolyline( p.polygon ); + } + + d->paintDataValueTextsAndMarkers( ctx, d->labelPaintCache, true ); + } +} + +void RadarDiagram::resize ( const QSizeF& ) +{ +} + +/*virtual*/ +qreal RadarDiagram::valueTotals () const +{ + return model()->rowCount(rootIndex()); +} + +/*virtual*/ +qreal RadarDiagram::numberOfValuesPerDataset() const +{ + return model() ? model()->rowCount(rootIndex()) : 0.0; +} + +/*virtual*/ +qreal RadarDiagram::numberOfGridRings() const +{ + return 5; // FIXME +} + +void RadarDiagram::setCloseDatasets( bool closeDatasets ) +{ + d->closeDatasets = closeDatasets; +} + +bool RadarDiagram::closeDatasets() const +{ + return d->closeDatasets; +} + +qreal RadarDiagram::fillAlpha() const +{ + return d->fillAlpha; +} + +void RadarDiagram::setFillAlpha(qreal alphaF) +{ + d->fillAlpha = alphaF; +} + +void RadarDiagram::resizeEvent ( QResizeEvent*) +{ +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.h new file mode 100644 index 00000000..e4f70e94 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARDIAGRAM_H +#define KDCHARTRADARDIAGRAM_H + + +#include "KDChartPosition.h" +#include "KDChartPolarDiagram.h" +#include "KDChartRadarCoordinatePlane.h" + +QT_BEGIN_NAMESPACE +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + +/** + * @brief RadarDiagram defines a common radar diagram + */ +class KDCHART_EXPORT RadarDiagram : public AbstractPolarDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( RadarDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( RadarDiagram, RadarCoordinatePlane ) + +public: + explicit RadarDiagram( + QWidget* parent = 0, RadarCoordinatePlane* plane = 0 ); + virtual ~RadarDiagram(); + + virtual void paint ( PaintContext* paintContext, + bool calculateListAndReturnScale, + qreal& newZoomX, qreal& newZoomY ); + /** \reimpl */ + virtual void resize ( const QSizeF& area ); + + /** \reimpl */ + virtual qreal valueTotals () const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + /** + * if val is true the diagram will mirror the diagram datapoints + */ + void setReverseData( bool val ); + bool reverseData(); + + virtual RadarDiagram * clone() const; + + /** + * Close each of the data series by connecting the last point to its + * respective start point + */ + void setCloseDatasets( bool closeDatasets ); + bool closeDatasets() const; + + /** + * Fill the areas of the radar chart with there respective color defined + * via KDChart::DatasetBrushRole. The value defines the alpha of the + * color to use. If set to 0.0 (the default) then the radar areas will + * not be filled with any color. If set to 1.0 then the areas will be + * solid filled and are not transparent. + */ + qreal fillAlpha() const; + void setFillAlpha(qreal alphaF); + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent ( QPaintEvent* ); + void resizeEvent ( QResizeEvent* ); + virtual void paint ( PaintContext* paintContext ); + +}; // End of class RadarDiagram + +} + +#endif // KDCHARTRADARDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram_p.h new file mode 100644 index 00000000..25fd5ace --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarDiagram_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARDIAGRAM_P_H +#define KDCHARTRADARDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractPolarDiagram_p.h" +#include "KDChartRadarDiagram.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class RadarDiagram::Private : public AbstractPolarDiagram::Private +{ + friend class RadarDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractPolarDiagram::Private( rhs ), + closeDatasets( rhs.closeDatasets ), + reverseData( rhs.reverseData ), + fillAlpha( rhs.fillAlpha ) + { + } + +private: + bool closeDatasets; + bool reverseData; + qreal fillAlpha; + LabelPaintCache labelPaintCache; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( RadarDiagram, AbstractPolarDiagram, RadarCoordinatePlane ) + +} + +#endif /* KDCHARTRADARDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.cpp new file mode 100644 index 00000000..44916759 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.cpp @@ -0,0 +1,227 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRadarGrid.h" +#include "KDChartPaintContext.h" +#include "KDChartRadarDiagram.h" +#include "KDChartPieDiagram.h" +#include "KDChartPrintingParameters.h" + +#include + +#include + +using namespace KDChart; + + +DataDimensionsList RadarGrid::calculateGrid( + const DataDimensionsList& rawDataDimensions ) const +{ + qDebug("Calling PolarGrid::calculateGrid()"); + DataDimensionsList l; + + //FIXME(khz): do the real calculation + + l = rawDataDimensions; + + return l; +} + +static qreal fitFontSizeToGeometry( const QString& text, const QFont& font, const QRectF& geometry, const TextAttributes& ta ) +{ + QFont f = font; + const qreal origResult = f.pointSizeF(); + qreal result = origResult; + const QSizeF mySize = geometry.size(); + if ( mySize.isNull() ) + return result; + + const QString t = text; + QFontMetrics fm( f ); + while ( true ) + { + const QSizeF textSize = rotatedRect( fm.boundingRect( t ), ta.rotation() ).normalized().size(); + + if ( textSize.height() <= mySize.height() && textSize.width() <= mySize.width() ) + return result; + + result -= 0.5; + if ( result <= 0.0 ) + return origResult; + f.setPointSizeF( result ); + fm = QFontMetrics( f ); + } +} + +QPointF scaleToRealPosition( const QPointF& origin, const QRectF& sourceRect, const QRectF& destRect, const AbstractCoordinatePlane& plane ) +{ + QPointF result = plane.translate( origin ); + result -= sourceRect.topLeft(); + result.setX( result.x() / sourceRect.width() * destRect.width() ); + result.setY( result.y() / sourceRect.height() * destRect.height() ); + result += destRect.topLeft(); + return result; +} + +QPointF scaleToRect( const QPointF& origin, const QRectF& sourceRect, const QRectF& destRect ) +{ + QPointF result( origin ); + result -= sourceRect.topLeft(); + result.setX( result.x() / sourceRect.width() * destRect.width() ); + result.setY( result.y() / sourceRect.height() * destRect.height() ); + result += destRect.topLeft(); + return result; +} + +void RadarGrid::drawGrid( PaintContext* context ) +{ + const QBrush backupBrush( context->painter()->brush() ); + context->painter()->setBrush( QBrush() ); + RadarCoordinatePlane* plane = dynamic_cast< RadarCoordinatePlane* >( context->coordinatePlane() ); + Q_ASSERT( plane ); + Q_ASSERT( plane->diagram() ); + QPair< QPointF, QPointF > boundaries = plane->diagram()->dataBoundaries(); + Q_ASSERT_X ( plane, "PolarGrid::drawGrid", + "Bad function call: PaintContext::coodinatePlane() NOT a polar plane." ); + + const GridAttributes gridAttrsCircular( plane->gridAttributes( true ) ); + const GridAttributes gridAttrsSagittal( plane->gridAttributes( false ) ); + + //qDebug() << "OK:"; + if ( !gridAttrsCircular.isGridVisible() && !gridAttrsSagittal.isGridVisible() ) return; + //qDebug() << "A"; + + // FIXME: we paint the rulers to the settings of the first diagram for now: + AbstractPolarDiagram* dgr = dynamic_cast (plane->diagrams().first() ); + Q_ASSERT ( dgr ); // only polar diagrams are allowed here + + + // Do not draw a grid for pie diagrams + if ( dynamic_cast (plane->diagrams().first() ) ) return; + + + context->painter()->setPen ( PrintingParameters::scalePen( QColor ( Qt::lightGray ) ) ); + const qreal min = dgr->dataBoundaries().first.y(); + QPointF origin = plane->translate( QPointF( min, 0 ) ) + context->rectangle().topLeft(); + //qDebug() << "origin" << origin; + + const qreal r = qAbs( min ) + dgr->dataBoundaries().second.y(); // use the full extents + + // distance between two axis lines + const qreal step = ( r - qAbs( min ) ) / ( dgr->numberOfGridRings() ); + + // calculate the height needed for text to be displayed at the bottom and top of the chart + QPointF topLeft = context->rectangle().topLeft(); + Q_ASSERT( plane->diagram()->model() ); + TextAttributes ta = plane->textAttributes(); + const int numberOfSpokes = ( int ) ( 360 / plane->angleUnit() ); + const qreal stepWidth = boundaries.second.y() / ( dgr->numberOfGridRings() ); + QRectF destRect = context->rectangle(); + if (ta.isVisible() ) + { + QAbstractItemModel* model = plane->diagram()->model(); + QRectF fontRect = context->rectangle(); + fontRect.setSize( QSizeF( fontRect.width(), step / 2.0 ) ); + const qreal labelFontSize = fitFontSizeToGeometry( QString::fromLatin1( "TestXYWQgqy" ), ta.font(), fontRect, ta ); + QFont labelFont = ta.font(); + context->painter()->setPen( ta.pen() ); + labelFont.setPointSizeF( labelFontSize ); + const QFontMetricsF metric( labelFont ); + const qreal labelHeight = metric.height(); + QPointF offset; + destRect.setY( destRect.y() + 2 * labelHeight ); + destRect.setHeight( destRect.height() - 4 * labelHeight ); + offset.setY( labelHeight ); + offset.setX( 0 ); + topLeft += offset; + origin += offset; + origin = scaleToRealPosition( QPointF( min, 0 ), context->rectangle(), destRect, *plane ); + + const qreal aWidth = metric.width( QString::fromLatin1( "A" ) ); + const QLineF startLine( origin, scaleToRealPosition( QPointF( r - qAbs( min ), 0 ), context->rectangle(), destRect, *plane ) ); + for ( int i = 0; i < model->rowCount(); ++i ) + { + const QLineF currentLine( origin, scaleToRealPosition( QPointF( r - qAbs( min ), i ), context->rectangle(), destRect, *plane ) ); + const int angle = ( int ) startLine.angleTo( currentLine ) % 360; + const qreal angleTest = qAbs( angle - 180 ); + const QString data = model->headerData( i, Qt::Vertical ).toString(); + const qreal xOffset = metric.width( data ) / 2.0; + if ( angleTest < 5.0 ) + context->painter()->drawText( currentLine.pointAt( 1 ) + QPointF( -xOffset, labelHeight + qAbs( min ) ) , data ); + else if ( qAbs( angleTest - 180 ) < 5.0 ) + context->painter()->drawText( currentLine.pointAt( 1 ) - QPointF( xOffset, labelHeight + qAbs( min ) ) , data ); + else if ( angle < 175 && angle > 5 ) + context->painter()->drawText( currentLine.pointAt( 1 ) - QPointF( xOffset * 2 + qAbs( min ) + aWidth, -labelHeight/ 2.0 + qAbs( min ) ) , data ); + else if ( angle < 355 && angle > 185 ) + context->painter()->drawText( currentLine.pointAt( 1 ) + QPointF( qAbs( min ) + aWidth, labelHeight/ 2.0 + qAbs( min ) ) , data ); + + } + } + context->painter()->setPen ( PrintingParameters::scalePen( QColor ( Qt::lightGray ) ) ); + if ( plane->globalGridAttributes().isGridVisible() ) + { + for ( int j = 1; j < dgr->numberOfGridRings() + 1; ++j ) + { + QPointF oldPoint( scaleToRealPosition( QPointF( j * step - qAbs( min ), numberOfSpokes - 1 ), context->rectangle(), destRect, *plane ) ); + for ( int i = 0; i < numberOfSpokes ; ++i ) { + const QPointF newPoint = scaleToRealPosition( QPointF( j * step - qAbs( min ), i ), context->rectangle(), destRect, *plane ); + context->painter()->drawLine( oldPoint, newPoint ); + oldPoint = newPoint; + + context->painter()->drawLine( origin, newPoint ); + } + } + context->painter()->setPen( ta.pen() ); + qreal fontSize = 0; + for ( int i = 0; i < dgr->numberOfGridRings() + 1; ++i ) + { + const QString text = QString::number( i * stepWidth ); + const QPointF translatedPoint = scaleToRealPosition( QPointF( i * step - qAbs( min ), 0 ), context->rectangle(), destRect, *plane ); + const QFontMetrics metric( ta.font()/*QFont( "Arial", 10 )*/ ); + const qreal textLength = metric.width( text ); + const qreal textHeight = metric.height() / 2.0; + QPointF textOffset( textLength, -textHeight ); + textOffset = scaleToRect( textOffset, context->rectangle(), destRect ); + QPointF _topLeft = topLeft; + _topLeft.setY( translatedPoint.y() ); + QRectF boundary( _topLeft, ( translatedPoint + QPointF( 0, step / 2.0 ) ) ); + const qreal calcFontSize = fitFontSizeToGeometry( text, ta.font(), boundary, ta ); + if ( fontSize != calcFontSize ) + { + QFont paintFont( ta.font() ); + paintFont.setPointSizeF( calcFontSize ); + ta.setFont( paintFont ); + ta.setFontSize( calcFontSize ); + const qreal textHeight2 = QFontMetricsF( paintFont ).height() / 2.0; + textOffset.setY( - textHeight2 ); + textOffset = scaleToRect( textOffset, context->rectangle(), destRect ); + context->painter()->setFont( paintFont ); + fontSize = calcFontSize; + } + context->painter()->drawText( translatedPoint + destRect.topLeft() - textOffset, text ); + + } + } + plane->setTextAttributes( ta ); + context->painter()->setPen ( PrintingParameters::scalePen( QColor ( Qt::lightGray ) ) ); + context->painter()->setBrush( backupBrush ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.h new file mode 100644 index 00000000..ac52353b --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRadarGrid.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRADARGrid_H +#define KDCHARTRADARGrid_H + +//#include "KDChartRadarCoordinatePlane.h" +#include "KDChartAbstractGrid.h" + +namespace KDChart { + + class PaintContext; + class RadarCoordinatePlane; + + /** + * \internal + * + * \brief Class for the grid in a radar plane. + * + * The RadarGrid interface is used + * for calculating and for drawing + * the grid lines of a radar charts including "axis" + * labels. + */ + class RadarGrid : public AbstractGrid + { + public: + RadarGrid() : AbstractGrid() {} + virtual ~RadarGrid() {} + + virtual void drawGrid( PaintContext* context ); + + private: + virtual DataDimensionsList calculateGrid( + const DataDimensionsList& rawDataDimensions ) const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.cpp new file mode 100644 index 00000000..dc09d86f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.cpp @@ -0,0 +1,492 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartRingDiagram.h" +#include "KDChartRingDiagram_p.h" + +#include "KDChartAttributesModel.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartPieAttributes.h" +#include "KDChartPolarCoordinatePlane_p.h" +#include "KDChartThreeDPieAttributes.h" +#include "KDChartDataValueAttributes.h" + +#include + +#include + +using namespace KDChart; + +RingDiagram::Private::Private() + : relativeThickness( false ) + , expandWhenExploded( false ) +{ +} + +RingDiagram::Private::~Private() {} + +#define d d_func() + +RingDiagram::RingDiagram( QWidget* parent, PolarCoordinatePlane* plane ) : + AbstractPieDiagram( new Private(), parent, plane ) +{ + init(); +} + +RingDiagram::~RingDiagram() +{ +} + +void RingDiagram::init() +{ +} + +/** + * Creates an exact copy of this diagram. + */ +RingDiagram * RingDiagram::clone() const +{ + return new RingDiagram( new Private( *d ) ); +} + +bool RingDiagram::compare( const RingDiagram* other ) const +{ + if ( other == this ) return true; + if ( ! other ) { + return false; + } + return // compare the base class + ( static_cast(this)->compare( other ) ) && + // compare own properties + (relativeThickness() == other->relativeThickness()) && + (expandWhenExploded() == other->expandWhenExploded()); +} + +void RingDiagram::setRelativeThickness( bool relativeThickness ) +{ + d->relativeThickness = relativeThickness; +} + +bool RingDiagram::relativeThickness() const +{ + return d->relativeThickness; +} + +void RingDiagram::setExpandWhenExploded( bool expand ) +{ + d->expandWhenExploded = expand; +} + +bool RingDiagram::expandWhenExploded() const +{ + return d->expandWhenExploded; +} + +const QPair RingDiagram::calculateDataBoundaries () const +{ + if ( !checkInvariants( true ) ) return QPair( QPointF( 0, 0 ), QPointF( 0, 0 ) ); + + const PieAttributes attrs( pieAttributes() ); + + QPointF bottomLeft( 0, 0 ); + QPointF topRight; + // If we explode, we need extra space for the pie slice that has the largest explosion distance. + if ( attrs.explode() ) { + const int rCount = rowCount(); + const int colCount = columnCount(); + qreal maxExplode = 0.0; + for ( int i = 0; i < rCount; ++i ) { + qreal maxExplodeInThisRow = 0.0; + for ( int j = 0; j < colCount; ++j ) { + const PieAttributes columnAttrs( pieAttributes( model()->index( i, j, rootIndex() ) ) ); // checked + maxExplodeInThisRow = qMax( maxExplodeInThisRow, columnAttrs.explodeFactor() ); + } + maxExplode += maxExplodeInThisRow; + + // FIXME: What if explode factor of inner ring is > 1.0 ? + if ( !d->expandWhenExploded ) { + break; + } + } + // explode factor is relative to width (outer r - inner r) of one ring + maxExplode /= ( rCount + 1); + topRight = QPointF( 1.0 + maxExplode, 1.0 + maxExplode ); + } else { + topRight = QPointF( 1.0, 1.0 ); + } + return QPair( bottomLeft, topRight ); +} + +void RingDiagram::paintEvent( QPaintEvent* ) +{ + QPainter painter ( viewport() ); + PaintContext ctx; + ctx.setPainter ( &painter ); + ctx.setRectangle( QRectF ( 0, 0, width(), height() ) ); + paint ( &ctx ); +} + +void RingDiagram::resizeEvent( QResizeEvent* ) +{ +} + +void RingDiagram::paint( PaintContext* ctx ) +{ + // note: Not having any data model assigned is no bug + // but we can not draw a diagram then either. + if ( !checkInvariants(true) ) + return; + + d->reverseMapper.clear(); + + const PieAttributes attrs( pieAttributes() ); + + const int rCount = rowCount(); + const int colCount = columnCount(); + + QRectF contentsRect = PolarCoordinatePlane::Private::contentsRect( polarCoordinatePlane() ); + contentsRect = ctx->rectangle(); + if ( contentsRect.isEmpty() ) + return; + + d->startAngles = QVector< QVector >( rCount, QVector( colCount ) ); + d->angleLens = QVector< QVector >( rCount, QVector( colCount ) ); + + // compute position + d->size = qMin( contentsRect.width(), contentsRect.height() ); // initial size + + // if the slices explode, we need to give them additional space => + // make the basic size smaller + qreal totalOffset = 0.0; + for ( int i = 0; i < rCount; ++i ) { + qreal maxOffsetInThisRow = 0.0; + for ( int j = 0; j < colCount; ++j ) { + const PieAttributes cellAttrs( pieAttributes( model()->index( i, j, rootIndex() ) ) ); // checked + //qDebug() << cellAttrs.explodeFactor(); + const qreal explode = cellAttrs.explode() ? cellAttrs.explodeFactor() : 0.0; + maxOffsetInThisRow = qMax( maxOffsetInThisRow, cellAttrs.gapFactor( false ) + explode ); + } + if ( !d->expandWhenExploded ) { + maxOffsetInThisRow -= qreal( i ); + } + totalOffset += qMax( maxOffsetInThisRow, 0.0 ); + // FIXME: What if explode factor of inner ring is > 1.0 ? + //if ( !d->expandWhenExploded ) + // break; + } + + // explode factor is relative to width (outer r - inner r) of one ring + if ( rCount > 0 ) + totalOffset /= ( rCount + 1 ); + d->size /= ( 1.0 + totalOffset ); + + + qreal x = ( contentsRect.width() == d->size ) ? 0.0 : ( ( contentsRect.width() - d->size ) / 2.0 ); + qreal y = ( contentsRect.height() == d->size ) ? 0.0 : ( ( contentsRect.height() - d->size ) / 2.0 ); + d->position = QRectF( x, y, d->size, d->size ); + d->position.translate( contentsRect.left(), contentsRect.top() ); + + const PolarCoordinatePlane * plane = polarCoordinatePlane(); + + QVariant vValY; + + d->forgetAlreadyPaintedDataValues(); + for ( int iRow = 0; iRow < rCount; ++iRow ) { + const qreal sum = valueTotals( iRow ); + if ( sum == 0.0 ) //nothing to draw + continue; + qreal currentValue = plane ? plane->startPosition() : 0.0; + const qreal sectorsPerValue = 360.0 / sum; + + for ( int iColumn = 0; iColumn < colCount; ++iColumn ) { + // is there anything at all at this column? + bool bOK; + const qreal cellValue = qAbs( model()->data( model()->index( iRow, iColumn, rootIndex() ) ) // checked + .toReal( &bOK ) ); + + if ( bOK ) { + d->startAngles[ iRow ][ iColumn ] = currentValue; + d->angleLens[ iRow ][ iColumn ] = cellValue * sectorsPerValue; + } else { // mark as non-existent + d->angleLens[ iRow ][ iColumn ] = 0.0; + if ( iColumn > 0.0 ) { + d->startAngles[ iRow ][ iColumn ] = d->startAngles[ iRow ][ iColumn - 1 ]; + } else { + d->startAngles[ iRow ][ iColumn ] = currentValue; + } + } + + currentValue = d->startAngles[ iRow ][ iColumn ] + d->angleLens[ iRow ][ iColumn ]; + + drawOneSlice( ctx->painter(), iRow, iColumn, granularity() ); + } + } +} + +#if defined ( Q_WS_WIN) +#define trunc(x) ((int)(x)) +#endif + +/** + \param painter the QPainter to draw in + \param dataset the dataset to draw the slice for + \param slice the slice to draw + */ +void RingDiagram::drawOneSlice( QPainter* painter, uint dataset, uint slice, qreal granularity ) +{ + // Is there anything to draw at all? + const qreal angleLen = d->angleLens[ dataset ][ slice ]; + if ( angleLen ) { + drawPieSurface( painter, dataset, slice, granularity ); + } +} + +void RingDiagram::resize( const QSizeF& ) +{ +} + +/** + Internal method that draws the top surface of one of the slices in a ring chart. + + \param painter the QPainter to draw in + \param dataset the dataset to draw the slice for + \param slice the slice to draw + */ +void RingDiagram::drawPieSurface( QPainter* painter, uint dataset, uint slice, qreal granularity ) +{ + // Is there anything to draw at all? + qreal angleLen = d->angleLens[ dataset ][ slice ]; + if ( angleLen ) { + qreal startAngle = d->startAngles[ dataset ][ slice ]; + + QModelIndex index( model()->index( dataset, slice, rootIndex() ) ); // checked + const PieAttributes attrs( pieAttributes( index ) ); + const ThreeDPieAttributes threeDAttrs( threeDPieAttributes( index ) ); + + const int rCount = rowCount(); + const int colCount = columnCount(); + + int iPoint = 0; + + QRectF drawPosition = d->position; + + painter->setRenderHint ( QPainter::Antialiasing ); + + QBrush br = brush( index ); + if ( threeDAttrs.isEnabled() ) { + br = threeDAttrs.threeDBrush( br, drawPosition ); + } + painter->setBrush( br ); + + painter->setPen( pen( index ) ); + + if ( angleLen == 360 ) { + // full circle, avoid nasty line in the middle + // FIXME: Draw a complete ring here + //painter->drawEllipse( drawPosition ); + } else { + bool perfectMatch = false; + + qreal circularGap = 0.0; + + if ( attrs.gapFactor( true ) > 0.0 ) { + // FIXME: Measure in degrees! + circularGap = attrs.gapFactor( true ); + } + + QPolygonF poly; + + qreal degree = 0; + + qreal actualStartAngle = startAngle + circularGap; + qreal actualAngleLen = angleLen - 2 * circularGap; + + qreal totalRadialExplode = 0.0; + qreal maxRadialExplode = 0.0; + + qreal totalRadialGap = 0.0; + qreal maxRadialGap = 0.0; + for ( uint i = rCount - 1; i > dataset; --i ) { + qreal maxRadialExplodeInThisRow = 0.0; + qreal maxRadialGapInThisRow = 0.0; + for ( int j = 0; j < colCount; ++j ) { + const PieAttributes cellAttrs( pieAttributes( model()->index( i, j, rootIndex() ) ) ); // checked + if ( d->expandWhenExploded ) { + maxRadialGapInThisRow = qMax( maxRadialGapInThisRow, cellAttrs.gapFactor( false ) ); + } + + // Don't use a gap for the very inner circle + if ( cellAttrs.explode() && d->expandWhenExploded ) { + maxRadialExplodeInThisRow = qMax( maxRadialExplodeInThisRow, cellAttrs.explodeFactor() ); + } + } + maxRadialExplode += maxRadialExplodeInThisRow; + maxRadialGap += maxRadialGapInThisRow; + + // FIXME: What if explode factor of inner ring is > 1.0 ? + //if ( !d->expandWhenExploded ) + // break; + } + totalRadialGap = maxRadialGap + attrs.gapFactor( false ); + totalRadialExplode = attrs.explode() ? maxRadialExplode + attrs.explodeFactor() : maxRadialExplode; + + while ( degree <= actualAngleLen ) { + const QPointF p = pointOnEllipse( drawPosition, dataset, slice, false, actualStartAngle + degree, + totalRadialGap, totalRadialExplode ); + poly.append( p ); + degree += granularity; + iPoint++; + } + if ( ! perfectMatch ) { + poly.append( pointOnEllipse( drawPosition, dataset, slice, false, actualStartAngle + actualAngleLen, + totalRadialGap, totalRadialExplode ) ); + iPoint++; + } + + // The center point of the inner brink + const QPointF innerCenterPoint( poly[ int(iPoint / 2) ] ); + + actualStartAngle = startAngle + circularGap; + actualAngleLen = angleLen - 2 * circularGap; + + degree = actualAngleLen; + + const int lastInnerBrinkPoint = iPoint; + while ( degree >= 0 ) { + poly.append( pointOnEllipse( drawPosition, dataset, slice, true, actualStartAngle + degree, + totalRadialGap, totalRadialExplode ) ); + perfectMatch = (degree == 0); + degree -= granularity; + iPoint++; + } + // if necessary add one more point to fill the last small gap + if ( ! perfectMatch ) { + poly.append( pointOnEllipse( drawPosition, dataset, slice, true, actualStartAngle, + totalRadialGap, totalRadialExplode ) ); + iPoint++; + } + + // The center point of the outer brink + const QPointF outerCenterPoint( poly[ lastInnerBrinkPoint + int((iPoint - lastInnerBrinkPoint) / 2) ] ); + //qDebug() << poly; + //find the value and paint it + //fix value position + const qreal sum = valueTotals( dataset ); + painter->drawPolygon( poly ); + + d->reverseMapper.addPolygon( index.row(), index.column(), poly ); + + const QPointF centerPoint = (innerCenterPoint + outerCenterPoint) / 2.0; + + const PainterSaver ps( painter ); + const TextAttributes ta = dataValueAttributes( index ).textAttributes(); + if ( !ta.hasRotation() && autoRotateLabels() ) + { + const QPointF& p1 = poly.last(); + const QPointF& p2 = poly[ lastInnerBrinkPoint ]; + const QLineF line( p1, p2 ); + // TODO: do the label rotation like in PieDiagram + const qreal angle = line.dx() == 0 ? 0.0 : atan( line.dy() / line.dx() ); + painter->translate( centerPoint ); + painter->rotate( angle / 2.0 / 3.141592653589793 * 360.0 ); + painter->translate( -centerPoint ); + } + + paintDataValueText( painter, index, centerPoint, angleLen*sum / 360 ); + } + } +} + + +/** + * Auxiliary method returning a point to a given boundary + * rectangle of the enclosed ellipse and an angle. + */ +QPointF RingDiagram::pointOnEllipse( const QRectF& rect, int dataset, int slice, bool outer, qreal angle, + qreal totalGapFactor, qreal totalExplodeFactor ) +{ + qreal angleLen = d->angleLens[ dataset ][ slice ]; + qreal startAngle = d->startAngles[ dataset ][ slice ]; + + const int rCount = rowCount() * 2; + + qreal level = outer ? ( rCount - dataset - 1 ) + 2 : ( rCount - dataset - 1 ) + 1; + + const qreal offsetX = rCount > 0 ? level * rect.width() / ( ( rCount + 1 ) * 2 ) : 0.0; + const qreal offsetY = rCount > 0 ? level * rect.height() / ( ( rCount + 1 ) * 2 ) : 0.0; + const qreal centerOffsetX = rCount > 0 ? totalExplodeFactor * rect.width() / ( ( rCount + 1 ) * 2 ) : 0.0; + const qreal centerOffsetY = rCount > 0 ? totalExplodeFactor * rect.height() / ( ( rCount + 1 ) * 2 ) : 0.0; + const qreal gapOffsetX = rCount > 0 ? totalGapFactor * rect.width() / ( ( rCount + 1 ) * 2 ) : 0.0; + const qreal gapOffsetY = rCount > 0 ? totalGapFactor * rect.height() / ( ( rCount + 1 ) * 2 ) : 0.0; + + qreal explodeAngleRad = DEGTORAD( angle ); + qreal cosAngle = cos( explodeAngleRad ); + qreal sinAngle = -sin( explodeAngleRad ); + qreal explodeAngleCenterRad = DEGTORAD( startAngle + angleLen / 2.0 ); + qreal cosAngleCenter = cos( explodeAngleCenterRad ); + qreal sinAngleCenter = -sin( explodeAngleCenterRad ); + return QPointF( ( offsetX + gapOffsetX ) * cosAngle + centerOffsetX * cosAngleCenter + rect.center().x(), + ( offsetY + gapOffsetY ) * sinAngle + centerOffsetY * sinAngleCenter + rect.center().y() ); +} + +/*virtual*/ +qreal RingDiagram::valueTotals() const +{ + const int rCount = rowCount(); + const int colCount = columnCount(); + qreal total = 0.0; + for ( int i = 0; i < rCount; ++i ) { + for ( int j = 0; j < colCount; ++j ) { + total += qAbs( model()->data( model()->index( i, j, rootIndex() ) ).toReal() ); // checked + } + } + return total; +} + +qreal RingDiagram::valueTotals( int dataset ) const +{ + Q_ASSERT( dataset < model()->rowCount() ); + const int colCount = columnCount(); + qreal total = 0.0; + for ( int j = 0; j < colCount; ++j ) { + total += qAbs( model()->data( model()->index( dataset, j, rootIndex() ) ).toReal() ); // checked + } + return total; +} + +/*virtual*/ +qreal RingDiagram::numberOfValuesPerDataset() const +{ + return model() ? model()->columnCount( rootIndex() ) : 0.0; +} + +qreal RingDiagram::numberOfDatasets() const +{ + return model() ? model()->rowCount( rootIndex() ) : 0.0; +} + +/*virtual*/ +qreal RingDiagram::numberOfGridRings() const +{ + return 1; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.h new file mode 100644 index 00000000..6ab9d708 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRINGDIAGRAM_H +#define KDCHARTRINGDIAGRAM_H + +#include "KDChartAbstractPieDiagram.h" + +namespace KDChart { + +/** + * @brief RingDiagram defines a common ring diagram + */ +class KDCHART_EXPORT RingDiagram : public AbstractPieDiagram +{ + Q_OBJECT + + Q_DISABLE_COPY( RingDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( RingDiagram, PolarCoordinatePlane ) + +public: + explicit RingDiagram( + QWidget* parent = 0, PolarCoordinatePlane* plane = 0 ); + virtual ~RingDiagram(); + +protected: + // Implement AbstractDiagram + /** \reimpl */ + virtual void paint( PaintContext* paintContext ); +public: + /** \reimpl */ + virtual void resize( const QSizeF& area ); + + // Implement AbstractPolarDiagram + /** \reimpl */ + virtual qreal valueTotals() const; + /** \reimpl */ + virtual qreal numberOfValuesPerDataset() const; + virtual qreal numberOfDatasets() const; + /** \reimpl */ + virtual qreal numberOfGridRings() const; + + qreal valueTotals( int dataset ) const; + + virtual RingDiagram * clone() const; + + /** + * Returns true if both diagrams have the same settings. + */ + bool compare( const RingDiagram* other ) const; + + void setRelativeThickness( bool relativeThickness ); + bool relativeThickness() const; + + virtual void setExpandWhenExploded( bool expand ); + virtual bool expandWhenExploded() const; + +protected: + /** \reimpl */ + virtual const QPair calculateDataBoundaries() const; + void paintEvent( QPaintEvent* ); + void resizeEvent( QResizeEvent* ); + +private: + void drawOneSlice( QPainter* painter, uint dataset, uint slice, qreal granularity ); + void drawPieSurface( QPainter* painter, uint dataset, uint slice, qreal granularity ); + QPointF pointOnEllipse( const QRectF& rect, int dataset, int slice, bool outer, qreal angle, + qreal totalGapFactor, qreal totalExplodeFactor ); +}; // End of class RingDiagram + +} + +#endif // KDCHARTRINGDIAGRAM_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram_p.h new file mode 100644 index 00000000..c65bb0c2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartRingDiagram_p.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTRINGDIAGRAM_P_H +#define KDCHARTRINGDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractPieDiagram_p.h" + +#include + + +namespace KDChart { + +/** + * \internal + */ +class RingDiagram::Private : public AbstractPieDiagram::Private +{ + friend class RingDiagram; +public: + Private(); + ~Private(); + + Private( const Private& rhs ) : + AbstractPieDiagram::Private( rhs ) + { + relativeThickness = rhs.relativeThickness; + expandWhenExploded = rhs.expandWhenExploded; + } + +protected: + // this information needed temporarily at drawing time + QVector< QVector < qreal > > startAngles; + QVector< QVector < qreal > > angleLens; + QRectF position; + qreal size; + bool relativeThickness; + bool expandWhenExploded; + // polygons associated to their 3d depth + QMap polygonsToRender; +}; + +KDCHART_IMPL_DERIVED_DIAGRAM( RingDiagram, AbstractPieDiagram, PolarCoordinatePlane ) + +} + +#endif /* KDCHARTRINGDIAGRAM_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.cpp b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.cpp new file mode 100644 index 00000000..fe97860d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartThreeDPieAttributes.h" +#include "KDChartThreeDPieAttributes_p.h" + +#include + +#include + +#define d d_func() + +using namespace KDChart; + +ThreeDPieAttributes::Private::Private() + : useShadowColors( true ) +{ +} + + +ThreeDPieAttributes::ThreeDPieAttributes() + : AbstractThreeDAttributes( new Private() ) +{ + init(); +} + +ThreeDPieAttributes::ThreeDPieAttributes( const ThreeDPieAttributes& r ) + : AbstractThreeDAttributes( new Private( *r.d) ) +{ +} + +ThreeDPieAttributes& ThreeDPieAttributes::operator= ( const ThreeDPieAttributes& r ) +{ + if ( this == &r ) + return *this; + + *d = *r.d; + + return *this; +} + +ThreeDPieAttributes::~ThreeDPieAttributes() +{ +} + +void ThreeDPieAttributes::init() +{ + setDepth( -10 ); +} + + +bool ThreeDPieAttributes::operator==( const ThreeDPieAttributes& r ) const +{ + return ( useShadowColors() == r.useShadowColors() && + AbstractThreeDAttributes::operator==(r)); +} + +void ThreeDPieAttributes::setUseShadowColors( bool shadowColors ) +{ + d->useShadowColors = shadowColors; +} + +bool ThreeDPieAttributes::useShadowColors() const +{ + return d->useShadowColors; +} + +#if !defined(QT_NO_DEBUG_STREAM) +QDebug operator<<(QDebug dbg, const KDChart::ThreeDPieAttributes& a) +{ + dbg << "KDChart::ThreeDPieAttributes("; + dbg = operator <<( dbg, static_cast(a) ); + dbg << "useShadowColors="<< a.useShadowColors() << ")"; + return dbg; +} +#endif /* QT_NO_DEBUG_STREAM */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.h new file mode 100644 index 00000000..8742424d --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDPIEATTRIBUTES_H +#define KDCHARTTHREEDPIEATTRIBUTES_H + +#include +#include "KDChartAbstractThreeDAttributes.h" +#include "KDChartGlobal.h" + +namespace KDChart { + + /** + * @brief A set of 3D pie attributes + */ + class KDCHART_EXPORT ThreeDPieAttributes : public AbstractThreeDAttributes + { + public: + ThreeDPieAttributes(); + ThreeDPieAttributes( const ThreeDPieAttributes& ); + ThreeDPieAttributes &operator= ( const ThreeDPieAttributes& ); + + ~ThreeDPieAttributes(); + + /* threeD Pies specific */ + void setUseShadowColors( bool useShadowColors ); + bool useShadowColors() const; + + bool operator==( const ThreeDPieAttributes& ) const; + inline bool operator!=( const ThreeDPieAttributes& other ) const { return !operator==(other); } + + KDCHART_DECLARE_SWAP_DERIVED(ThreeDPieAttributes) + +private: + KDCHART_DECLARE_PRIVATE_DERIVED(ThreeDPieAttributes) + + }; // End of class ThreeDPieAttributes + +} + +#if !defined(QT_NO_DEBUG_STREAM) +KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::ThreeDPieAttributes& ); +#endif /* QT_NO_DEBUG_STREAM */ + +KDCHART_DECLARE_SWAP_SPECIALISATION_DERIVED( KDChart::ThreeDPieAttributes ) + +QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO( KDChart::ThreeDPieAttributes, Q_MOVABLE_TYPE ); +QT_END_NAMESPACE + +Q_DECLARE_METATYPE( KDChart::ThreeDPieAttributes ) + +#endif // KDCHARTTHREEDPIEATTRIBUTES_H diff --git a/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes_p.h b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes_p.h new file mode 100644 index 00000000..70f22a35 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Polar/KDChartThreeDPieAttributes_p.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTHREEDPIEATTRIBUTES_P_H +#define KDCHARTTHREEDPIEATTRIBUTES_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + + +namespace KDChart { + +/** +* \internal +*/ +class ThreeDPieAttributes::Private : public AbstractThreeDAttributes::Private +{ + friend class ThreeDPieAttributes; +public: + Private(); + +private: + bool useShadowColors; +}; + +KDCHART_DERIVED_PRIVATE_FOOTER(ThreeDPieAttributes, AbstractThreeDAttributes) + +} + + +#endif // KDCHARTTHREEDPIEATTRIBUTES_P_H diff --git a/massif-visualizer/kdchart/src/KDChart/ReverseMapper.cpp b/massif-visualizer/kdchart/src/KDChart/ReverseMapper.cpp new file mode 100644 index 00000000..9a28c1ec --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/ReverseMapper.cpp @@ -0,0 +1,181 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "ReverseMapper.h" + +#include + +#include +#include +#include +#include +#include + +#include "KDChartAbstractDiagram.h" +#include "ChartGraphicsItem.h" + +using namespace KDChart; + +ReverseMapper::ReverseMapper() + : m_scene( 0 ) + , m_diagram( 0 ) +{ +} + +ReverseMapper::ReverseMapper( AbstractDiagram* diagram ) + : m_scene( 0 ) + , m_diagram( diagram ) +{ +} + +ReverseMapper::~ReverseMapper() +{ + delete m_scene; m_scene = 0; +} + +void ReverseMapper::setDiagram( AbstractDiagram* diagram ) +{ + + m_diagram = diagram; +} + +void ReverseMapper::clear() +{ + m_itemMap.clear(); + delete m_scene; + m_scene = new QGraphicsScene(); +} + +QModelIndexList ReverseMapper::indexesIn( const QRect& rect ) const +{ + Q_ASSERT( m_diagram ); + if ( m_scene && m_scene->sceneRect().intersects( rect ) ) { + QList items = m_scene->items( rect ); + QModelIndexList indexes; + Q_FOREACH( QGraphicsItem* item, items ) { + ChartGraphicsItem* i = qgraphicsitem_cast( item ); + if ( i ) { + QModelIndex index ( m_diagram->model()->index( i->row(), i->column(), m_diagram->rootIndex() ) ); // checked + indexes << index; + } + } + return indexes; + } else { + return QModelIndexList(); + } +} + +QModelIndexList ReverseMapper::indexesAt( const QPointF& point ) const +{ + Q_ASSERT( m_diagram ); + if ( m_scene && m_scene->sceneRect().contains( point ) ) { + QList items = m_scene->items( point ); + QModelIndexList indexes; + Q_FOREACH( QGraphicsItem* item, items ) { + ChartGraphicsItem* i = qgraphicsitem_cast( item ); + if ( i ) { + QModelIndex index ( m_diagram->model()->index( i->row(), i->column(), m_diagram->rootIndex() ) ); // checked + if ( !indexes.contains(index) ) + indexes << index; + } + } + return indexes; + } else { + return QModelIndexList(); + } +} + +QPolygonF ReverseMapper::polygon( int row, int column ) const +{ + if ( !m_diagram->model()->hasIndex( row, column, m_diagram->rootIndex() ) ) + return QPolygon(); + const QModelIndex index = m_diagram->model()->index( row, column, m_diagram->rootIndex() ); // checked + return m_itemMap.contains( index ) ? m_itemMap[ index ]->polygon() : QPolygon(); +} + +QRectF ReverseMapper::boundingRect( int row, int column ) const +{ + if ( !m_diagram->model()->hasIndex( row, column, m_diagram->rootIndex() ) ) + return QRectF(); + const QModelIndex index = m_diagram->model()->index( row, column, m_diagram->rootIndex() ); // checked + return m_itemMap.contains( index ) ? m_itemMap[ index ]->polygon().boundingRect() : QRectF(); +} + +void ReverseMapper::addItem( ChartGraphicsItem* item ) +{ + Q_ASSERT( m_scene ); + m_scene->addItem( item ); + m_itemMap.insert( m_diagram->model()->index( item->row(), item->column(), m_diagram->rootIndex() ), item ); // checked +} + +void ReverseMapper::addRect( int row, int column, const QRectF& rect ) +{ + addPolygon( row, column, QPolygonF( rect ) ); +} + +void ReverseMapper::addPolygon( int row, int column, const QPolygonF& polygon ) +{ + ChartGraphicsItem* item = new ChartGraphicsItem( row, column ); + item->setPolygon( polygon ); + addItem( item ); +} + +void ReverseMapper::addCircle( int row, int column, const QPointF& location, const QSizeF& diameter ) +{ + QPainterPath path; + QPointF ossfet( -0.5*diameter.width(), -0.5*diameter.height() ); + path.addEllipse( QRectF( location + ossfet, diameter ) ); + addPolygon( row, column, QPolygonF( path.toFillPolygon() ) ); +} + +void ReverseMapper::addLine( int row, int column, const QPointF& from, const QPointF& to ) +{ + // that's no line, dude... make a small circle around that point, instead + if ( from == to ) + { + addCircle( row, column, from, QSizeF( 1.5, 1.5 ) ); + return; + } + // lines do not make good polygons to click on. we calculate a 2 + // pixel wide rectangle, where the original line is excatly + // centered in. + // make a 3 pixel wide polygon from the line: + static const QPointF pixel( 1.0, 1.0 ); + QPointF left, right; + if ( from.x() < to.x() ) { + left = from; + right = to; + } else { + right = from; + left = to; + } + const QPointF lineVector( right - left ); + const qreal lineVectorLength = sqrt( lineVector.x() * lineVector.x() + lineVector.y() * lineVector.y() ); + const QPointF lineVectorUnit( lineVector / lineVectorLength ); + const QPointF normOfLineVectorUnit( -lineVectorUnit.y(), lineVectorUnit.x() ); + // now the four polygon end points: + const QPointF one( left - lineVectorUnit + normOfLineVectorUnit ); + const QPointF two( left - lineVectorUnit - normOfLineVectorUnit ); + const QPointF three( right + lineVectorUnit - normOfLineVectorUnit ); + const QPointF four( right + lineVectorUnit + normOfLineVectorUnit ); + addPolygon( row, column, QPolygonF() << one << two << three << four ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/ReverseMapper.h b/massif-visualizer/kdchart/src/KDChart/ReverseMapper.h new file mode 100644 index 00000000..51b73665 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/ReverseMapper.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef REVERSEMAPPER_H +#define REVERSEMAPPER_H + +#include +#include + +QT_BEGIN_NAMESPACE +class QRectF; +class QGraphicsScene; +class QPolygonF; +QT_END_NAMESPACE + +namespace KDChart { + + class AbstractDiagram; + class ChartGraphicsItem; + + /** + * @brief The ReverseMapper stores information about objects on a chart and their respective model indexes + * \internal + */ + class ReverseMapper + { + + public: + ReverseMapper(); + explicit ReverseMapper( AbstractDiagram* diagram ); + + ~ReverseMapper(); + + void setDiagram( AbstractDiagram* diagram ); + + void clear(); + + QModelIndexList indexesAt( const QPointF& point ) const; + QModelIndexList indexesIn( const QRect& rect ) const; + + QPolygonF polygon( int row, int column ) const; + QRectF boundingRect( int row, int column ) const; + + void addItem( ChartGraphicsItem* item ); + + // convenience methods: + void addPolygon( int row, int column, const QPolygonF& polygon ); + void addRect( int row, int column, const QRectF& rect ); + void addCircle( int row, int column, const QPointF& location, const QSizeF& diameter ); + void addLine( int row, int column, const QPointF& from, const QPointF& to ); + + private: + QGraphicsScene* m_scene; + AbstractDiagram* m_diagram; + QHash m_itemMap; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.cpp new file mode 100644 index 00000000..8072effa --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartAbstractTernaryDiagram.h" +#include "KDChartAbstractTernaryDiagram_p.h" + +#include "KDChartTernaryCoordinatePlane.h" + +using namespace KDChart; + +AbstractTernaryDiagram::Private::Private() + : AbstractDiagram::Private() +{ +} + +void AbstractTernaryDiagram::init() +{ +} + +#define d d_func() + +AbstractTernaryDiagram::AbstractTernaryDiagram( QWidget* parent, + TernaryCoordinatePlane* plane ) + : AbstractDiagram( parent, plane ) +{ +} + +AbstractTernaryDiagram::~AbstractTernaryDiagram() +{ + while ( ! d->axesList.isEmpty() ) { + TernaryAxis* axis = d->axesList.takeFirst(); + delete axis; + } +} + +void AbstractTernaryDiagram::addAxis( TernaryAxis* axis ) +{ + d->axesList.append( axis ); + // FIXME update +} + +void AbstractTernaryDiagram::takeAxis( TernaryAxis* axis ) +{ + + int index = d->axesList.indexOf( axis ); + if ( index != -1 ) + d->axesList.removeAt( index ); + // FIXME update +} + +TernaryAxisList AbstractTernaryDiagram::axes() const +{ + return d->axesList; +} + +void AbstractTernaryDiagram::paint (PaintContext *paintContext) +{ + d->paint( paintContext ); +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.h new file mode 100644 index 00000000..335641f7 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTTERNARYDIAGRAM_H +#define KDCHARTABSTRACTTERNARYDIAGRAM_H + +#include "KDChartAbstractDiagram.h" +#include "KDChartTernaryAxis.h" + +namespace KDChart { + + class TernaryCoordinatePlane; + class TernaryAxis; + + /** + * @brief Base class for diagrams based on a ternary coordinate plane. + */ + class KDCHART_EXPORT AbstractTernaryDiagram : public AbstractDiagram + { + Q_OBJECT + Q_DISABLE_COPY( AbstractTernaryDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractTernaryDiagram, + TernaryCoordinatePlane ) + + public: + explicit AbstractTernaryDiagram ( QWidget* parent = 0, + TernaryCoordinatePlane* plane = 0 ); + virtual ~AbstractTernaryDiagram(); + + virtual void resize (const QSizeF &area) = 0; + virtual void paint (PaintContext *paintContext); + + virtual void addAxis( TernaryAxis* axis ); + virtual void takeAxis( TernaryAxis* axis ); + virtual TernaryAxisList axes () const; + + protected: + virtual const QPair< QPointF, QPointF > calculateDataBoundaries () const = 0; + + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram_p.h new file mode 100644 index 00000000..85a1ddca --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartAbstractTernaryDiagram_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTABSTRACTTERNARYDIAGRAM_P_H +#define KDCHARTABSTRACTTERNARYDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractTernaryDiagram.h" + +#include "KDChartTernaryCoordinatePlane.h" +#include +#include +#include +#include "KDChartPainterSaver_p.h" + +#include "ReverseMapper.h" +#include "ChartGraphicsItem.h" +#include + +namespace KDChart { + +/** + * \internal + */ + class AbstractTernaryDiagram::Private : public AbstractDiagram::Private + { + friend class AbstractTernaryDiagram; + public: + Private(); + ~Private() {} + + Private( const Private& rhs ) : + AbstractDiagram::Private( rhs ), + // Do not copy axes and reference diagrams. + axesList(), + referenceDiagram( 0 ) + { + } + + TernaryAxisList axesList; + + AbstractTernaryDiagram* referenceDiagram; + QPointF referenceDiagramOffset; + + void drawPoint( QPainter* p, int row, int column, + const QPointF& widgetLocation ) + { + // Q_ASSERT( false ); // unused, to be removed + static const qreal Diameter = 5.0; + static const qreal Radius = Diameter / 2.0; + QRectF ellipseRect( widgetLocation - QPointF( Radius, Radius ), + QSizeF( Diameter, Diameter ) ); + p->drawEllipse( ellipseRect ); + + reverseMapper.addRect( row, column, ellipseRect ); + } + + virtual void paint( PaintContext* paintContext ) + { + paintContext->painter()->setRenderHint( QPainter::Antialiasing, + antiAliasing ); + if ( !axesList.isEmpty() ) { + + Q_FOREACH( TernaryAxis* axis, axesList ) { + PainterSaver s( paintContext->painter() ); + axis->paintCtx( paintContext ); + } + } + } + }; + + KDCHART_IMPL_DERIVED_DIAGRAM( AbstractTernaryDiagram, AbstractDiagram, TernaryCoordinatePlane ) +} + +#endif /* KDCHARTABSTRACTTERNARYDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.cpp new file mode 100644 index 00000000..6c531468 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.cpp @@ -0,0 +1,283 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTernaryAxis.h" + +#include + +#include +#include + +#include "TernaryConstants.h" +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartAbstractTernaryDiagram.h" + + +#include "KDChartLayoutItems.h" +#include "KDChartTextLabelCache.h" + +using namespace KDChart; + +// m_label and m_fifty do not have to be pointers, once the class is +// pimpled (PrerenderedLabel is not published API) + +TernaryAxis::TernaryAxis ( AbstractTernaryDiagram* diagram) + : AbstractAxis( diagram ) + , m_position( KDChartEnums::PositionUnknown ) + , m_label( new PrerenderedLabel ) + , m_fifty( new PrerenderedLabel ) +{ + resetTitleTextAttributes(); + setPosition( KDChartEnums::PositionSouth ); // arbitrary + m_fifty->setText( QObject::tr( "50%" ) ); // const + // FIXME is this consistent with other diagram/axis/plane implementations? + diagram->addAxis( this ); +} + +TernaryAxis::~TernaryAxis() +{ + delete m_label; m_label = 0; + delete m_fifty; m_fifty = 0; +} + +void TernaryAxis::paintAll (QPainter &) +{ + // not used +} + +void TernaryAxis::paint (QPainter *) +{ + // not used +} + +void TernaryAxis::paintCtx (PaintContext * paintContext) +{ + QPainter* p = paintContext->painter(); + TernaryCoordinatePlane* plane = + (TernaryCoordinatePlane*) paintContext->coordinatePlane(); + // QObject* refArea = plane->parent(); + QRectF titleArea; + + // paint the axis label (across the triangle, that one): + QList labels; + labels << m_label << m_fifty; + Q_FOREACH( PrerenderedLabel* label, labels ) { + const QPixmap& pixmap = label->pixmap(); + QPointF point = plane->translate( label->position() ) + - label->referencePointLocation(); + p->drawPixmap( point, pixmap ); + } +} + +bool TernaryAxis::isEmpty() const +{ + // todo: what's this method for? + return false; +} + +QRect TernaryAxis::geometry () const +{ + return m_geometry; +} + +void TernaryAxis::setGeometry (const QRect &rect) +{ + m_geometry = rect; +} + +QSize TernaryAxis::minimumSize () const +{ + // todo: return realistic sizes + return QSize( 100, 100 ); +} + +QSize TernaryAxis::maximumSize () const +{ + return QSize( 300, 200 ); +} + +QSize TernaryAxis::sizeHint () const +{ + return QSize( 150, 100 ); +} + +Qt::Orientations TernaryAxis::expandingDirections () const +{ + return Qt::Vertical | Qt::Horizontal; +} + +const Position TernaryAxis::position () const +{ + return m_position; +} + +void TernaryAxis::setPosition (Position p) +{ + if ( p == position() ) return; + + if ( p != KDChartEnums::PositionWest + && p != KDChartEnums::PositionEast + && p != KDChartEnums::PositionSouth ) + { + qDebug() << "TernaryAxis::setPosition: only south, east and west are supported " + "positions for ternary axes."; + return; + } + + if ( m_title.isEmpty() ) + switch ( p.value() ) { + case KDChartEnums::PositionSouth: + m_label->setText( tr( "A" ) ); + break; + case KDChartEnums::PositionWest: + m_label->setText( tr( "C" ) ); + break; + case KDChartEnums::PositionEast: + m_label->setText( tr( "B" ) ); + break; + default: + break; + } + + m_position = p; + updatePrerenderedLabels(); // position has changed +} + +void TernaryAxis::setTitleText( const QString& text ) +{ + m_title = text; // do not remove + m_label->setText( text ); +} + +QString TernaryAxis::titleText() const +{ + return m_label->text(); +} + +void TernaryAxis::setTitleTextAttributes( const TextAttributes &a ) +{ + m_titleAttributes = a; + updatePrerenderedLabels(); +} + +TextAttributes TernaryAxis::titleTextAttributes() const +{ + return m_titleAttributes; +} + +void TernaryAxis::resetTitleTextAttributes() +{ + TextAttributes a; + m_titleAttributes = a; + updatePrerenderedLabels(); +} + +bool TernaryAxis::hasDefaultTitleTextAttributes() const +{ + TextAttributes a; + return m_titleAttributes == a; +} + +void TernaryAxis::updatePrerenderedLabels() +{ + TextAttributes attributes = titleTextAttributes(); + qreal axisLabelAngle = 0.0; + qreal fiftyMarkAngle = 0.0; + QPointF axisLabelPosition; + QPointF fiftyMarkPosition; + KDChartEnums::PositionValue fiftyMarkReferencePoint = KDChartEnums::PositionUnknown; + + switch ( position().value() ) { + case KDChartEnums::PositionSouth: + // this is the axis on the other side of A + axisLabelAngle = 0.0; + fiftyMarkAngle = 0.0; + axisLabelPosition = TriangleTop; + fiftyMarkPosition = 0.5 * AxisVector_B_C - RelMarkerLength * Norm_B_C; + fiftyMarkReferencePoint = KDChartEnums::PositionNorth; + break; + case KDChartEnums::PositionEast: + // this is the axis on the other side of B + axisLabelAngle = 240.0; + fiftyMarkAngle = 60; + axisLabelPosition = TriangleBottomLeft; + fiftyMarkPosition = AxisVector_B_C + 0.5 * AxisVector_C_A - RelMarkerLength * Norm_C_A; + fiftyMarkReferencePoint = KDChartEnums::PositionSouth; + break; + case KDChartEnums::PositionWest: + // this is the axis on the other side of C + axisLabelAngle = 120.0; + fiftyMarkAngle = 300.0; + axisLabelPosition = TriangleBottomRight; + fiftyMarkPosition = 0.5 * AxisVector_B_A + RelMarkerLength * Norm_B_A; + fiftyMarkReferencePoint = KDChartEnums::PositionSouth; + break; + case KDChartEnums::PositionUnknown: + break; // initial value + default: + qDebug() << "TernaryAxis::updatePrerenderedLabel: unknown location"; + }; + + m_label->setFont( attributes.font() ); + // m_label->setText( titleText() ); // done by setTitleText() + m_label->setAngle( axisLabelAngle ); + m_label->setPosition( axisLabelPosition ); + m_label->setReferencePoint( KDChartEnums::PositionSouth ); + QFont font = attributes.font(); + font.setPointSizeF( 0.85 * font.pointSizeF() ); + m_fifty->setFont( font ); + m_fifty->setAngle( fiftyMarkAngle ); + m_fifty->setPosition( fiftyMarkPosition ); + m_fifty->setReferencePoint( fiftyMarkReferencePoint ); +} + +QPair TernaryAxis::requiredMargins() const +{ + QSizeF topleft( 0.0, 0.0 ); + QSizeF bottomRight( 0.0, 0.0 ); + + switch ( position().value() ) { + case KDChartEnums::PositionSouth: + // the label of the south axis is, in fact, up north. + topleft.setHeight( m_label->pixmap().height() ); + bottomRight.setHeight( m_fifty->pixmap().height() ); + break; + case KDChartEnums::PositionWest: + bottomRight.setWidth( m_label->pixmap().width() + - m_label->referencePointLocation().x() ); + bottomRight.setHeight( m_label->pixmap().height() + - m_label->referencePointLocation().y() ); + break; + case KDChartEnums::PositionEast: + topleft.setWidth( m_label->pixmap().width() + - ( m_label->pixmap().width() + - m_label->referencePointLocation().x() ) ); + bottomRight.setHeight( m_label->pixmap().height() + - ( m_label->pixmap().height() + - m_label->referencePointLocation().y() ) ); + break; + default: + qDebug() << "TernaryAxis::requiredMargins: unknown location"; + } +// qDebug() << "TernaryAxis::requiredMargins:" << topleft << bottomRight; + return QPair( topleft, bottomRight ); +} diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.h new file mode 100644 index 00000000..d34dadd2 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryAxis.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYAXIS_H +#define KDCHARTTERNARYAXIS_H + + +#include +#include +#include + +class PrerenderedLabel; + +namespace KDChart { + + class AbstractTernaryDiagram; + + /** + * The class for ternary axes + */ + class KDCHART_EXPORT TernaryAxis : public AbstractAxis + { + Q_OBJECT + + Q_DISABLE_COPY( TernaryAxis ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( TernaryAxis, AbstractDiagram* ) + + public: + explicit TernaryAxis ( AbstractTernaryDiagram* diagram = 0 ); + ~TernaryAxis(); + + virtual void paintAll( QPainter &); + virtual void paint (QPainter *); + virtual void paintCtx (PaintContext *); + + virtual QRect geometry () const; + virtual void setGeometry (const QRect &rect); + + virtual bool isEmpty () const; + virtual QSize minimumSize () const; + virtual QSize maximumSize () const; + virtual QSize sizeHint () const; + virtual Qt::Orientations expandingDirections () const ; + + virtual const Position position () const; + virtual void setPosition (Position p); + + void setTitleText( const QString& text ); + QString titleText() const; + void setTitleTextAttributes( const TextAttributes &a ); + TextAttributes titleTextAttributes() const; + void resetTitleTextAttributes(); + bool hasDefaultTitleTextAttributes() const; + + QPair requiredMargins() const; + + private: + void updatePrerenderedLabels(); + // TODO, move class variables to private class + QRect m_geometry; + Position m_position; + + QString m_title; + TextAttributes m_titleAttributes; + + // FIXME (Mirko): Move axis labels from grid to here, do not + // expose them, just paint them. Use title text for text. Make + // a function to allow the coordinate plane to calculate the + // necessary margins, like this: + PrerenderedLabel* m_label; + PrerenderedLabel* m_fifty; + }; + + typedef QList TernaryAxisList; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.cpp new file mode 100644 index 00000000..69fde7a0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartTernaryCoordinatePlane_p.h" + +#include +#include + +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartTernaryAxis.h" +#include "KDChartAbstractTernaryDiagram.h" + +#include "TernaryConstants.h" + +using namespace KDChart; + +#define d d_func() + +TernaryCoordinatePlane::Private::Private() + : AbstractCoordinatePlane::Private() +{ +} + +TernaryCoordinatePlane::TernaryCoordinatePlane( Chart* parent ) + : AbstractCoordinatePlane( new Private(), parent ) +{ +} + +TernaryCoordinatePlane::~TernaryCoordinatePlane() +{ +} + +void TernaryCoordinatePlane::init() +{ +} + +void TernaryCoordinatePlane::addDiagram( AbstractDiagram* diagram ) +{ + Q_ASSERT_X ( dynamic_cast( diagram ), + "TernaryCoordinatePlane::addDiagram", "Only ternary " + "diagrams can be added to a ternary coordinate plane!" ); + AbstractCoordinatePlane::addDiagram ( diagram ); +} + +void TernaryCoordinatePlane::layoutDiagrams() +{ // this is our "resize event": + // all diagrams always take the same space, nothing to be done here + // the "inner" margin (adjustments to diagram coordinates) + QRectF diagramNativeRectangle ( QPointF( 0.0, 0.0 ), + QSizeF( TriangleWidth, TriangleHeight ) ); + QPair margins = grid()->requiredMargins(); + d->diagramRect = areaGeometry(); + diagramNativeRectangle.adjust + (-margins.first.width(), -margins.first.height(), + margins.second.width(), margins.second.height() ); + + // the "outer" margin (distance between diagram contents and area, + // determined by axis label overlap + { + QSizeF topleft( 0.0, 0.0 ); + QSizeF bottomRight( 0.0, 0.0 ); + Q_FOREACH( AbstractDiagram* abstractDiagram, diagrams() ) { + AbstractTernaryDiagram* diagram = + qobject_cast( abstractDiagram ); + Q_ASSERT( diagram ); + Q_FOREACH( TernaryAxis* axis, diagram->axes() ) { + QPair margin = axis->requiredMargins(); + topleft = topleft.expandedTo( margin.first ); + bottomRight = bottomRight.expandedTo( margin.second ); + } + } + d->diagramRectContainer = + d->diagramRect.adjusted( topleft.width(), + topleft.height(), + -bottomRight.width(), + -bottomRight.height() ); + } + + // now calculate isometric projection, x and y widget coordinate + // units, and location of (0.0, 0.0) in diagram coordinates + QPointF zeroZeroPoint = d->diagramRectContainer.bottomLeft(); + qreal w = d->diagramRectContainer.width(); + qreal h = d->diagramRectContainer.height(); + qreal usableWidth; + qreal usableHeight; + + if ( TriangleHeight * w > h ) { + // shorten width: + usableWidth = h / diagramNativeRectangle.height(); + usableHeight = h; + zeroZeroPoint.setX( zeroZeroPoint.x() + ( w - usableWidth ) / 2 ); + } else { + // reduce height: + usableWidth = w; + usableHeight = diagramNativeRectangle.height() * w; + zeroZeroPoint.setY( zeroZeroPoint.y() - ( h - usableHeight ) / 2 ); + } + // the rectangle has 1 as it's width, and TriangleHeight as it's + // height - so this is how we translate that to widget coordinates: + d->xUnit = usableWidth / diagramNativeRectangle.width(); // only because we normalize the values to [0..1] + d->yUnit = -usableHeight / diagramNativeRectangle.height(); + + // now move zeroZeroPoint so that it does not include the tick marks + { + qreal descent = diagramNativeRectangle.height() - TriangleHeight; + qreal rightShift = -diagramNativeRectangle.x(); + zeroZeroPoint += QPointF( rightShift * d->xUnit, descent * d->yUnit ); + } + + d->diagramRect.setBottomLeft( zeroZeroPoint ); + d->diagramRect.setTopRight( QPointF( usableWidth, -usableHeight ) + zeroZeroPoint ); +} + +const QPointF TernaryCoordinatePlane::translate( const QPointF& point ) const +{ + return QPointF( d->diagramRect.bottomLeft().x() + point.x() * d->xUnit, + d->diagramRect.bottomLeft().y() + point.y() * d->yUnit ); +} + +QSize TernaryCoordinatePlane::minimumSizeHint() const +{ + // FIXME temp + return QSize(); +} + +QSizePolicy TernaryCoordinatePlane::sizePolicy() const +{ + return QSizePolicy( QSizePolicy::MinimumExpanding, + QSizePolicy::MinimumExpanding ); +} + +void TernaryCoordinatePlane::paint( QPainter* painter ) +{ + PainterSaver s( painter ); + // FIXME: this is not a good location for that: + painter->setRenderHint(QPainter::Antialiasing, true ); + + AbstractDiagramList diags = diagrams(); + if ( !diags.isEmpty() ) + { + PaintContext ctx; + ctx.setPainter ( painter ); + ctx.setCoordinatePlane ( this ); + const QRectF drawArea( areaGeometry() ); + ctx.setRectangle ( drawArea ); + + // paint the coordinate system rulers: + Q_ASSERT( d->grid != 0 ); + d->grid->drawGrid( &ctx ); + + // paint the diagrams: + for ( int i = 0; i < diags.size(); i++ ) + { + PainterSaver diagramPainterSaver( painter ); + diags[i]->paint ( &ctx ); + } + } +} + +DataDimensionsList TernaryCoordinatePlane::getDataDimensionsList() const +{ // not needed + return DataDimensionsList(); +} + +TernaryGrid* TernaryCoordinatePlane::grid() const +{ + TernaryGrid* ternaryGrid = static_cast( d->grid ); + Q_ASSERT( dynamic_cast( d->grid ) ); + return ternaryGrid; +} + +#undef d diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.h new file mode 100644 index 00000000..6b7b4073 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYCOORDINATEPLANE_H +#define KDCHARTTERNARYCOORDINATEPLANE_H + +#include "KDChartAbstractCoordinatePlane.h" + +namespace KDChart { + + class TernaryGrid; + + /** + * @brief Ternary coordinate plane + */ + class KDCHART_EXPORT TernaryCoordinatePlane + : public AbstractCoordinatePlane + { + Q_OBJECT + Q_DISABLE_COPY( TernaryCoordinatePlane ) + KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( TernaryCoordinatePlane, Chart* ) + + public: + explicit TernaryCoordinatePlane( Chart* parent = 0 ); + ~TernaryCoordinatePlane(); + + void addDiagram( AbstractDiagram* diagram ); + + void layoutDiagrams(); + + const QPointF translate ( const QPointF& diagramPoint ) const; + + void paint( QPainter* ); + DataDimensionsList getDataDimensionsList() const; + + /** \reimpl */ + QSize minimumSizeHint() const; + /** \reimpl */ + QSizePolicy sizePolicy() const; + + private: + TernaryGrid* grid() const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane_p.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane_p.h new file mode 100644 index 00000000..7f51a4f3 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryCoordinatePlane_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYCOORDINATEPLANE_P_H +#define KDCHARTTERNARYCOORDINATEPLANE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "KDChartTernaryGrid.h" +#include "KDChartAbstractCoordinatePlane_p.h" + +#include + +namespace KDChart { + + class TernaryAxis; + + /** + * \internal + */ + + class TernaryCoordinatePlane::Private : public AbstractCoordinatePlane::Private + { + friend class TernaryCoordinatePlane; + + public: + explicit Private(); + + virtual ~Private() { + // grid is delete in base class dtor + } + + virtual void initialize() + { + grid = new TernaryGrid(); + xUnit = 0.0; + yUnit = 0.0; + } + + QList axes; + + TextAttributes labelAttributes; + + // the diagram is drawn within this rectangle, which is within + // this widget: + QRectF diagramRectContainer; + // this is the "frame" of the plot area + QRectF diagramRect; + // multiply m_xUnit with a [0..1] value to get an isometric + // widget coordinate + qreal xUnit; + // same for y: + qreal yUnit; + + }; + + KDCHART_IMPL_DERIVED_PLANE(TernaryCoordinatePlane, AbstractCoordinatePlane) +} + +#endif /* KDCHARTTERNARYCOORDINATEPLANE_P_H */ diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.cpp new file mode 100644 index 00000000..5072ebe3 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.cpp @@ -0,0 +1,216 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTernaryGrid.h" + +#include + +#include +#include + +#include +#include + +#include "TernaryPoint.h" +#include "TernaryConstants.h" +#include "KDChartPaintContext.h" +#include "KDChartPainterSaver_p.h" +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartPrintingParameters.h" + +using namespace KDChart; + +TickInfo::TickInfo( qreal _percentage, int _depth ) + : percentage ( _percentage ) + , depth( _depth ) +{ +} + +bool KDChart::operator==(const TickInfo& left, const TickInfo& right) +{ + return fabs( left.percentage - right.percentage ) + <= std::numeric_limits::epsilon() + && left.depth == right.depth; +} + +TernaryGrid::TernaryGrid() + : AbstractGrid() +{ +} + +TernaryGrid::~TernaryGrid() +{ +} + +void TernaryGrid::drawGrid( PaintContext* context ) +{ + static const int GridLineDistanceTreshold = 20; // pixels between each grid line + + QPainter& painter = *context->painter(); // recover from pointer madness + PainterSaver s( &painter ); // can i have a reference based version of that? + TernaryCoordinatePlane* plane = dynamic_cast(context->coordinatePlane()); + Q_ASSERT_X ( plane, "TernaryGrid::drawGrid", + "Bad function call: PaintContext::coodinatePlane() NOT a ternary plane." ); + + // translate the points and see how many grid lines we can draw: + const int MaxDepth = 3; + qreal xPixels = plane->translate( TriangleBottomRight ).x() - + plane->translate( TriangleBottomLeft ).x(); + int granularity = 20; + if ( xPixels > 10 * GridLineDistanceTreshold ) granularity = 10; + if ( xPixels > 20 * GridLineDistanceTreshold ) granularity = 5; + + m_tickInfo.clear(); + for ( int i = granularity; i < 100; i+=granularity ) + { + TickInfo tick( ( 1.0 * i ) / 100.0, 2 ); + if ( i % 10 == 0 ) tick.depth = 1; + if ( i % 20 == 0 ) tick.depth = 0; + m_tickInfo.append( tick ); + } + + QVector lines[MaxDepth]; + {Q_FOREACH( const TickInfo& tick, m_tickInfo ) { + const qreal& percent = tick.percentage; + { // draw parallels to B + TernaryPoint ternaryStart( percent, 1.0 - percent ); + TernaryPoint ternaryEnd( 0.0, 1.0 - percent ); + QPointF start( translate( ternaryStart ) ); + QPointF end( translate( ternaryEnd ) ); + lines[tick.depth].append( QLineF( plane->translate( start ), + plane->translate( end ) ) ); + } + { // draw parallels to C + TernaryPoint ternaryStart( percent, 0.0 ); + TernaryPoint ternaryEnd( 0.0, percent ); + QPointF start( translate( ternaryStart ) ); + QPointF end( translate( ternaryEnd ) ); + lines[tick.depth].append( QLineF( plane->translate( start ), + plane->translate( end ) ) ); + } + { // draw parallels to A + TernaryPoint ternaryStart( percent, 1.0 - percent ); + TernaryPoint ternaryEnd( percent, 0.0 ); + QPointF start( translate( ternaryStart ) ); + QPointF end( translate( ternaryEnd ) ); + lines[tick.depth].append( QLineF( plane->translate( start ), + plane->translate( end ) ) ); + } + }} + + // now draw the lines: + painter.setPen( PrintingParameters::scalePen( QPen( QColor( "lightgray" ), 1 ) ) ); + painter.setBrush( QColor( "lightgray" ) ); + painter.drawLines( lines[2] ); + painter.setPen( PrintingParameters::scalePen( QPen( QColor( "gray" ), 1 ) ) ); + painter.setBrush( QColor( "gray" ) ); + painter.drawLines( lines[1] ); + painter.setPen( PrintingParameters::scalePen( QPen( QColor( "darkslategray" ), 1 ) ) ); + painter.setBrush( QColor( "darkslategray" ) ); + painter.drawLines( lines[0] ); + + // now draw the triangle (this could be part of the axis, in fact): + painter.setPen( PrintingParameters::scalePen( QPen( Qt::black, 1 ) ) ); + // make sure this does not fill, otherwise it wipes the contents + // of the triangle (doh!): + painter.setBrush( Qt::NoBrush ); + QPolygonF points; + points << plane->translate( TriangleBottomLeft ) + << plane->translate( TriangleBottomRight ) + << plane->translate( TriangleTop ); + painter.drawPolygon( points ); + + // now draw the ticks: + painter.setPen( PrintingParameters::scalePen( QPen( Qt::black ) ) ); + painter.setBrush( Qt::black ); + + QVector ticks; + // prepare list of percentages, then calculate lines: + QVector percentages( m_tickInfo ); + // I have commented those out, I think it looks ugly if they are + // enabled: + // percentages.prepend( 0.0 ); + // percentages.append( 1.0 ); + + // FIXME this may need a predicate that takes eplison into account + // (but it does not hurt, since it will not make the painter + // paint two lines): + percentages.erase( std::unique( percentages.begin(), percentages.end() ), + percentages.end() ); + + {Q_FOREACH( const TickInfo& tick, percentages ) { + const qreal& percent = tick.percentage; + { // BC axis markers: + const QPointF markerDistance( FullMarkerDistanceBC + / ( tick.depth + 1 ) ); + QPointF start( percent, 0.0 ); + ticks.append( QLineF( plane->translate( start ), + plane->translate( start - markerDistance ) ) ); + } + { // AC axis markers: + const QPointF markerDistance( FullMarkerDistanceAC + / ( tick.depth + 1 ) ); + const QPointF start( TriangleBottomRight + percent * AxisVector_C_A ); + const QPointF end( start + markerDistance ); + ticks.append( QLineF( plane->translate( start ), + plane->translate( end ) ) ); + } + { + // AB axis markers: + const QPointF markerDistance( FullMarkerDistanceBA + / ( tick.depth +1 ) ); + const QPointF start( percent * AxisVector_B_A ); + const QPointF end( start + markerDistance ); + ticks.append( QLineF( plane->translate( start ), + plane->translate( end ) ) ); + } + }} + painter.drawLines( ticks ); +} + +DataDimensionsList TernaryGrid::calculateGrid( const DataDimensionsList& ) const +{ + return DataDimensionsList(); +} + +QPair TernaryGrid::requiredMargins() const +{ +// qreal topMargin = ( FullMarkerDistanceBA * RelMarkerLength ).x(); + qreal topMargin = 0.0; // no markers on tip of triangle + qreal leftMargin = fabs( FullMarkerDistanceBA.x() ); + qreal bottomMargin = fabs( FullMarkerDistanceBC.y() ); +// qDebug() << "TernaryGrid::requiredMargins: leftMargin:" << leftMargin +// << ", bottomMargin:" << bottomMargin +// << ", topMargin:" << topMargin +// << ", FullMarkerDistanceBC:" << FullMarkerDistanceBC +// << ", FullMarkerDistanceBA:" << FullMarkerDistanceBA +// << ", FullMarkerDistanceAC:" << FullMarkerDistanceAC +// << ", RelMarkerLength:" << RelMarkerLength; + return QPair + ( QSizeF( leftMargin, topMargin ), + QSizeF( leftMargin, bottomMargin ) ); +} + +const QVector& TernaryGrid::tickInfo() const +{ + return m_tickInfo; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.h new file mode 100644 index 00000000..7172172f --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryGrid.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYGRID_H +#define KDCHARTTERNARYGRID_H + +#include + +#include "KDChartAbstractGrid.h" +#include "KDChartTextLabelCache.h" + +namespace KDChart { + + struct TickInfo { + TickInfo( qreal percentage = 0, int depth = 0 ); + qreal percentage; + int depth; + }; + + bool operator==(const TickInfo&, const TickInfo& ); + + class PaintContext; + + // VERIFY: Grids are not public API, are they? + class TernaryGrid : public AbstractGrid + { + public: + TernaryGrid(); + + virtual ~TernaryGrid(); + + void drawGrid( PaintContext* context ); + DataDimensionsList calculateGrid( const DataDimensionsList& rawDataDimensions ) const; + + /** Returns two QSizeF objects specifying the dimension of the + margins needed between each corner of the diagram and the + border of the drawing area. Margins are required because + the tick marks are placed outside of the trianges + containing rectangle. + The margins are returned in diagram coordinates, + since the grid does not know about widget coordinates. + */ + QPair requiredMargins() const; + /** Return the locations of the grid lines, so that axes can + draw axis rulers at the correct positions. + This information is valid after the grid has been + painted (that is, the axes need to be painted after the + grid. */ + const QVector& tickInfo() const; + private: + QVector m_tickInfo; + // QList m_labels; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.cpp new file mode 100644 index 00000000..38a4dff8 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.cpp @@ -0,0 +1,158 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTernaryLineDiagram.h" +#include "KDChartTernaryLineDiagram_p.h" + +#include + +#include + +#include + +#include "KDChartLineAttributes.h" +#include "KDChartDataValueAttributes.h" +#include "KDChartMarkerAttributes.h" +#include "TernaryPoint.h" +#include "TernaryConstants.h" +#include "KDChartPainterSaver_p.h" + +using namespace KDChart; + +#define d d_func() + +TernaryLineDiagram::Private::Private() + : AbstractTernaryDiagram::Private() +{ +} + +TernaryLineDiagram::TernaryLineDiagram ( QWidget* parent, + TernaryCoordinatePlane* plane ) + : AbstractTernaryDiagram( new Private(), parent, plane ) +{ + init(); + setDatasetDimensionInternal( 3 ); // the third column is implicit + + DataValueAttributes dataValueAttributes; + dataValueAttributes.setVisible( true ); + MarkerAttributes markerAttributes; + markerAttributes.setMarkerStyle( MarkerAttributes::MarkerCircle ); + markerAttributes.setVisible( true ); + dataValueAttributes.setMarkerAttributes( markerAttributes ); + attributesModel()->setDefaultForRole( + KDChart::DataValueLabelAttributesRole, + qVariantFromValue( dataValueAttributes ) ); +} + +TernaryLineDiagram::~TernaryLineDiagram() +{ +} + +void TernaryLineDiagram::init() +{ +} + +void TernaryLineDiagram::resize (const QSizeF& area) +{ + Q_UNUSED( area ); +} + +void TernaryLineDiagram::paint (PaintContext *paintContext) +{ + d->reverseMapper.clear(); + + d->paint( paintContext ); + // sanity checks: + if ( model() == 0 ) return; + + QPainter* p = paintContext->painter(); + PainterSaver s( p ); + + TernaryCoordinatePlane* plane = + (TernaryCoordinatePlane*) paintContext->coordinatePlane(); + Q_ASSERT( plane ); + + qreal x, y, z; + + // for some reason(?) TernaryPointDiagram is using per-diagram DVAs only: + const DataValueAttributes attrs( dataValueAttributes() ); + + d->forgetAlreadyPaintedDataValues(); + + int columnCount = model()->columnCount( rootIndex() ); + QPointF start; + for (int column=0; columnrowCount( rootIndex() ); + for ( int row = 0; row < numrows; row++ ) + { + // see if there is data otherwise skip + QModelIndex base = model()->index( row, column ); // checked + if ( ! model()->data( base ).isNull() ) + { + p->setPen( PrintingParameters::scalePen( pen( base ) ) ); + p->setBrush( brush( base ) ); + + // retrieve data + x = qMax( model()->data( model()->index( row, column, rootIndex() ) ).toReal(), // checked + 0.0 ); + y = qMax( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked + 0.0 ); + z = qMax( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked + 0.0 ); + + qreal total = x + y + z; + if ( fabs( total ) > 3 * std::numeric_limits::epsilon() ) { + TernaryPoint tPunkt( x / total, y / total ); + QPointF diagramLocation = translate( tPunkt ); + QPointF widgetLocation = plane->translate( diagramLocation ); + + if ( row > 0 ) { + p->drawLine( start, widgetLocation ); + } + paintMarker( p, model()->index( row, column, rootIndex() ), widgetLocation ); // checked + start = widgetLocation; + // retrieve text and data value attributes + // FIXME use data model DisplayRole text + QString text = tr( "(%1, %2, %3)" ) + .arg( x * 100, 0, 'f', 0 ) + .arg( y * 100, 0, 'f', 0 ) + .arg( z * 100, 0, 'f', 0 ); + d->paintDataValueText( p, attrs, widgetLocation, true, text, true ); + } else { + // ignore and do not paint this point, garbage data + qDebug() << "TernaryPointDiagram::paint: data point x/y/z:" + << x << "/" << y << "/" << z << "ignored, unusable."; + } + } + } + } +} + +const QPair< QPointF, QPointF > TernaryLineDiagram::calculateDataBoundaries () const +{ + // this is a constant, because we defined it to be one: + static QPair Boundaries( + TriangleBottomLeft, + QPointF( TriangleBottomRight.x(), TriangleHeight ) ); + return Boundaries; +} diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.h new file mode 100644 index 00000000..d5d0f38c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYLINEDIAGRAM_H +#define KDCHARTTERNARYLINEDIAGRAM_H + +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartAbstractTernaryDiagram.h" + + +namespace KDChart { + + /** + * @brief A TernaryLineDiagram is a line diagram with a ternary coordinate plane + */ + class KDCHART_EXPORT TernaryLineDiagram : public AbstractTernaryDiagram + { + Q_OBJECT + Q_DISABLE_COPY( TernaryLineDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( TernaryLineDiagram, TernaryCoordinatePlane ) + + public: + explicit TernaryLineDiagram ( QWidget* parent = 0, TernaryCoordinatePlane* plane = 0 ); + virtual ~TernaryLineDiagram(); + + void resize (const QSizeF &area); + void paint (PaintContext *paintContext); + + protected: + const QPair< QPointF, QPointF > calculateDataBoundaries () const; + + }; +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram_p.h new file mode 100644 index 00000000..9c5020d6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryLineDiagram_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYLINEDIAGRAM_P_H +#define KDCHARTTERNARYLINEDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "KDChartAbstractTernaryDiagram_p.h" + +#include + +namespace KDChart { + +/** + * \internal + */ + class TernaryLineDiagram::Private : public AbstractTernaryDiagram::Private + { + friend class TernaryLineDiagram; + public: + Private(); + ~Private() {} + + Private( const Private& rhs ) + : AbstractTernaryDiagram::Private( rhs ) + { + } + + }; + + KDCHART_IMPL_DERIVED_DIAGRAM( TernaryLineDiagram, AbstractTernaryDiagram, TernaryCoordinatePlane ) +/* + inline LineDiagram::LineDiagram( Private * p, TernaryCoordinatePlane* plane ) + : AbstractTernaryDiagram( p, plane ) { init(); } + inline LineDiagram::Private * LineDiagram::d_func() + { return static_cast( AbstractTernaryDiagram::d_func() ); } + inline const LineDiagram::Private * LineDiagram::d_func() const + { return static_cast( AbstractTernaryDiagram::d_func() ); } +*/ + +} + +#endif /* KDCHARTTERNARYLINEDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.cpp new file mode 100644 index 00000000..89c433a6 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.cpp @@ -0,0 +1,142 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "KDChartTernaryPointDiagram.h" +#include "KDChartTernaryPointDiagram_p.h" + +#include + +#include + +#include + +#include "TernaryPoint.h" +#include "TernaryConstants.h" + +using namespace KDChart; + +#define d d_func() + +TernaryPointDiagram::Private::Private() + : AbstractTernaryDiagram::Private() +{ +} + +TernaryPointDiagram::TernaryPointDiagram ( QWidget* parent, + TernaryCoordinatePlane* plane ) + : AbstractTernaryDiagram( new Private(), parent, plane ) +{ + init(); + setDatasetDimensionInternal( 3 ); // the third column is implicit +} + +TernaryPointDiagram::~TernaryPointDiagram() +{ +} + +void TernaryPointDiagram::init() +{ + d->reverseMapper.setDiagram( this ); +} + +void TernaryPointDiagram::resize (const QSizeF& area) +{ + Q_UNUSED( area ); +} + +void TernaryPointDiagram::paint (PaintContext *paintContext) +{ + d->reverseMapper.clear(); + + d->paint( paintContext ); + + // sanity checks: + if ( model() == 0 ) return; + + QPainter* p = paintContext->painter(); + PainterSaver s( p ); + + TernaryCoordinatePlane* plane = + static_cast< TernaryCoordinatePlane* >( paintContext->coordinatePlane() ); + Q_ASSERT( plane ); + + qreal x, y, z; + + + // for some reason(?) TernaryPointDiagram is using per-diagram DVAs only: + const DataValueAttributes attrs( dataValueAttributes() ); + + d->forgetAlreadyPaintedDataValues(); + + int columnCount = model()->columnCount( rootIndex() ); + for (int column=0; columnrowCount( rootIndex() ); + for ( int row = 0; row < numrows; row++ ) + { + QModelIndex base = model()->index( row, column, rootIndex() ); // checked + // see if there is data otherwise skip + if ( ! model()->data( base ).isNull() ) + { + p->setPen( PrintingParameters::scalePen( pen( base ) ) ); + p->setBrush( brush( base ) ); + + // retrieve data + x = qMax( model()->data( model()->index( row, column+0, rootIndex() ) ).toReal(), // checked + 0.0 ); + y = qMax( model()->data( model()->index( row, column+1, rootIndex() ) ).toReal(), // checked + 0.0 ); + z = qMax( model()->data( model()->index( row, column+2, rootIndex() ) ).toReal(), // checked + 0.0 ); + + // fix messed up data values (paint as much as possible) + qreal total = x + y + z; + if ( fabs( total ) > 3 * std::numeric_limits::epsilon() ) { + TernaryPoint tPunkt( x / total, y / total ); + QPointF diagramLocation = translate( tPunkt ); + QPointF widgetLocation = plane->translate( diagramLocation ); + + paintMarker( p, model()->index( row, column, rootIndex() ), widgetLocation ); // checked + QString text = tr( "(%1, %2, %3)" ) + .arg( x * 100, 0, 'f', 0 ) + .arg( y * 100, 0, 'f', 0 ) + .arg( z * 100, 0, 'f', 0 ); + d->paintDataValueText( p, attrs, widgetLocation, true, text, true ); + } else { + // ignore and do not paint this point, garbage data + qDebug() << "TernaryPointDiagram::paint: data point x/y/z:" + << x << "/" << y << "/" << z << "ignored, unusable."; + } + } + } + } +} + +const QPair< QPointF, QPointF > TernaryPointDiagram::calculateDataBoundaries () const +{ + // this is a constant, because we defined it to be one: + static QPair Boundaries( + TriangleBottomLeft, + QPointF( TriangleBottomRight.x(), TriangleHeight ) ); + return Boundaries; +} + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.h new file mode 100644 index 00000000..75221dc1 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYPOINTDIAGRAM_H +#define KDCHARTTERNARYPOINTDIAGRAM_H + +#include "KDChartTernaryCoordinatePlane.h" +#include "KDChartAbstractTernaryDiagram.h" + +namespace KDChart { + + /** + * @brief A TernaryPointDiagram is a point diagram within a ternary coordinate plane + */ + class KDCHART_EXPORT TernaryPointDiagram : public AbstractTernaryDiagram + { + Q_OBJECT + Q_DISABLE_COPY( TernaryPointDiagram ) + KDCHART_DECLARE_DERIVED_DIAGRAM( TernaryPointDiagram, TernaryCoordinatePlane ) + + public: + explicit TernaryPointDiagram ( QWidget* parent = 0, TernaryCoordinatePlane* plane = 0 ); + virtual ~TernaryPointDiagram(); + + virtual void resize (const QSizeF &area); + virtual void paint (PaintContext *paintContext); + + protected: + virtual const QPair< QPointF, QPointF > calculateDataBoundaries () const; + }; + +} + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram_p.h b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram_p.h new file mode 100644 index 00000000..dcebc58e --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/KDChartTernaryPointDiagram_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHARTTERNARYPOINTDIAGRAM_P_H +#define KDCHARTTERNARYPOINTDIAGRAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the KD Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "KDChartAbstractTernaryDiagram_p.h" + +#include + +namespace KDChart { + +/** + * \internal + */ + class TernaryPointDiagram::Private : public AbstractTernaryDiagram::Private + { + friend class TernaryPointDiagram; + public: + Private(); + ~Private() {} + + Private( const Private& rhs ) + : AbstractTernaryDiagram::Private( rhs ) + { + } + + }; + +KDCHART_IMPL_DERIVED_DIAGRAM( TernaryPointDiagram, AbstractTernaryDiagram, TernaryCoordinatePlane ) +/* +inline TernaryPointDiagram::TernaryPointDiagram( Private * p, TernaryCoordinatePlane* plane ) + : AbstractTernaryDiagram( p, plane ) { init(); } +inline TernaryPointDiagram::Private * TernaryPointDiagram::d_func() +{ return static_cast( AbstractTernaryDiagram::d_func() ); } +inline const TernaryPointDiagram::Private * TernaryPointDiagram::d_func() const +{ return static_cast( AbstractTernaryDiagram::d_func() ); } +*/ + +} + +#endif /* KDCHARTTERNARYPOINTDIAGRAM_P_H */ + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.cpp new file mode 100644 index 00000000..7f78203a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.cpp @@ -0,0 +1,48 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "TernaryConstants.h" + +#include + +using namespace std; + +using namespace std; + +extern const qreal Sqrt3 = sqrt( 3.0 ); +extern const qreal TriangleWidth = 1.0; +extern const qreal TriangleHeight = 0.5 * Sqrt3; +extern const QPointF TriangleTop( 0.5, TriangleHeight ); +extern const QPointF TriangleBottomLeft( 0.0, 0.0 ); +extern const QPointF TriangleBottomRight( 1.0, 0.0 ); +extern const QPointF AxisVector_C_A( TriangleTop - TriangleBottomRight ); +extern const QPointF Norm_C_A( -AxisVector_C_A.y(), AxisVector_C_A.x() ); +extern const QPointF AxisVector_B_A( TriangleTop ); +extern const QPointF Norm_B_A( -AxisVector_B_A.y(), AxisVector_B_A.x() ); +extern const QPointF AxisVector_B_C( TriangleBottomRight ); +extern const QPointF Norm_B_C( -AxisVector_B_C.y(), AxisVector_B_C.x() ); + +extern const qreal RelMarkerLength = 0.03 * TriangleWidth; +extern const QPointF FullMarkerDistanceBC( RelMarkerLength * Norm_B_C ); +extern const QPointF FullMarkerDistanceAC( -RelMarkerLength * Norm_C_A ); +extern const QPointF FullMarkerDistanceBA( RelMarkerLength * Norm_B_A ); + diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.h b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.h new file mode 100644 index 00000000..6a492d17 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryConstants.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef TERNARYCONSTANTS_H +#define TERNARYCONSTANTS_H + +#include + +extern const qreal Sqrt3; +extern const qreal TriangleWidth; +extern const qreal TriangleHeight; +extern const QPointF TriangleTop; +extern const QPointF TriangleBottomLeft; +extern const QPointF TriangleBottomRight; +extern const QPointF AxisVector_C_A; +extern const QPointF Norm_C_A; +extern const QPointF AxisVector_B_A; +extern const QPointF Norm_B_A; +extern const QPointF AxisVector_B_C; +extern const QPointF Norm_B_C; +extern const qreal RelMarkerLength; +extern const QPointF FullMarkerDistanceBC; +extern const QPointF FullMarkerDistanceAC; +extern const QPointF FullMarkerDistanceBA; + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.cpp b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.cpp new file mode 100644 index 00000000..892325ef --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.cpp @@ -0,0 +1,104 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#include "TernaryPoint.h" +#include "TernaryConstants.h" + +#include + +#include +#include + +TernaryPoint::TernaryPoint() + : m_a( -1.0 ) + , m_b( -1.0 ) +{ + Q_ASSERT( !isValid() ); +} + +TernaryPoint::TernaryPoint( qreal a, qreal b ) + : m_a( -1.0 ) + , m_b( -1.0 ) +{ + set( a, b ); +} + +void TernaryPoint::set( qreal a, qreal b ) +{ + if ( a >= 0.0 && a <= 1.0 + && b >= 0.0 && b <= 1.0 + && 1.0 - a - b >= -2.0 * std::numeric_limits::epsilon() ) { + m_a = a; + m_b = b; + Q_ASSERT( isValid() ); // more a test for isValid + } else { + m_a = -1.0; + m_b = -1.0; + Q_ASSERT( ! isValid() ); + } +} + +bool TernaryPoint::isValid() const +{ + return + m_a >= 0.0 && m_a <= 1.0 + && m_b >= 0.0 && m_b <= 1.0 + && 1.0 - m_a + m_b >= - std::numeric_limits::epsilon(); +} + +QDebug operator<<( QDebug stream, const TernaryPoint& point ) +{ + QString string; + QTextStream text( &string ); + text << "[TernaryPoint: "; + if ( point.isValid() ) { + text.setFieldWidth( 2 ); + text.setPadChar( QLatin1Char( '0' ) ); + text << ( int ) ( point.a() * 100.0 ) << "%|" + << ( int ) ( point.b() * 100.0 ) << "%|" + << ( int ) ( point.c() * 100.0 ) << "%]"; + } else { + text << "a=" << point.a() << " - b=" << point.b() << " - INVALID]"; + } + stream << string; + return stream; +} + +QPointF translate( const TernaryPoint& point ) +{ + if ( point.isValid() ) { + // the position is calculated by + // - first moving along the B-C line to the function that b + // selects + // - then traversing the selected function until we meet with + // the function that A selects (which is a parallel of the B-C + // line) + QPointF bPosition( 1.0 - point.b(), 0.0 ); + QPointF aPosition( point.a() * AxisVector_C_A ); + QPointF result( bPosition + aPosition ); + return result; + } else { + qWarning() << "TernaryPoint::translate(TernaryPoint): cannot translate invalid ternary points:" + << point; + return QPointF(); + } +} diff --git a/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.h b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.h new file mode 100644 index 00000000..ce070882 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/Ternary/TernaryPoint.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef TERNARYPOINT_H +#define TERNARYPOINT_H + +#include +#include + +/** + * @brief TernaryPoint defines a point within a ternary coordinate plane + * \internal + */ +class TernaryPoint +{ +public: + TernaryPoint(); + TernaryPoint( qreal a, qreal b ); + + qreal a() const { return m_a; } + qreal b() const { return m_b; } + qreal c() const { return 1.0 - m_a - m_b; } + + void set( qreal a, qreal b ); + + bool isValid() const; + +private: + qreal m_a; + qreal m_b; +}; + +QDebug operator<<( QDebug stream, const TernaryPoint& point ); + +QPointF translate( const TernaryPoint& ); + +#endif diff --git a/massif-visualizer/kdchart/src/KDChart/kdchart_export.h b/massif-visualizer/kdchart/src/KDChart/kdchart_export.h new file mode 100644 index 00000000..93b64d6c --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/kdchart_export.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** Copyright (C) 2001-2013 Klaralvdalens Datakonsult AB. All rights reserved. +** +** This file is part of the KD Chart library. +** +** Licensees holding valid commercial KD Chart licenses may use this file in +** accordance with the KD Chart Commercial License Agreement provided with +** the Software. +** +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 and version 3 as published by the +** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** Contact info@kdab.com if any conditions of this licensing are not +** clear to you. +** +**********************************************************************/ + +#ifndef KDCHART_EXPORT_H +#define KDCHART_EXPORT_H + +#include + +# ifdef KDCHART_STATICLIB +# undef KDCHART_SHAREDLIB +# define KDCHART_EXPORT +# define KDGANTT_EXPORT +# define KDCHART_COMPAT_EXPORT +# else +# ifdef KDCHART_BUILD_KDCHART_LIB +# define KDCHART_EXPORT Q_DECL_EXPORT +# define KDGANTT_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_EXPORT Q_DECL_IMPORT +# define KDGANTT_EXPORT Q_DECL_IMPORT +# endif +# ifdef KDCHART_BUILD_KDCHART_COMPAT_LIB +# define KDCHART_COMPAT_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_COMPAT_EXPORT Q_DECL_IMPORT +# endif +# ifdef KDCHART_BUILD_PLUGIN_LIB +# define KDCHART_PLUGIN_EXPORT Q_DECL_EXPORT +# else +# define KDCHART_PLUGIN_EXPORT Q_DECL_IMPORT +# endif +# endif + +#endif // KDCHART_EXPORT_H diff --git a/massif-visualizer/kdchart/src/KDChart/resources/circle_blue.svg b/massif-visualizer/kdchart/src/KDChart/resources/circle_blue.svg new file mode 100644 index 00000000..7cec0d4a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/resources/circle_blue.svg @@ -0,0 +1,68 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/resources/circle_blue_red.svg b/massif-visualizer/kdchart/src/KDChart/resources/circle_blue_red.svg new file mode 100644 index 00000000..4ea85e5a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/resources/circle_blue_red.svg @@ -0,0 +1,82 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/resources/karo_black.svg b/massif-visualizer/kdchart/src/KDChart/resources/karo_black.svg new file mode 100644 index 00000000..5d70edc0 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/resources/karo_black.svg @@ -0,0 +1,67 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/resources/karo_blue.svg b/massif-visualizer/kdchart/src/KDChart/resources/karo_blue.svg new file mode 100644 index 00000000..a7837e21 --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/resources/karo_blue.svg @@ -0,0 +1,67 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/massif-visualizer/kdchart/src/KDChart/resources/karo_red.svg b/massif-visualizer/kdchart/src/KDChart/resources/karo_red.svg new file mode 100644 index 00000000..37b8ff6a --- /dev/null +++ b/massif-visualizer/kdchart/src/KDChart/resources/karo_red.svg @@ -0,0 +1,67 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/massif-visualizer/kdchart/src/TODO b/massif-visualizer/kdchart/src/TODO new file mode 100644 index 00000000..d8db191b --- /dev/null +++ b/massif-visualizer/kdchart/src/TODO @@ -0,0 +1,12 @@ +cleanup: +-------- + +KDChartArea -> KDChart::Area + +KDChartAxis? + +KDChartCustomArea? + +KDTextDocument ? + +KDChartMeasure ? diff --git a/massif-visualizer/kdchart/src/libkdchart.map b/massif-visualizer/kdchart/src/libkdchart.map new file mode 100644 index 00000000..23809859 --- /dev/null +++ b/massif-visualizer/kdchart/src/libkdchart.map @@ -0,0 +1,16 @@ +VERSION +{ + local: + extern "C++" + { + KDChart::*::Private::*; + KDChart::*::Private?virtual?table; + KDChart::*::Private?type_info?node; + KDChart::*::Private?type_info?name; + KDChart::*::Private?type_info?function; + vtable?for?KDChart::*::Private; + typeinfo?for?KDChart::*::Private; + typeinfo?name?for?KDChart::*::Private; + non-virtual?thunk?to?KDChart::*::Private; + }; +}; diff --git a/massif-visualizer/massif-visualizer.kdev4 b/massif-visualizer/massif-visualizer.kdev4 new file mode 100644 index 00000000..2874124a --- /dev/null +++ b/massif-visualizer/massif-visualizer.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=Massif Visualizer diff --git a/massif-visualizer/massifdata/CMakeLists.txt b/massif-visualizer/massifdata/CMakeLists.txt new file mode 100644 index 00000000..dab8aedc --- /dev/null +++ b/massif-visualizer/massifdata/CMakeLists.txt @@ -0,0 +1,22 @@ +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + +set(massifdata_SRCS + filedata.cpp + snapshotitem.cpp + treeleafitem.cpp + parser.cpp + parserprivate.cpp + parseworker.cpp + util.cpp +) + +add_library(mv-massifdata STATIC ${massifdata_SRCS}) + +target_link_libraries(mv-massifdata LINK_PRIVATE + ${QT_QTCORE_LIBRARY} + # required for Qt::escape() in QTextDocument + ${QT_QTGUI_LIBRARY} +) diff --git a/massif-visualizer/massifdata/filedata.cpp b/massif-visualizer/massifdata/filedata.cpp new file mode 100644 index 00000000..4f6c750e --- /dev/null +++ b/massif-visualizer/massifdata/filedata.cpp @@ -0,0 +1,86 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "filedata.h" +#include "snapshotitem.h" + +using namespace Massif; + +FileData::FileData(QObject* parent) : QObject(parent), m_peak(0) +{ +} + +FileData::~FileData() +{ + qDeleteAll(m_snapshots); +} + +void FileData::setCmd(const QString& cmd) +{ + m_cmd = cmd; +} + +QString FileData::cmd() const +{ + return m_cmd; +} + +void FileData::setDescription(const QString& description) +{ + m_description = description; +} + +QString FileData::description() const +{ + return m_description; +} + +void FileData::setTimeUnit(const QString& unit) +{ + m_timeUnit = unit; +} + +QString FileData::timeUnit() const +{ + return m_timeUnit; +} + +void FileData::addSnapshot(SnapshotItem* snapshot) +{ + m_snapshots << snapshot; +} + +QVector< SnapshotItem* > FileData::snapshots() const +{ + return m_snapshots; +} + +void FileData::setPeak(SnapshotItem* snapshot) +{ + Q_ASSERT(m_snapshots.contains(snapshot)); + m_peak = snapshot; +} + +SnapshotItem* FileData::peak() const +{ + return m_peak; +} diff --git a/massif-visualizer/massifdata/filedata.h b/massif-visualizer/massifdata/filedata.h new file mode 100644 index 00000000..40176cf9 --- /dev/null +++ b/massif-visualizer/massifdata/filedata.h @@ -0,0 +1,101 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_FILEDATA_H +#define MASSIF_FILEDATA_H + +#include "massifdata_export.h" + +#include +#include + +namespace Massif { + +class SnapshotItem; + +/** + * This structure holds all information that can be extracted from a massif output file. + */ +class MASSIFDATA_EXPORT FileData : public QObject +{ + Q_OBJECT +public: + FileData(QObject* parent = 0); + virtual ~FileData(); + + /** + * Set the @p cmd that was profiled with massif. + */ + void setCmd(const QString& cmd); + /** + * @return Command that was profiled with massif. + */ + QString cmd() const; + + /** + * Set a @p description. + */ + void setDescription(const QString& description); + /** + * @return Description for this massif run. + */ + QString description() const; + + /** + * Set the @p unit that times are measured in. + */ + void setTimeUnit(const QString& unit); + /** + * @return The unit that times are measured in. + */ + QString timeUnit() const; + + /** + * Adds @p snapshot to this dataset and takes ownership. + */ + void addSnapshot(SnapshotItem* snapshot); + /** + * @return List of all snapshots that make up this dataset. + */ + QVector snapshots() const; + + /** + * Marks @p snapshot as peak of this dataset. + * The snapshot should already been added to the dataset. + */ + void setPeak(SnapshotItem* snapshot); + /** + * @return The peak snapshot in this dataset. + */ + SnapshotItem* peak() const; + +private: + QString m_cmd; + QString m_description; + QString m_timeUnit; + QVector m_snapshots; + SnapshotItem* m_peak; +}; + +} + +#endif // MASSIF_FILEDATA_H diff --git a/massif-visualizer/massifdata/massifdata_export.h b/massif-visualizer/massifdata/massifdata_export.h new file mode 100644 index 00000000..c02e3c62 --- /dev/null +++ b/massif-visualizer/massifdata/massifdata_export.h @@ -0,0 +1,37 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIFDATA_EXPORT_H +#define MASSIFDATA_EXPORT_H + +/* needed for KDE_EXPORT macros */ +#include + +#ifndef MASSIFDATA_EXPORT +# ifdef MAKE_MASSIFDATA_LIB +# define MASSIFDATA_EXPORT KDE_EXPORT +# else +# define MASSIFDATA_EXPORT KDE_IMPORT +# endif +#endif + +#endif // MASSIFDATA_EXPORT_H diff --git a/massif-visualizer/massifdata/parser.cpp b/massif-visualizer/massifdata/parser.cpp new file mode 100644 index 00000000..911dbf08 --- /dev/null +++ b/massif-visualizer/massifdata/parser.cpp @@ -0,0 +1,101 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "parser.h" + +#include "filedata.h" +#include "parserprivate.h" +#include "snapshotitem.h" + +#include + +using namespace Massif; + +Parser::Parser() + : m_errorLine(-1) +{ +} + +Parser::~Parser() +{ +} + +FileData* Parser::parse(QIODevice* file, const QStringList& customAllocators, QAtomicInt* shouldStop) +{ + Q_ASSERT(file->isOpen()); + Q_ASSERT(file->isReadable()); + + QScopedPointer data(new FileData); + + ParserPrivate p(this, file, data.data(), customAllocators, shouldStop); + + if (p.error()) { + m_errorLine = p.errorLine(); + m_errorLineString = p.errorLineString(); + return 0; + } else { + m_errorLine = -1; + m_errorLineString.clear(); + } + + // when a massif run gets terminated (^C) the snapshot data might be wrong, + // hence just always ensure we pick the proper peak ourselves + if (!data->snapshots().isEmpty()) { + foreach ( SnapshotItem* snapshot, data->snapshots() ) { + if (!snapshot->heapTree()) { + // peak should have detailed info + continue; + } + if (!data->peak() || snapshot->cost() > data->peak()->cost()) { + data->setPeak(snapshot); + } + } + // still not found? pick any other snapshot + if (!data->peak()) { + foreach( SnapshotItem* snapshot, data->snapshots() ) { + if (!data->peak() || snapshot->cost() > data->peak()->cost()) { + data->setPeak(snapshot); + } + } + } + } + // peak might still be zero if we have no snapshots, should be handled in the UI then + + return data.take(); +} + +int Parser::errorLine() const +{ + return m_errorLine; +} + +QByteArray Parser::errorLineString() const +{ + return m_errorLineString; +} + +void Parser::setProgress(int value) +{ + emit progress(value); +} + +#include "parser.moc" diff --git a/massif-visualizer/massifdata/parser.h b/massif-visualizer/massifdata/parser.h new file mode 100644 index 00000000..955fd452 --- /dev/null +++ b/massif-visualizer/massifdata/parser.h @@ -0,0 +1,85 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_PARSER_H +#define MASSIF_PARSER_H + +class QIODevice; + +#include +#include +#include + +#include "massifdata_export.h" + +namespace Massif { + +class FileData; + +/** + * This class parses a Massif output file and stores it's information. + */ +class MASSIFDATA_EXPORT Parser : public QObject +{ + Q_OBJECT + +public: + Parser(); + ~Parser(); + + /** + * Parse @p file and return a FileData structure representing the data. + * + * @p customAllocators list of wildcard patterns used to find custom allocators + * @p shouldStop if supplied, this is checked periodically. If the atomic + * evaluates to true, parser stops and returns 0. + * + * @return Data or null if file could not be parsed. + * + * @note The caller has to delete the data afterwards. + */ + FileData* parse(QIODevice* file, + const QStringList& customAllocators = QStringList(), + QAtomicInt* shouldStop = 0); + + /** + * Returns the number of the line which could not be parsed or -1 if no error occurred. + */ + int errorLine() const; + /** + * Returns the line which could not be parsed. + */ + QByteArray errorLineString() const; + + void setProgress(int value); + +signals: + void progress(int value); + +private: + int m_errorLine; + QByteArray m_errorLineString; +}; + +} + +#endif // MASSIF_PARSER_H diff --git a/massif-visualizer/massifdata/parserprivate.cpp b/massif-visualizer/massifdata/parserprivate.cpp new file mode 100644 index 00000000..5b183d4a --- /dev/null +++ b/massif-visualizer/massifdata/parserprivate.cpp @@ -0,0 +1,438 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "parserprivate.h" + +#include "filedata.h" +#include "snapshotitem.h" +#include "treeleafitem.h" +#include "util.h" +#include "parser.h" + +#include + +#include + +using namespace Massif; + +#define VALIDATE(l, x) if (!(x)) { m_errorLineString = l; m_error = Invalid; return; } + +#define VALIDATE_RETURN(l, x, y) if (!(x)) { m_errorLineString = l; m_error = Invalid; return y; } + +static QByteArray midRef(const QByteArray& line, int offset, int length = -1) +{ + return QByteArray::fromRawData(line.data() + offset, length == -1 ? (line.length() - offset) : length); +} + +ParserPrivate::ParserPrivate(Parser* parser, QIODevice* file, FileData* data, + const QStringList& customAllocators, + QAtomicInt* shouldStop) + : m_parser(parser) + , m_file(file) + , m_data(data) + , m_nextLine(FileDesc) + , m_currentLine(0) + , m_error(NoError) + , m_snapshot(0) + , m_parentItem(0) + , m_hadCustomAllocators(false) + , m_expectedSnapshots(100) +{ + foreach(const QString& allocator, customAllocators) { + if (allocator.contains('*')) { + m_allocators << QRegExp(allocator, Qt::CaseSensitive, QRegExp::Wildcard); + } else { + m_plainAllocators << allocator.toLatin1(); + } + } + + while (!file->atEnd()) { + if (shouldStop && *shouldStop) { + m_error = Stopped; + return; + } + if (file->size()) { + // use pos to determine progress when reading the file, won't work for compressed files + parser->setProgress(static_cast(double(file->pos() * 100) / file->size())); + } + const QByteArray& line = readLine(); + switch (m_nextLine) { + case FileDesc: + parseFileDesc(line); + break; + case FileCmd: + parseFileCmd(line); + break; + case FileTimeUnit: + parseFileTimeUnit(line); + break; + case Snapshot: + parseSnapshot(line); + break; + case SnapshotHeapTree: + parseSnapshotHeapTree(line); + break; + case SnapshotMemHeap: + parseSnapshotMemHeap(line); + break; + case SnapshotMemHeapExtra: + parseSnapshotMemHeapExtra(line); + break; + case SnapshotTime: + parseSnapshotTime(line); + break; + case SnapshotMemStacks: + parseSnapshotMemStacks(line); + break; + case HeapTreeLeaf: + parseHeapTreeLeaf(line); + break; + } + if (m_error != NoError) { + qWarning() << "invalid line" << m_currentLine << line; + m_error = Invalid; + if (m_errorLineString.isEmpty()) { + m_errorLineString = line; + } + // we use fromRawData, so better detach here + m_errorLineString.detach(); + break; + } + } + if (!file->atEnd()) { + m_error = Invalid; + } +} + +ParserPrivate::~ParserPrivate() +{ +} + +ParserPrivate::Error ParserPrivate::error() const +{ + return m_error; +} + +int ParserPrivate::errorLine() const +{ + if (m_error == Invalid) { + return m_currentLine; + } else { + return -1; + } +} + +QByteArray ParserPrivate::errorLineString() const +{ + return m_errorLineString; +} + +//BEGIN Parser Functions +void ParserPrivate::parseFileDesc(const QByteArray& line) +{ + // desc: ... + VALIDATE(line, line.startsWith("desc: ")) + + m_data->setDescription(line.mid(6)); + m_nextLine = FileCmd; + + if (!m_file->size()) { + // for zipped files, parse the desc line for a --max-snapshots parameter + // and use that number for the progress bar. read the manual to know that + // this might not be a good measure, but better than nothing. + QRegExp pattern("--max-snapshots=([0-9]+)", Qt::CaseSensitive, QRegExp::RegExp2); + if (pattern.indexIn(m_data->description()) != -1) { + m_expectedSnapshots = pattern.cap(1).toInt(); + } + } +} + +void ParserPrivate::parseFileCmd(const QByteArray& line) +{ + // cmd: ... + VALIDATE(line, line.startsWith("cmd: ")) + + m_data->setCmd(line.mid(5)); + m_nextLine = FileTimeUnit; +} + +void ParserPrivate::parseFileTimeUnit(const QByteArray& line) +{ + // time_unit: ... + VALIDATE(line, line.startsWith("time_unit: ")) + + m_data->setTimeUnit(line.mid(11)); + m_nextLine = Snapshot; +} + +void ParserPrivate::parseSnapshot(const QByteArray& line) +{ + VALIDATE(line, line == "#-----------") + + // snapshot=N + QByteArray nextLine = readLine(); + VALIDATE(nextLine, nextLine.startsWith("snapshot=")) + bool ok; + uint number = midRef(nextLine, 9).toUInt(&ok); + VALIDATE(nextLine, ok) + nextLine = readLine(); + VALIDATE(nextLine, nextLine == "#-----------") + + m_snapshot = new SnapshotItem; + m_data->addSnapshot(m_snapshot); + m_snapshot->setNumber(number); + m_nextLine = SnapshotTime; + + if (!m_file->size()) { + // see above: progress calculation for compressed files + m_parser->setProgress(number * 100 / m_expectedSnapshots); + } +} + +void ParserPrivate::parseSnapshotTime(const QByteArray& line) +{ + VALIDATE(line, line.startsWith("time=")) + bool ok; + double time = midRef(line, 5).toDouble(&ok); + VALIDATE(line, ok) + m_snapshot->setTime(time); + m_nextLine = SnapshotMemHeap; +} + +void ParserPrivate::parseSnapshotMemHeap(const QByteArray& line) +{ + VALIDATE(line, line.startsWith("mem_heap_B=")) + bool ok; + quint64 bytes = midRef(line, 11).toULongLong(&ok); + VALIDATE(line, ok) + m_snapshot->setMemHeap(bytes); + m_nextLine = SnapshotMemHeapExtra; +} + +void ParserPrivate::parseSnapshotMemHeapExtra(const QByteArray& line) +{ + VALIDATE(line, line.startsWith("mem_heap_extra_B=")) + bool ok; + quint64 bytes = midRef(line, 17).toULongLong(&ok); + VALIDATE(line, ok) + m_snapshot->setMemHeapExtra(bytes); + m_nextLine = SnapshotMemStacks; +} + +void ParserPrivate::parseSnapshotMemStacks(const QByteArray& line) +{ + VALIDATE(line, line.startsWith("mem_stacks_B=")) + bool ok; + quint64 bytes = midRef(line, 13).toULongLong(&ok); + VALIDATE(line, ok) + m_snapshot->setMemStacks(bytes); + m_nextLine = SnapshotHeapTree; +} + +void ParserPrivate::parseSnapshotHeapTree(const QByteArray& line) +{ + VALIDATE(line, line.startsWith("heap_tree=")) + QByteArray valueRef = midRef(line, 10); + if (valueRef == "empty") { + m_nextLine = Snapshot; + } else if (valueRef == "detailed") { + m_nextLine = HeapTreeLeaf; + } else if (valueRef == "peak") { + m_nextLine = HeapTreeLeaf; + m_data->setPeak(m_snapshot); + } else { + m_error = Invalid; + return; + } +} + +bool sortLeafsByCost(TreeLeafItem* l, TreeLeafItem* r) +{ + return l->cost() > r->cost(); +} + +void ParserPrivate::parseHeapTreeLeaf(const QByteArray& line) +{ + parseheapTreeLeafInternal(line, 0); + m_nextLine = Snapshot; + // we need to do some post processing if we had custom allocators: + // - sort by cost + // - merge "in XYZ places all below threshold" + if (m_hadCustomAllocators) { + Q_ASSERT(m_snapshot->heapTree()); + QVector newChildren = m_snapshot->heapTree()->children(); + TreeLeafItem* belowThreshold = 0; + uint places = 0; + QString oldPlaces; + ///TODO: is massif translateable? + QRegExp matchBT("in ([0-9]+) places, all below massif's threshold", + Qt::CaseSensitive, QRegExp::RegExp2); + QVector::iterator it = newChildren.begin(); + while(it != newChildren.end()) { + TreeLeafItem* child = *it; + if (matchBT.indexIn(QString::fromLatin1(child->label())) != -1) { + places += matchBT.cap(1).toUInt(); + if (belowThreshold) { + // merge with previously found node + belowThreshold->setCost(belowThreshold->cost() + child->cost()); + delete child; + it = newChildren.erase(it); + continue; + } else { + belowThreshold = child; + oldPlaces = matchBT.cap(1); + // no break, see above + } + } + ++it; + } + if (belowThreshold) { + QByteArray label = belowThreshold->label(); + label.replace(oldPlaces, QByteArray::number(places)); + belowThreshold->setLabel(label); + } + qSort(newChildren.begin(), newChildren.end(), sortLeafsByCost); + m_snapshot->heapTree()->setChildren(newChildren); + } + m_parentItem = 0; +} + +struct SaveAndRestoreItem +{ + SaveAndRestoreItem(TreeLeafItem** item, TreeLeafItem* val) + : m_item(item) + { + m_oldVal = *m_item; + *m_item = val; + } + ~SaveAndRestoreItem() + { + *m_item = m_oldVal; + } + TreeLeafItem** m_item; + TreeLeafItem* m_oldVal; +}; + +QByteArray ParserPrivate::getLabel(const QByteArray& original) +{ + QSet::const_iterator it = m_labels.constFind(original); + if (it != m_labels.constEnd()) { + // reuse known label to leverage implicit sharing + return *it; + } else { + m_labels.insert(original); + return original; + } +} + + +bool ParserPrivate::parseheapTreeLeafInternal(const QByteArray& line, int depth) +{ + VALIDATE_RETURN(line, line.length() > depth + 1 && line.at(depth) == 'n', false) + int colonPos = line.indexOf(':', depth); + VALIDATE_RETURN(line, colonPos != -1, false) + bool ok; + + unsigned int children = midRef(line, depth + 1, colonPos - depth - 1).toUInt(&ok); + VALIDATE_RETURN(line, ok, false) + + int spacePos = line.indexOf(' ', colonPos + 2); + VALIDATE_RETURN(line, spacePos != -1, false) + quint64 cost = midRef(line, colonPos + 2, spacePos - colonPos - 2).toULongLong(&ok); + VALIDATE_RETURN(line, ok, false) + + if (!cost && !children) { + // ignore these empty entries + return true; + } + + const QByteArray label = getLabel(line.mid(spacePos + 1)); + + bool isCustomAlloc = false; + + if (depth > 0 && !m_allocators.isEmpty()) { + const QByteArray func = functionInLabel(label); + foreach(const QByteArray& allocator, m_plainAllocators) { + if (func.contains(allocator)) { + isCustomAlloc = true; + break; + } + } + if (!isCustomAlloc) { + const QString funcString = QString::fromLatin1(func); + foreach(const QRegExp& allocator, m_allocators) { + if (allocator.indexIn(funcString) != -1) { + isCustomAlloc = true; + break; + } + } + } + } + + TreeLeafItem* newParent = 0; + if (!isCustomAlloc) { + TreeLeafItem* leaf = new TreeLeafItem; + leaf->setCost(cost); + leaf->setLabel(label); + + if (!depth) { + m_snapshot->setHeapTree(leaf); + } else { + Q_ASSERT(m_parentItem); + m_parentItem->addChild(leaf); + } + + newParent = leaf; + } else { + // the first line/heaptree start must never be a custom allocator, e.g.: + // n11: 1776070 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + Q_ASSERT(depth); + Q_ASSERT(m_snapshot->heapTree()); + newParent = m_snapshot->heapTree(); + m_hadCustomAllocators = true; + } + + SaveAndRestoreItem lastParent(&m_parentItem, newParent); + + for (unsigned int i = 0; i < children; ++i) { + QByteArray nextLine = readLine(); + if (nextLine.isEmpty()) { + // fail gracefully if the tree is not complete, esp. useful for cases where + // an app run with massif crashes and massif doesn't finish the full tree dump. + return true; + } + if (!parseheapTreeLeafInternal(nextLine, depth + 1)) { + return false; + } + } + + return true; +} + +QByteArray ParserPrivate::readLine() +{ + const int read = m_file->readLine(m_lineBuffer, BUF_SIZE); + ++m_currentLine; + return QByteArray::fromRawData(m_lineBuffer, read - 1 /* -1 to remove trailing \n */); +} + +//END Parser Functions diff --git a/massif-visualizer/massifdata/parserprivate.h b/massif-visualizer/massifdata/parserprivate.h new file mode 100644 index 00000000..cbbaad58 --- /dev/null +++ b/massif-visualizer/massifdata/parserprivate.h @@ -0,0 +1,140 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_PARSERPRIVATE_H +#define MASSIF_PARSERPRIVATE_H + +#include +#include +#include +#include + +class QIODevice; + +namespace Massif { + +class FileData; +class SnapshotItem; +class TreeLeafItem; +class Parser; + +class ParserPrivate +{ +public: + explicit ParserPrivate(Parser* parser, QIODevice* file, Massif::FileData* data, + const QStringList& customAllocators, QAtomicInt* shouldStop); + ~ParserPrivate(); + + enum Error { + NoError, ///< file could be parsed properly + Invalid, ///< the file was invalid and could not be parsed + Stopped ///< parser was stopped + }; + /** + * @return Whether an Error occurred or not. + * @see errorLine() + */ + Error error() const; + /** + * @return the line in which an error occurred or -1 if none. + */ + int errorLine() const; + /** + * @return the line which could not be parsed. + */ + QByteArray errorLineString() const; + +private: + void parseFileDesc(const QByteArray& line); + void parseFileCmd(const QByteArray& line); + void parseFileTimeUnit(const QByteArray& line); + void parseSnapshot(const QByteArray& line); + void parseSnapshotHeapTree(const QByteArray& line); + void parseSnapshotMemHeap(const QByteArray& line); + void parseSnapshotMemHeapExtra(const QByteArray& line); + void parseSnapshotTime(const QByteArray& line); + void parseSnapshotMemStacks(const QByteArray& line); + void parseHeapTreeLeaf(const QByteArray& line); + bool parseheapTreeLeafInternal(const QByteArray& line, int depth); + QByteArray readLine(); + + QByteArray getLabel(const QByteArray& original); + + Parser* m_parser; + QIODevice* m_file; + FileData* m_data; + + /** + * Each value in the enum identifies a line in the massif output file. + */ + enum ExpectData { + //BEGIN File wide data + FileDesc, ///< desc: ... + FileCmd, ///< cmd: ... + FileTimeUnit, ///< time_unit: ... + //END + //BEGIN SnapShot data + Snapshot, ///< actually three lines: #-----------\nsnapshot=N\n#-----------\n + SnapshotTime, ///< time=N + SnapshotMemHeap, ///< mem_heap_B=N + SnapshotMemHeapExtra, ///< mem_heap_extra_B=N + SnapshotMemStacks, ///< mem_stacks_B=N + SnapshotHeapTree, ///< heap_tree=empty | heap_tree=detailed + //END + //BEGIN detailed Heap Tree data + HeapTreeLeaf ///< nX: Y ... , where X gives the number of children and Y represents the heap size in bytes + /// the ... can be in one of three formats, here are examples for each of them: + /// 1) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + /// 2) in 803 places, all below massif's threshold (01.00%) + /// 3) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + //END + }; + ExpectData m_nextLine; + int m_currentLine; + QByteArray m_errorLineString; + + Error m_error; + + /// current snapshot that is parsed. + SnapshotItem* m_snapshot; + /// parent tree leaf item + TreeLeafItem* m_parentItem; + /// set to true if we had custom allocators + bool m_hadCustomAllocators; + + /// list of custom allocator wildcards + QVector m_allocators; + QVector m_plainAllocators; + + /// improve memory consumption by re-using known labels + /// and making use of the implicit sharing of QByteArrays + QSet m_labels; + + int m_expectedSnapshots; + + static const int BUF_SIZE = 4096; + char m_lineBuffer[BUF_SIZE]; +}; + +} + +#endif // MASSIF_PARSERPRIVATE_H diff --git a/massif-visualizer/massifdata/parseworker.cpp b/massif-visualizer/massifdata/parseworker.cpp new file mode 100644 index 00000000..9aa90506 --- /dev/null +++ b/massif-visualizer/massifdata/parseworker.cpp @@ -0,0 +1,100 @@ +/* + This file is part of Massif Visualizer + + Copyright 2012 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "parseworker.h" +#include "parser.h" +#include "filedata.h" + +#include +#include +#include +#include + +namespace Massif { + +ParseWorker::ParseWorker(QObject* parent) +: QObject(parent) +{ + +} + +void ParseWorker::parse(const KUrl& url, const QStringList& allocators) +{ + // process in background thread + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "parse", Q_ARG(KUrl, url), Q_ARG(QStringList, allocators)); + return; + } + + m_shouldStop = 0; + QString file; + if (!url.isLocalFile()) { + if (!KIO::NetAccess::download(url, file, 0)) { + emit error(i18n("Download Failed"), + i18n("Failed to download remote massif data file %1.", url.pathOrUrl())); + return; + } + } else { + file = url.toLocalFile(); + } + + QScopedPointer device(KFilterDev::deviceForFile(file)); + if (!device->open(QIODevice::ReadOnly)) { + emit error(i18n("Read Failed"), + i18n("Could not open file %1 for reading.", file)); + return; + } + + Parser p; + emit progressRange(0, 100); + connect(&p, SIGNAL(progress(int)), this, SIGNAL(progress(int))); + QScopedPointer data(p.parse(device.data(), allocators, &m_shouldStop)); + + if (!data) { + if (!m_shouldStop) { + emit error(i18n("Parser Failed"), + i18n("Could not parse file %1.
" + "Parse error in line %2:
%3", + url.pathOrUrl(), p.errorLine() + 1, + QString::fromLatin1(p.errorLineString()))); + } + return; + } else if (data->snapshots().isEmpty()) { + emit error(i18n("Empty data file %1.", url.pathOrUrl()), + i18n("Empty Data File")); + return; + } + + emit progress(100); + + // success! + emit finished(url, data.take()); +} + +void ParseWorker::stop() +{ + m_shouldStop = 1; +} + +} + +#include "parseworker.moc" diff --git a/massif-visualizer/massifdata/parseworker.h b/massif-visualizer/massifdata/parseworker.h new file mode 100644 index 00000000..547b8a3b --- /dev/null +++ b/massif-visualizer/massifdata/parseworker.h @@ -0,0 +1,67 @@ +/* + This file is part of Massif Visualizer + + Copyright 2012 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef MASSIFDATA_PARSETHREAD_H +#define MASSIFDATA_PARSETHREAD_H + +#include +#include + +#include + +namespace Massif { + +class FileData; + +class ParseWorker : public QObject +{ + Q_OBJECT + +public: + explicit ParseWorker(QObject* parent = 0); + + void stop(); + +public slots: + void parse(const KUrl& url, const QStringList& allocators); + +signals: + /** + * Emitted once a file was properly parsed. + */ + void finished(const KUrl& url, Massif::FileData* data); + + /** + * Emitted if a file could not be parsed. + */ + void error(const QString& error, const QString& message); + + void progressRange(int min, int max); + void progress(int value); + +private: + QAtomicInt m_shouldStop; +}; + +} + +#endif // MASSIFDATA_PARSETHREAD_H diff --git a/massif-visualizer/massifdata/snapshotitem.cpp b/massif-visualizer/massifdata/snapshotitem.cpp new file mode 100644 index 00000000..6cf2bcec --- /dev/null +++ b/massif-visualizer/massifdata/snapshotitem.cpp @@ -0,0 +1,101 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "snapshotitem.h" +#include "treeleafitem.h" + +using namespace Massif; + +SnapshotItem::SnapshotItem() + : m_number(0), m_time(0), m_memHeap(0), m_memHeapExtra(0), m_memStacks(0), m_heapTree(0) +{ +} + +SnapshotItem::~SnapshotItem() +{ + delete m_heapTree; +} + +void SnapshotItem::setNumber(uint num) +{ + m_number = num; +} + +uint SnapshotItem::number() const +{ + return m_number; +} + +void SnapshotItem::setTime(double time) +{ + m_time = time; +} + +double SnapshotItem::time() const +{ + return m_time; +} + +void SnapshotItem::setMemHeap(quint64 bytes) +{ + m_memHeap = bytes; +} + +quint64 SnapshotItem::memHeap() const +{ + return m_memHeap; +} + +void SnapshotItem::setMemHeapExtra(quint64 bytes) +{ + m_memHeapExtra = bytes; +} + +quint64 SnapshotItem::memHeapExtra() const +{ + return m_memHeapExtra; +} + +void SnapshotItem::setMemStacks(quint64 bytes) +{ + m_memStacks = bytes; +} + +quint64 SnapshotItem::memStacks() const +{ + return m_memStacks; +} + +void SnapshotItem::setHeapTree(TreeLeafItem* root) +{ + m_heapTree = root; +} + +TreeLeafItem* SnapshotItem::heapTree() const +{ + return m_heapTree; +} + +quint64 SnapshotItem::cost() const +{ + return m_memHeap + m_memStacks; +} diff --git a/massif-visualizer/massifdata/snapshotitem.h b/massif-visualizer/massifdata/snapshotitem.h new file mode 100644 index 00000000..9d3eef32 --- /dev/null +++ b/massif-visualizer/massifdata/snapshotitem.h @@ -0,0 +1,113 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef SNAPSHOTITEM_H +#define SNAPSHOTITEM_H + +#include "massifdata_export.h" + +namespace Massif +{ + +class TreeLeafItem; + +class MASSIFDATA_EXPORT SnapshotItem +{ +public: + SnapshotItem(); + ~SnapshotItem(); + + /** + * Sets the number of this snapshot. + */ + void setNumber(uint num); + /** + * @return The number of this snapshot. + */ + uint number() const; + + /** + * Sets the @p time at which this snapshot was taken. + * The time can be measured in different formats, + * @see FileData::timeUnit() + */ + void setTime(double time); + /** + * @return The time at which this snapshot was taken. + * The time can be measured in different formats, + * @see FileData::timeUnit() + */ + double time() const; + + /** + * Sets the size of the memory heap in bytes. + */ + void setMemHeap(quint64 bytes); + /** + * @return The size of the memory heap in bytes. + */ + quint64 memHeap() const; + + /** + * Sets the size of the extra memory heap in bytes. + */ + void setMemHeapExtra(quint64 bytes); + /** + * @return The size of the extra memory heap in bytes. + */ + quint64 memHeapExtra() const; + + /** + * Sets the size of the memory stacks in bytes. + */ + void setMemStacks(quint64 bytes); + /** + * @return The size of the memory stacks in bytes. + */ + quint64 memStacks() const; + + /** + * Sets @p root as root node of the detailed heap tree of this snapshot. + */ + void setHeapTree(TreeLeafItem* root); + /** + * @return The root node of the detailed heap tree or zero if none is set. + */ + TreeLeafItem* heapTree() const; + + /** + * @return The total cost, i.e. sum of memory heap and stack. + */ + quint64 cost() const; + +private: + uint m_number; + double m_time; + quint64 m_memHeap; + quint64 m_memHeapExtra; + quint64 m_memStacks; + TreeLeafItem* m_heapTree; +}; + +} + +#endif // SNAPSHOTITEM_H diff --git a/massif-visualizer/massifdata/treeleafitem.cpp b/massif-visualizer/massifdata/treeleafitem.cpp new file mode 100644 index 00000000..5dc25134 --- /dev/null +++ b/massif-visualizer/massifdata/treeleafitem.cpp @@ -0,0 +1,76 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "treeleafitem.h" + +using namespace Massif; + +TreeLeafItem::TreeLeafItem() + : m_cost(0), m_parent(0) +{ +} + +TreeLeafItem::~TreeLeafItem() +{ + qDeleteAll(m_children); +} + +void TreeLeafItem::setLabel(const QByteArray& label) +{ + m_label = label; +} + +QByteArray TreeLeafItem::label() const +{ + return m_label; +} + +void TreeLeafItem::setCost(quint64 bytes) +{ + m_cost = bytes; +} + +quint64 TreeLeafItem::cost() const +{ + return m_cost; +} + +void TreeLeafItem::addChild(TreeLeafItem* leaf) +{ + leaf->m_parent = this; + m_children << leaf; +} + +void TreeLeafItem::setChildren(const QVector< TreeLeafItem* >& leafs) +{ + m_children = leafs; +} + +QVector< TreeLeafItem* > TreeLeafItem::children() const +{ + return m_children; +} + +TreeLeafItem* TreeLeafItem::parent() const +{ + return m_parent; +} diff --git a/massif-visualizer/massifdata/treeleafitem.h b/massif-visualizer/massifdata/treeleafitem.h new file mode 100644 index 00000000..ea2e732f --- /dev/null +++ b/massif-visualizer/massifdata/treeleafitem.h @@ -0,0 +1,94 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef TREELEAFITEM_H +#define TREELEAFITEM_H + +#include +#include +#include + +#include "massifdata_export.h" + +namespace Massif { + +class MASSIFDATA_EXPORT TreeLeafItem +{ +public: + TreeLeafItem(); + ~TreeLeafItem(); + + /** + * Sets the label for this leaf item. + */ + void setLabel(const QByteArray& label); + /** + * @return The label for this leaf item. + */ + QByteArray label() const; + + /** + * Sets the cost for this item in bytes. + */ + void setCost(quint64 bytes); + /** + * @return The cost for this item in bytes. + */ + quint64 cost() const; + + /** + * Adds @p leaf as child of this item. + * This item takes ownership. + */ + void addChild(TreeLeafItem* leaf); + + /** + * Sets @p leafs as children of this item and takes ownership. + * No existing children will be deleted and might get leaked + * if you do not do this yourself. + */ + void setChildren(const QVector& leafs); + + /** + * @return The children of this leaf. + */ + QVector children() const; + + /** + * @return The parent tree leaf item or zero, if this is the root node. + */ + TreeLeafItem* parent() const; + +private: + QByteArray m_label; + quint64 m_cost; + QVector m_children; + + TreeLeafItem* m_parent; +}; + +} + +Q_DECLARE_METATYPE(Massif::TreeLeafItem*); +Q_DECLARE_METATYPE(const Massif::TreeLeafItem*); + +#endif // TREELEAFITEM_H diff --git a/massif-visualizer/massifdata/util.cpp b/massif-visualizer/massifdata/util.cpp new file mode 100644 index 00000000..81628405 --- /dev/null +++ b/massif-visualizer/massifdata/util.cpp @@ -0,0 +1,162 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "util.h" + +#include "snapshotitem.h" +#include "treeleafitem.h" + +#include +#include +#include + +#include + +namespace Massif { + +QString prettyCost(quint64 cost) +{ + Q_ASSERT(KGlobal::config()); + KConfigGroup conf = KGlobal::config()->group(QLatin1String("Settings")); + int precision = conf.readEntry(QLatin1String("prettyCostPrecision"), 1); + return KGlobal::locale()->formatByteSize(cost, precision); +} + +QByteArray shortenTemplates(const QByteArray& identifier) +{ + QByteArray ret = identifier; + Q_ASSERT(KGlobal::config()); + KConfigGroup conf = KGlobal::config()->group(QLatin1String("Settings")); + if (conf.readEntry(QLatin1String("shortenTemplates"), false)) { + // remove template arguments between <...> + int depth = 0; + int open = 0; + for (int i = 0; i < ret.length(); ++i) { + if (ret.at(i) == '<') { + if (!depth) { + open = i; + } + ++depth; + } else if (ret.at(i) == '>') { + --depth; + if (!depth) { + ret.remove(open + 1, i - open - 1); + i = open + 1; + open = 0; + } + } + } + } + return ret; +} + +ParsedLabel parseLabel(const QByteArray& label) +{ + ParsedLabel ret; + int functionStart = 0; + int functionEnd = label.length(); + if (label.startsWith("0x")) { + int colonPos = label.indexOf(": "); + if (colonPos != -1) { + ret.address = label.left(colonPos); + functionStart = colonPos + 2; + } + } + if (label.endsWith(')')) { + int locationPos = label.lastIndexOf(" ("); + if (locationPos != -1) { + ret.location = label.mid(locationPos + 2, label.length() - locationPos - 3); + functionEnd = locationPos; + } + } + ret.function = label.mid(functionStart, functionEnd - functionStart); + return ret; +} + +uint qHash(const ParsedLabel& label) +{ + return qHash(label.function) + 17 * qHash(label.location) + 19 * qHash(label.address); +} + +QByteArray prettyLabel(const QByteArray& label) +{ + ParsedLabel parsed = parseLabel(label); + const QByteArray func = shortenTemplates(parsed.function); + + if (!parsed.location.isEmpty()) { + return func + " (" + parsed.location + ")"; + } else { + return func; + } +} + +QByteArray functionInLabel(const QByteArray& label) +{ + return parseLabel(label).function; +} + +QByteArray addressInLabel(const QByteArray& label) +{ + return parseLabel(label).address; +} + +QByteArray locationInLabel(const QByteArray& label) +{ + return parseLabel(label).location; +} + +bool isBelowThreshold(const QByteArray& label) +{ + return label.indexOf("all below massif's threshold") != -1; +} + +QString formatLabelForTooltip(const ParsedLabel& parsed) +{ + QString ret; + if (!parsed.function.isEmpty()) { + ret += i18n("
function:
%1
\n", Qt::escape(parsed.function)); + } + if (!parsed.location.isEmpty()) { + ret += i18n("
location:
%1
\n", Qt::escape(parsed.location)); + } + if (!parsed.address.isEmpty()) { + ret += i18n("
address:
%1
\n", Qt::escape(parsed.address)); + } + return ret; +} + +QString finalizeTooltip(const QString& contents) +{ + return "
\n" + + contents + "
"; +} + +QString tooltipForTreeLeaf(const TreeLeafItem* node, const SnapshotItem* snapshot, const QByteArray& label) +{ + QString tooltip = i18n("
cost:
%1, i.e. %2% of snapshot #%3
", prettyCost(node ? node->cost() : 0), + // yeah nice how I round to two decimals, right? :D + double(int(double(node ? node->cost() : 0)/snapshot->cost()*10000))/100, snapshot->number()); + tooltip += formatLabelForTooltip(parseLabel(label)); + return finalizeTooltip(tooltip); +} + +} diff --git a/massif-visualizer/massifdata/util.h b/massif-visualizer/massifdata/util.h new file mode 100644 index 00000000..905621f5 --- /dev/null +++ b/massif-visualizer/massifdata/util.h @@ -0,0 +1,106 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIFDATA_UTIL_H +#define MASSIFDATA_UTIL_H + +#include + +#include "massifdata_export.h" + +namespace Massif { + +class TreeLeafItem; +class SnapshotItem; + +/** + * Returns a prettified cost string. + */ +MASSIFDATA_EXPORT QString prettyCost(quint64 cost); + +struct ParsedLabel +{ + QByteArray address; + QByteArray function; + QByteArray location; + + bool operator==(const ParsedLabel& o) const + { + return o.address == address && o.function == function && o.location == location; + } +}; + +MASSIFDATA_EXPORT ParsedLabel parseLabel(const QByteArray& label); +MASSIFDATA_EXPORT uint qHash(const ParsedLabel& label); + +/** + * Prepares a tree node's label for the UI. + * So far, only the Mem-Address will get stripped. + */ +MASSIFDATA_EXPORT QByteArray prettyLabel(const QByteArray& label); + +/** + * If enabled in settings, removes template arguments from identifiers. + */ +MASSIFDATA_EXPORT QByteArray shortenTemplates(const QByteArray& label); + +/** + * Extracts the function name from the @p label. + */ +MASSIFDATA_EXPORT QByteArray functionInLabel(const QByteArray& label); + +/** + * Extracts the address from the @p label if it exists. + */ +MASSIFDATA_EXPORT QByteArray addressInLabel(const QByteArray& label); + +/** + * Extracts the location from the @p label if it exists. + */ +MASSIFDATA_EXPORT QByteArray locationInLabel(const QByteArray& label); + +/** + * Checks whether this label denotes a tree node + * with aggregated items below massif's threshold. + */ +MASSIFDATA_EXPORT bool isBelowThreshold(const QByteArray& label); + +/** + * Formats a label to a richtext tooltip. + * + * Returns HTML items of a definition list (
). + */ +MASSIFDATA_EXPORT QString formatLabelForTooltip(const ParsedLabel& label); + +/** + * Given a list of HTML definition list items, finalize the richtext tooltip. + */ +MASSIFDATA_EXPORT QString finalizeTooltip(const QString& contents); + +/** + * Prepares a richtext tooltip for the given node, snapshot and label. + */ +MASSIFDATA_EXPORT QString tooltipForTreeLeaf(const Massif::TreeLeafItem* node, const Massif::SnapshotItem* snapshot, const QByteArray& label); + +} + +#endif // MASSIFDATA_UTIL_H diff --git a/massif-visualizer/pics/CMakeLists.txt b/massif-visualizer/pics/CMakeLists.txt new file mode 100644 index 00000000..19cc15b6 --- /dev/null +++ b/massif-visualizer/pics/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory( hicolor ) diff --git a/massif-visualizer/pics/hicolor/CMakeLists.txt b/massif-visualizer/pics/hicolor/CMakeLists.txt new file mode 100644 index 00000000..b78ce8ad --- /dev/null +++ b/massif-visualizer/pics/hicolor/CMakeLists.txt @@ -0,0 +1 @@ +kde4_install_icons( ${DATA_INSTALL_DIR}/massif-visualizer/icons ) diff --git a/massif-visualizer/pics/hicolor/hi22-action-shortentemplates.png b/massif-visualizer/pics/hicolor/hi22-action-shortentemplates.png new file mode 100644 index 00000000..c25776c9 Binary files /dev/null and b/massif-visualizer/pics/hicolor/hi22-action-shortentemplates.png differ diff --git a/massif-visualizer/test/CMakeLists.txt b/massif-visualizer/test/CMakeLists.txt new file mode 100644 index 00000000..bff01626 --- /dev/null +++ b/massif-visualizer/test/CMakeLists.txt @@ -0,0 +1,18 @@ +set(datamodeltest_SRCS + datamodeltest.cpp + modeltest.cpp +) +kde4_add_unit_test(datamodeltest ${datamodeltest_SRCS}) +target_link_libraries(datamodeltest LINK_PRIVATE + mv-massifdata + mv-visualizer + ${QT_QTTEST_LIBRARY} +) + +kde4_add_executable(massifparser massifparser.cpp) + +target_link_libraries(massifparser LINK_PRIVATE + ${QT_QTCORE_LIBRARY} + ${KDE4_KDECORE_LIBS} + mv-massifdata +) diff --git a/massif-visualizer/test/data/massif.out.32406 b/massif-visualizer/test/data/massif.out.32406 new file mode 100644 index 00000000..0a518e79 --- /dev/null +++ b/massif-visualizer/test/data/massif.out.32406 @@ -0,0 +1,19 @@ +desc: (none) +cmd: ./a.out +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=123667 +mem_heap_B=100 +mem_heap_extra_B=20 +mem_stacks_B=0 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.duchainify.bz2 b/massif-visualizer/test/data/massif.out.duchainify.bz2 new file mode 100644 index 00000000..7b10fde5 Binary files /dev/null and b/massif-visualizer/test/data/massif.out.duchainify.bz2 differ diff --git a/massif-visualizer/test/data/massif.out.huge b/massif-visualizer/test/data/massif.out.huge new file mode 100644 index 00000000..dbecf207 --- /dev/null +++ b/massif-visualizer/test/data/massif.out.huge @@ -0,0 +1,11 @@ +desc: (none) +cmd: ./a.out +time_unit: i +#----------- +snapshot=0 +#----------- +time=123667 +mem_heap_B=5021305210 +mem_heap_extra_B=5021305211 +mem_stacks_B=5021305212 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.kate b/massif-visualizer/test/data/massif.out.kate new file mode 100644 index 00000000..30dd5b22 --- /dev/null +++ b/massif-visualizer/test/data/massif.out.kate @@ -0,0 +1,14729 @@ +desc: (none) +cmd: kate +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=110558310 +mem_heap_B=754538 +mem_heap_extra_B=158558 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=2 +#----------- +time=199002722 +mem_heap_B=987642 +mem_heap_extra_B=1097574 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=3 +#----------- +time=293716652 +mem_heap_B=1776070 +mem_heap_extra_B=1231746 +mem_stacks_B=0 +heap_tree=detailed +n11: 1776070 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 530016 in 803 places, all below massif's threshold (01.00%) + n5: 317637 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 86699 0x6FE95C3: QIODevice::readAll() (in /usr/lib/libQtCore.so.4.5.2) + n1: 86699 0x5FFDF56: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 86699 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 86699 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 86699 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 86699 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 86699 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 86699 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 86699 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 86699 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 86699 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 86699 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 86699 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 86699 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 86699 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 86699 0x504DABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 82080 0x6FEAF3C: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) + n1: 65664 0x6FE2C7E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n2: 65664 0x6FE313C: QFile::QFile(QString const&) (in /usr/lib/libQtCore.so.4.5.2) + n1: 32832 0x690F52E: KPixmapCache::Private::mmapFile(QString const&, KPixmapCache::Private::MmapInfo*, int) (in /usr/lib/libkdeui.so.5.3.0) + n0: 32832 in 2 places, all below massif's threshold (01.00%) + n0: 32832 in 10 places, all below massif's threshold (01.00%) + n0: 16416 in 2 places, all below massif's threshold (01.00%) + n1: 82080 0x6FE9BFC: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) + n1: 82080 0x6FE9EB4: QIODevice::QIODevice() (in /usr/lib/libQtCore.so.4.5.2) + n0: 82080 in 6 places, all below massif's threshold (01.00%) + n1: 65664 0x6FE2E7B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n2: 65664 0x6FE313C: QFile::QFile(QString const&) (in /usr/lib/libQtCore.so.4.5.2) + n1: 32832 0x690F52E: KPixmapCache::Private::mmapFile(QString const&, KPixmapCache::Private::MmapInfo*, int) (in /usr/lib/libkdeui.so.5.3.0) + n0: 32832 in 2 places, all below massif's threshold (01.00%) + n0: 32832 in 10 places, all below massif's threshold (01.00%) + n0: 1114 in 10 places, all below massif's threshold (01.00%) + n5: 294212 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 118778 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 118778 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 108421 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n3: 108421 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 63483 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 63315 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 63315 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 63315 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 63315 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 63315 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 63315 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 63315 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 63315 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 63315 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 63315 0x504DABB: (below main) (libc-start.c:220) + n0: 168 in 3 places, all below massif's threshold (01.00%) + n1: 42462 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 42462 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 42462 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 42462 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 42462 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) + n1: 33996 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) + n1: 33996 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 33996 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 33996 0x504DABB: (below main) (libc-start.c:220) + n0: 8466 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2476 in 1 place, below massif's threshold (01.00%) + n0: 10357 in 2 places, all below massif's threshold (01.00%) + n1: 109700 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 109700 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 98354 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n3: 98354 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 49050 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 49050 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 49050 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 49050 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 49050 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) + n1: 39393 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) + n1: 39393 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 39393 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 39393 0x504DABB: (below main) (libc-start.c:220) + n0: 9657 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 47418 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 47286 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 47286 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 47286 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 47286 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 47286 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 47286 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 47286 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 47286 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 47286 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 47286 0x504DABB: (below main) (libc-start.c:220) + n0: 132 in 3 places, all below massif's threshold (01.00%) + n0: 1886 in 1 place, below massif's threshold (01.00%) + n0: 11346 in 2 places, all below massif's threshold (01.00%) + n1: 34918 0x5FFF535: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 34918 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 34918 in 3 places, all below massif's threshold (01.00%) + n1: 30777 0x6F668C0: QByteArray::mid(int, int) const (in /usr/lib/libQtCore.so.4.5.2) + n0: 30777 in 10 places, all below massif's threshold (01.00%) + n0: 39 in 5 places, all below massif's threshold (01.00%) + n2: 228928 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 217264 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n3: 217264 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 172472 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 172472 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 172472 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 159368 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n3: 159368 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 92440 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 92216 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 92216 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 92216 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 92216 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 92216 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 92216 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 92216 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 92216 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 92216 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 92216 0x504DABB: (below main) (libc-start.c:220) + n0: 224 in 3 places, all below massif's threshold (01.00%) + n1: 64088 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 64088 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 64088 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 64088 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n2: 64088 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) + n1: 51456 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 51456 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) + n0: 51456 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 12632 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2840 in 1 place, below massif's threshold (01.00%) + n0: 13104 in 2 places, all below massif's threshold (01.00%) + n1: 36744 0x5FF15A7: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 36744 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 36744 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 36744 in 3 places, all below massif's threshold (01.00%) + n0: 8048 in 1 place, below massif's threshold (01.00%) + n0: 11664 in 16 places, all below massif's threshold (01.00%) + n2: 123430 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 80784 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 44992 in 15 places, all below massif's threshold (01.00%) + n2: 35792 0x6FAE038: QString::toLower() const (in /usr/lib/libQtCore.so.4.5.2) + n1: 33536 0x7012980: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 33536 0x70163A3: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 33536 0x70164D2: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 33536 0x700E755: QSettings::value(QString const&, QVariant const&) const (in /usr/lib/libQtCore.so.4.5.2) + n0: 33536 in 3 places, all below massif's threshold (01.00%) + n0: 2256 in 45 places, all below massif's threshold (01.00%) + n0: 42646 in 34 places, all below massif's threshold (01.00%) + n1: 65536 0x55E4E34: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 65536 0x55E5369: QImage::QImage(int, int, QImage::Format) (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x55E5BD9: QImage::copy(QRect const&) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x686940B: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) + n1: 65536 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) + n1: 65536 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 65536 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 65536 0x504DABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 65280 0x504E68F: __gconv_open (gconv_open.c:284) + n1: 65280 0x504E000: iconv_open (iconv_open.c:72) + n2: 65280 0x707DB96: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x707EB2C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6FA75DC: QString::fromLocal8Bit(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6FE08D3: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6FE0778: QFile::decodeName(QByteArray const&) (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x702673E: QFSFileEngine::currentPath(QString const&) (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6FD66A8: QDir::currentPath() (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6060103: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (in /usr/lib/libkdecore.so.5.3.0) + n1: 32640 0x4E2ADA6: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x504DABB: (below main) (libc-start.c:220) + n1: 32640 0x707E4E4: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x7078705: QTextCodec::fromUnicode(QString const&) const (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x6FA6BEF: QString::toLocal8Bit() const (in /usr/lib/libQtCore.so.4.5.2) + n1: 32640 0x606010E: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (in /usr/lib/libkdecore.so.5.3.0) + n1: 32640 0x4E2ADA6: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x504DABB: (below main) (libc-start.c:220) + n1: 45144 0x60373E4: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6037B56: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6038A6E: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6035F89: kDebugStream(QtMsgType, int, char const*, int, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6138865: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6137EA4: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6139043: KSycoca::findFactory(KSycocaFactoryId) (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x613C445: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x6094263: KServiceFactory::KServiceFactory() (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x60945D8: KServiceFactory::self() (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0x608C38B: KService::serviceByDesktopName(QString const&) (in /usr/lib/libkdecore.so.5.3.0) + n1: 45144 0xA4531B0: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 45144 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 45144 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 45144 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 45144 0x504DABB: (below main) (libc-start.c:220) + n1: 42839 0x400AF2D: _dl_new_object (dl-object.c:52) + n1: 42839 0x400647A: _dl_map_object_from_fd (dl-load.c:966) + n1: 42839 0x40083A6: _dl_map_object (dl-load.c:2235) + n0: 42839 in 2 places, all below massif's threshold (01.00%) + n1: 31864 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 31864 in 33 places, all below massif's threshold (01.00%) + n1: 31184 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 31184 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=4 +#----------- +time=375603031 +mem_heap_B=2113852 +mem_heap_extra_B=1355204 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=5 +#----------- +time=485920124 +mem_heap_B=3137441 +mem_heap_extra_B=1541727 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=6 +#----------- +time=568275881 +mem_heap_B=5048925 +mem_heap_extra_B=1787339 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=7 +#----------- +time=634713981 +mem_heap_B=6498342 +mem_heap_extra_B=1825578 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=8 +#----------- +time=717708566 +mem_heap_B=6641182 +mem_heap_extra_B=1825618 +mem_stacks_B=0 +heap_tree=detailed +n11: 6641182 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 2100761 in 1620 places, all below massif's threshold (01.00%) + n3: 1361210 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 201408 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 201408 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 201408 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 201408 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 201408 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 201408 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 201408 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 201408 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 201408 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 201408 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 201408 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 102432 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 102432 0x504DABB: (below main) (libc-start.c:220) + n1: 98976 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 98976 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 98976 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 98976 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n0: 98976 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n0: 146682 in 41 places, all below massif's threshold (01.00%) + n3: 724586 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 154159 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 154159 0x504DABB: (below main) (libc-start.c:220) + n1: 96120 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 96120 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 96120 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 96120 0x504DABB: (below main) (libc-start.c:220) + n0: 4239 in 9 places, all below massif's threshold (01.00%) + n0: 48495 in 3 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n1: 295027 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 295027 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 278260 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 278260 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 224477 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 115366 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 115366 0x504DABB: (below main) (libc-start.c:220) + n1: 106469 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 106469 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 106469 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 106469 0x504DABB: (below main) (libc-start.c:220) + n0: 2642 in 9 places, all below massif's threshold (01.00%) + n0: 53783 in 3 places, all below massif's threshold (01.00%) + n0: 16767 in 2 places, all below massif's threshold (01.00%) + n0: 111704 in 8 places, all below massif's threshold (01.00%) + n2: 561912 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533536 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533536 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 457120 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n1: 138872 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 138872 0x504DABB: (below main) (libc-start.c:220) + n0: 4096 in 9 places, all below massif's threshold (01.00%) + n0: 70960 in 3 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 76416 in 2 places, all below massif's threshold (01.00%) + n0: 28376 in 52 places, all below massif's threshold (01.00%) + n1: 495688 0x9132E23: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 495688 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 495688 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 495688 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 495688 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 495688 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 495688 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 495688 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 495688 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 495688 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 495688 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 495688 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 457252 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 312848 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 174680 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 98976 0x5FED260: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 98880 0x5FF6AAA: KConfigGroup::readEntry(char const*, QString const&) const (in /usr/lib/libkdecore.so.5.3.0) + n1: 98776 0x5FF71D0: KConfigGroup::readEntry(char const*, char const*) const (in /usr/lib/libkdecore.so.5.3.0) + n0: 98776 in 22 places, all below massif's threshold (01.00%) + n0: 104 in 5 places, all below massif's threshold (01.00%) + n0: 96 in 1 place, below massif's threshold (01.00%) + n0: 75704 in 36 places, all below massif's threshold (01.00%) + n0: 138168 in 21 places, all below massif's threshold (01.00%) + n0: 144404 in 54 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 198985 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 198985 in 20 places, all below massif's threshold (01.00%) + n2: 171512 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 151912 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 151912 in 161 places, all below massif's threshold (01.00%) + n0: 19600 in 3 places, all below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) + n1: 90508 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 90508 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 90508 in 21 places, all below massif's threshold (01.00%) +#----------- +snapshot=9 +#----------- +time=784636212 +mem_heap_B=7603984 +mem_heap_extra_B=2084648 +mem_stacks_B=0 +heap_tree=detailed +n12: 7603984 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 2969883 in 1903 places, all below massif's threshold (01.00%) + n3: 1464954 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 280080 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n3: 280080 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 102432 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 102432 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 102432 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 102432 0x504DABB: (below main) (libc-start.c:220) + n1: 98976 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 98976 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 98976 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 98976 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 98976 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 98976 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n0: 98976 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n0: 78672 in 1 place, below massif's threshold (01.00%) + n0: 171754 in 42 places, all below massif's threshold (01.00%) + n3: 724586 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 154159 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 154159 0x504DABB: (below main) (libc-start.c:220) + n0: 100359 in 10 places, all below massif's threshold (01.00%) + n0: 48495 in 3 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n1: 295027 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 295027 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 278260 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 278260 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 224477 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 115366 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 115366 0x504DABB: (below main) (libc-start.c:220) + n1: 106469 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 106469 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 106469 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 106469 0x504DABB: (below main) (libc-start.c:220) + n0: 2642 in 9 places, all below massif's threshold (01.00%) + n0: 53783 in 3 places, all below massif's threshold (01.00%) + n0: 16767 in 2 places, all below massif's threshold (01.00%) + n0: 111704 in 8 places, all below massif's threshold (01.00%) + n2: 565728 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533536 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533536 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 457120 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n1: 138872 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 138872 0x504DABB: (below main) (libc-start.c:220) + n0: 4096 in 9 places, all below massif's threshold (01.00%) + n0: 70960 in 3 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 76416 in 2 places, all below massif's threshold (01.00%) + n0: 32192 in 54 places, all below massif's threshold (01.00%) + n2: 518154 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 370360 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 208928 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 109952 in 84 places, all below massif's threshold (01.00%) + n2: 98976 0x5FED260: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 98880 0x5FF6AAA: KConfigGroup::readEntry(char const*, QString const&) const (in /usr/lib/libkdecore.so.5.3.0) + n1: 98776 0x5FF71D0: KConfigGroup::readEntry(char const*, char const*) const (in /usr/lib/libkdecore.so.5.3.0) + n0: 98776 in 22 places, all below massif's threshold (01.00%) + n0: 104 in 5 places, all below massif's threshold (01.00%) + n0: 96 in 1 place, below massif's threshold (01.00%) + n0: 161432 in 21 places, all below massif's threshold (01.00%) + n0: 147794 in 60 places, all below massif's threshold (01.00%) + n2: 321544 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 299320 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 200968 in 203 places, all below massif's threshold (01.00%) + n1: 98352 0x705A447: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) + n2: 98352 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 98112 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) + n0: 98112 in 467 places, all below massif's threshold (01.00%) + n0: 240 in 2 places, all below massif's threshold (01.00%) + n0: 22224 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 216484 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 117988 in 20 places, all below massif's threshold (01.00%) + n1: 98496 0x6FE9BFC: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) + n1: 98496 0x6FE9EB4: QIODevice::QIODevice() (in /usr/lib/libQtCore.so.4.5.2) + n0: 98496 in 6 places, all below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) + n1: 124816 0x7061E5C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 124816 0x705A3FE: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 124816 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 124816 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) + n0: 124816 in 166 places, all below massif's threshold (01.00%) + n1: 119483 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 119483 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 119483 in 21 places, all below massif's threshold (01.00%) + n1: 99584 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 99584 in 75 places, all below massif's threshold (01.00%) +#----------- +snapshot=10 +#----------- +time=874841130 +mem_heap_B=7646283 +mem_heap_extra_B=2078165 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=11 +#----------- +time=939800075 +mem_heap_B=8393657 +mem_heap_extra_B=2255671 +mem_stacks_B=0 +heap_tree=detailed +n14: 8393657 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 3191242 in 2286 places, all below massif's threshold (01.00%) + n3: 1463282 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 280080 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 280080 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280080 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 280080 in 3 places, all below massif's threshold (01.00%) + n0: 170082 in 42 places, all below massif's threshold (01.00%) + n3: 724463 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 154159 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 154159 0x504DABB: (below main) (libc-start.c:220) + n0: 100359 in 10 places, all below massif's threshold (01.00%) + n0: 48495 in 3 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 294871 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 294871 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 278104 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 278104 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 224477 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 115366 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 115366 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 115366 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 115366 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 115366 0x504DABB: (below main) (libc-start.c:220) + n0: 109111 in 10 places, all below massif's threshold (01.00%) + n0: 53627 in 3 places, all below massif's threshold (01.00%) + n0: 16767 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 618438 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 459744 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 236256 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 236256 in 91 places, all below massif's threshold (01.00%) + n0: 223488 in 21 places, all below massif's threshold (01.00%) + n0: 158694 in 67 places, all below massif's threshold (01.00%) + n2: 570208 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n1: 138872 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 138872 0x504DABB: (below main) (libc-start.c:220) + n0: 4096 in 9 places, all below massif's threshold (01.00%) + n0: 70960 in 3 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 36216 in 76 places, all below massif's threshold (01.00%) + n2: 397248 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 366104 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 245064 in 238 places, all below massif's threshold (01.00%) + n1: 121040 0x705A447: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) + n2: 121040 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 120720 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) + n0: 120720 in 575 places, all below massif's threshold (01.00%) + n0: 320 in 2 places, all below massif's threshold (01.00%) + n0: 31144 in 3 places, all below massif's threshold (01.00%) + n1: 315065 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 315065 in 29 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) + n1: 160992 0x7061E5C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 160992 0x705A3FE: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 160992 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 160992 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) + n0: 160992 in 222 places, all below massif's threshold (01.00%) + n1: 126704 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 126704 in 92 places, all below massif's threshold (01.00%) + n1: 123919 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 123919 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 123919 in 21 places, all below massif's threshold (01.00%) + n1: 115808 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 115808 in 3 places, all below massif's threshold (01.00%) + n1: 107520 0x5597991: QWidgetAction::QWidgetAction(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 107520 in 6 places, all below massif's threshold (01.00%) +#----------- +snapshot=12 +#----------- +time=1039131551 +mem_heap_B=8887755 +mem_heap_extra_B=2296309 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=13 +#----------- +time=1098539650 +mem_heap_B=8979833 +mem_heap_extra_B=2310207 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=14 +#----------- +time=1171846470 +mem_heap_B=9245360 +mem_heap_extra_B=2353656 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=15 +#----------- +time=1235357442 +mem_heap_B=8913223 +mem_heap_extra_B=2269241 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=16 +#----------- +time=1337666475 +mem_heap_B=10064933 +mem_heap_extra_B=2481459 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=17 +#----------- +time=1407075576 +mem_heap_B=10210419 +mem_heap_extra_B=2493261 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=18 +#----------- +time=1502514693 +mem_heap_B=10523609 +mem_heap_extra_B=2521631 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=19 +#----------- +time=1566297595 +mem_heap_B=10743033 +mem_heap_extra_B=2542831 +mem_stacks_B=0 +heap_tree=detailed +n15: 10743033 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4063065 in 2482 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 797740 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 583024 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 356952 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 214716 in 76 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 154159 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 154159 0x504DABB: (below main) (libc-start.c:220) + n0: 100359 in 10 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 709948 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 590586 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 590586 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 119362 in 12 places, all below massif's threshold (01.00%) + n2: 576072 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n3: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n1: 138872 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 138872 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 138872 0x504DABB: (below main) (libc-start.c:220) + n0: 4096 in 9 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 42080 in 97 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 31 places, all below massif's threshold (01.00%) + n2: 400752 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 372224 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 372224 in 266 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n2: 274424 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 274424 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 274424 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 274424 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n1: 274424 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 274424 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 266744 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 266744 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n1: 266744 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n0: 266744 in 5 places, all below massif's threshold (01.00%) + n0: 7680 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 181984 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 148896 0x56C68B7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 148896 in 2 places, all below massif's threshold (01.00%) + n0: 33088 in 3 places, all below massif's threshold (01.00%) + n1: 172288 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 172288 in 108 places, all below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) + n1: 150984 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 150984 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 150984 in 21 places, all below massif's threshold (01.00%) +#----------- +snapshot=20 +#----------- +time=1641884681 +mem_heap_B=10830873 +mem_heap_extra_B=2555103 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=21 +#----------- +time=1751819720 +mem_heap_B=11221261 +mem_heap_extra_B=2588059 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=22 +#----------- +time=1820778287 +mem_heap_B=11459605 +mem_heap_extra_B=2609459 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=23 +#----------- +time=1894593457 +mem_heap_B=11738053 +mem_heap_extra_B=2633755 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=24 +#----------- +time=1956180349 +mem_heap_B=12064549 +mem_heap_extra_B=2654819 +mem_stacks_B=0 +heap_tree=detailed +n17: 12064549 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4202585 in 2480 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 814968 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 814968 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 814968 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 814968 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n1: 814968 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 814968 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 799144 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 799144 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 799144 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 659360 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 659360 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 659360 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 659360 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 659360 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 659360 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 659360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 659360 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 659360 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 659360 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 659360 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 659360 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 139784 in 4 places, all below massif's threshold (01.00%) + n0: 15824 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 797740 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 583024 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 356952 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 214716 in 76 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 154159 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 154159 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 154159 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 154159 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 154159 0x504DABB: (below main) (libc-start.c:220) + n0: 100359 in 10 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 709948 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 590586 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 590586 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 119362 in 12 places, all below massif's threshold (01.00%) + n2: 576120 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 42128 in 97 places, all below massif's threshold (01.00%) + n2: 429216 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 400688 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 400688 in 266 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 31 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 398168 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 396296 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 396296 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 3144 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 209532 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 209532 in 50 places, all below massif's threshold (01.00%) + n2: 181984 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 148896 0x56C68B7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 148896 in 2 places, all below massif's threshold (01.00%) + n0: 33088 in 3 places, all below massif's threshold (01.00%) + n1: 173640 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 173640 in 108 places, all below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) + n1: 150976 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 150976 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 150976 in 21 places, all below massif's threshold (01.00%) +#----------- +snapshot=25 +#----------- +time=2053699632 +mem_heap_B=13114237 +mem_heap_extra_B=2723555 +mem_stacks_B=0 +heap_tree=detailed +n17: 13114237 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4405573 in 2480 places, all below massif's threshold (01.00%) + n2: 1567400 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1567400 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 1567400 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1567400 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n1: 1567400 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 1567400 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 1525488 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 1525488 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 1525488 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 1313728 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 1313728 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 1313728 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 1313728 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 1313728 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 1313728 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 1313728 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 1313728 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1313728 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1313728 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1313728 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1313728 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 211760 in 4 places, all below massif's threshold (01.00%) + n0: 41912 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 797740 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 583024 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 356952 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 214716 in 76 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 709948 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 590586 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 590586 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 119362 in 12 places, all below massif's threshold (01.00%) + n2: 576120 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 42128 in 97 places, all below massif's threshold (01.00%) + n2: 463696 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 435168 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 435168 in 266 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 31 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 398168 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 396296 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 396296 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 3144 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 225284 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 225284 in 50 places, all below massif's threshold (01.00%) + n1: 194332 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 194332 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 194332 in 2 places, all below massif's threshold (01.00%) + n1: 181984 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 181984 in 4 places, all below massif's threshold (01.00%) + n1: 174320 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 174320 in 108 places, all below massif's threshold (01.00%) + n1: 163840 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + n1: 163840 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 163840 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 163840 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 163840 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 163840 0x504DABB: (below main) (libc-start.c:220) +#----------- +snapshot=26 +#----------- +time=2129491054 +mem_heap_B=14063489 +mem_heap_extra_B=2787775 +mem_stacks_B=0 +heap_tree=detailed +n16: 14063489 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4698865 in 2481 places, all below massif's threshold (01.00%) + n2: 2257712 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2257712 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 2257712 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2257712 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n1: 2257712 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 2257712 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 2204064 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 2204064 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 2204064 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 1992304 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 1992304 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 1992304 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 1992304 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 1992304 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 1992304 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 1992304 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 1992304 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1992304 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1992304 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1992304 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1992304 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 211760 in 4 places, all below massif's threshold (01.00%) + n0: 53648 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 797740 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 583024 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 356952 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 214716 in 76 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 709948 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 590586 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 590586 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 590586 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 590586 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 590586 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 590586 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 590586 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 590586 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 119362 in 12 places, all below massif's threshold (01.00%) + n2: 576120 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 42128 in 97 places, all below massif's threshold (01.00%) + n2: 495704 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 467176 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 467176 in 266 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 31 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) + n1: 398168 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 398168 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) + n1: 396296 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 396296 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 396296 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 396296 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 396296 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 3144 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 274088 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 274088 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 177212 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 177212 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 177212 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n1: 177212 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 177212 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 175244 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 175244 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n1: 175244 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n0: 175244 in 5 places, all below massif's threshold (01.00%) + n0: 1968 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 96876 in 1 place, below massif's threshold (01.00%) + n1: 242192 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 242192 in 50 places, all below massif's threshold (01.00%) + n1: 181984 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 181984 in 4 places, all below massif's threshold (01.00%) + n1: 175136 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 175136 in 108 places, all below massif's threshold (01.00%) +#----------- +snapshot=27 +#----------- +time=2235323238 +mem_heap_B=10474361 +mem_heap_extra_B=2543751 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=28 +#----------- +time=2311662255 +mem_heap_B=10631655 +mem_heap_extra_B=2562065 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=29 +#----------- +time=2387571305 +mem_heap_B=10746607 +mem_heap_extra_B=2583257 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=30 +#----------- +time=2482462176 +mem_heap_B=10857359 +mem_heap_extra_B=2598281 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=31 +#----------- +time=2520424096 +mem_heap_B=10908839 +mem_heap_extra_B=2603561 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=32 +#----------- +time=2596333172 +mem_heap_B=11003087 +mem_heap_extra_B=2615465 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=33 +#----------- +time=2672241031 +mem_heap_B=11095919 +mem_heap_extra_B=2628489 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=34 +#----------- +time=2770652571 +mem_heap_B=10994177 +mem_heap_extra_B=2659207 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=35 +#----------- +time=2827586530 +mem_heap_B=10868519 +mem_heap_extra_B=2614977 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=36 +#----------- +time=2922476053 +mem_heap_B=11030983 +mem_heap_extra_B=2637329 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=37 +#----------- +time=2998390178 +mem_heap_B=11119655 +mem_heap_extra_B=2649713 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=38 +#----------- +time=3111753933 +mem_heap_B=11262183 +mem_heap_extra_B=2666481 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=39 +#----------- +time=3149544591 +mem_heap_B=11307671 +mem_heap_extra_B=2672249 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=40 +#----------- +time=3225119856 +mem_heap_B=11409775 +mem_heap_extra_B=2687545 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=41 +#----------- +time=3300719590 +mem_heap_B=12102523 +mem_heap_extra_B=2739277 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=42 +#----------- +time=3376294053 +mem_heap_B=13408867 +mem_heap_extra_B=2832117 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=43 +#----------- +time=3477755138 +mem_heap_B=15416875 +mem_heap_extra_B=2970493 +mem_stacks_B=0 +heap_tree=detailed +n16: 15416875 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 5015223 in 2491 places, all below massif's threshold (01.00%) + n2: 2869488 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2869488 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 2869488 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2869488 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 2869488 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 2850144 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 2808704 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 2808704 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 2808704 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 2717960 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 2649216 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 2649216 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 2649216 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 2649216 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 2649216 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 2649216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 2649216 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 2649216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 2649216 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 2649216 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 2649216 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 41440 in 2 places, all below massif's threshold (01.00%) + n0: 19344 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 377128 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n2: 532776 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 504248 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 504248 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 391164 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 391164 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 266544 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 266544 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 266544 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 266544 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 263528 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 259844 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 259844 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 259844 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 256132 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 247408 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 247408 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 247408 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 247408 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 247408 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 247408 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 247408 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 247408 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 247408 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 247408 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 247408 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 3684 in 2 places, all below massif's threshold (01.00%) + n0: 3016 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 124620 in 1 place, below massif's threshold (01.00%) + n2: 370792 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 188416 0x6FA02AC: ??? (in /usr/lib/libQtCore.so.4.5.2) + n0: 188416 in 9 places, all below massif's threshold (01.00%) + n0: 182376 in 50 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 217400 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 217400 in 109 places, all below massif's threshold (01.00%) + n1: 185096 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 185096 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n1: 185096 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n0: 185096 in 3 places, all below massif's threshold (01.00%) +#----------- +snapshot=44 +#----------- +time=3556131391 +mem_heap_B=16862395 +mem_heap_extra_B=3063357 +mem_stacks_B=0 +heap_tree=detailed +n16: 16862395 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 5159211 in 2491 places, all below massif's threshold (01.00%) + n2: 3924200 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3924200 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 3924200 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3924200 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 3924200 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 3896216 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 3835360 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 3835360 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 3835360 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 3744616 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 3675872 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 3675872 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 3675872 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 3675872 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 3675872 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 3675872 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 3675872 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 3675872 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 3675872 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 3675872 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3675872 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 60856 in 2 places, all below massif's threshold (01.00%) + n0: 27984 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 377128 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 579032 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 550504 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 550504 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 513128 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 513128 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 348016 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 348016 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 348016 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 348016 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 344508 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 339852 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 339852 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 339852 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 336140 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 327416 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 327416 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 327416 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 327416 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 327416 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 327416 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 327416 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 327416 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 327416 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 327416 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 327416 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 4656 in 2 places, all below massif's threshold (01.00%) + n0: 3508 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 165112 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 392408 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 392408 in 51 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 240720 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 240720 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 240720 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 235688 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 235688 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 235688 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 228752 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 222088 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 222088 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 222088 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 222088 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 222088 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 222088 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 222088 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 222088 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 222088 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 222088 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 222088 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 222088 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 5032 in 2 places, all below massif's threshold (01.00%) + n1: 218760 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 218760 in 109 places, all below massif's threshold (01.00%) +#----------- +snapshot=45 +#----------- +time=3609673081 +mem_heap_B=17812515 +mem_heap_extra_B=3131141 +mem_stacks_B=0 +heap_tree=detailed +n17: 17812515 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 5040291 in 2490 places, all below massif's threshold (01.00%) + n2: 4604736 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4604736 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 4604736 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4604736 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 4604736 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 4574768 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 4497032 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 4497032 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 4497032 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 4406288 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 4337544 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 4337544 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 4337544 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4337544 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4337544 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4337544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4337544 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4337544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4337544 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4337544 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 4337544 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 77736 in 2 places, all below massif's threshold (01.00%) + n0: 29968 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 377128 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 612528 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 584000 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 584000 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 595204 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 595204 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 407744 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 407744 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 407744 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 407744 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 404236 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 399100 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 399100 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 399100 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 395388 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 386664 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 386664 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 386664 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386664 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386664 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386664 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386664 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386664 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 386664 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 5136 in 2 places, all below massif's threshold (01.00%) + n0: 3508 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 187460 in 1 place, below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 408996 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 408996 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 281112 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 281112 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 281112 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 275264 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 275264 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 275264 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 268328 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 261664 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 261664 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 261664 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 261664 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 261664 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 261664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 261664 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 261664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 261664 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 261664 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 261664 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 261664 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 5848 in 2 places, all below massif's threshold (01.00%) + n1: 219848 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 219848 in 109 places, all below massif's threshold (01.00%) + n1: 214864 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 214864 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 214864 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 214864 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n1: 213096 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n0: 213096 in 3 places, all below massif's threshold (01.00%) + n0: 1768 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) +#----------- +snapshot=46 +#----------- +time=3669546213 +mem_heap_B=18863463 +mem_heap_extra_B=3190033 +mem_stacks_B=0 +heap_tree=detailed +n18: 18863463 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 5260608 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5260608 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 5260608 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5260608 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 5260608 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 5225024 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 5136056 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 5136056 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 5136056 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 5045312 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 4976568 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 4976568 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 4976568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4976568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4976568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4976568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4976568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 4976568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 4976568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 4976568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 4976568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 88968 in 2 places, all below massif's threshold (01.00%) + n0: 35584 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4998363 in 2489 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 377128 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 224075 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 224075 in 11 places, all below massif's threshold (01.00%) + n0: 53514 in 4 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n1: 684316 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 684316 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 474136 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 474136 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 474136 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 474136 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 469644 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 463284 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 463284 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 463284 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 459572 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 450848 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 450848 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 450848 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 450848 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 450848 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 450848 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 450848 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 450848 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 450848 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 450848 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 450848 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 6360 in 2 places, all below massif's threshold (01.00%) + n0: 4492 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 210180 in 1 place, below massif's threshold (01.00%) + n2: 645128 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 616600 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 616600 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n2: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n1: 224576 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + n1: 224576 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + n1: 224576 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 224576 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 224576 0x504DABB: (below main) (libc-start.c:220) + n0: 142968 in 10 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 424480 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 424480 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 320008 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 320008 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 320008 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 313480 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 313480 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 313480 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 306544 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 299880 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 299880 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 299880 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 299880 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 299880 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 299880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 299880 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 299880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 299880 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 299880 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 299880 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 299880 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 6528 in 2 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 244608 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 244608 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 244608 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 244608 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 242632 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 237744 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 237744 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 237744 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 232440 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 227448 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 227448 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 227448 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 227448 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 227448 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 227448 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 227448 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 227448 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 227448 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 227448 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 227448 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 4888 in 2 places, all below massif's threshold (01.00%) + n0: 1976 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 230352 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 230352 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 228312 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 224496 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 224496 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 224496 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 222768 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n0: 222768 in 3 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 3816 in 2 places, all below massif's threshold (01.00%) + n0: 2040 in 1 place, below massif's threshold (01.00%) + n1: 220664 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 220664 in 109 places, all below massif's threshold (01.00%) +#----------- +snapshot=47 +#----------- +time=3728216667 +mem_heap_B=19282827 +mem_heap_extra_B=3219821 +mem_stacks_B=0 +heap_tree=detailed +n17: 19282827 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 5664304 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5664304 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 5664304 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5664304 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 5664304 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 5450296 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 5361328 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 5361328 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 5361328 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 5270584 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 5201840 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 5201840 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 5201840 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 5201840 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 5201840 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 5201840 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 5201840 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 5201840 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 5201840 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 5201840 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 5201840 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 88968 in 2 places, all below massif's threshold (01.00%) + n0: 214008 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5113799 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 377128 in 22 places, all below massif's threshold (01.00%) + n1: 226072 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 226072 in 96 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n1: 734188 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 734188 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 499512 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 499512 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 499512 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 499512 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 481960 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 475600 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 475600 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 475600 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 471888 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 463164 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 463164 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 463164 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 463164 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 463164 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 463164 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 463164 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 463164 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 463164 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 463164 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 463164 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 6360 in 2 places, all below massif's threshold (01.00%) + n0: 17552 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 234676 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 234676 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 234676 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n1: 234676 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n0: 234676 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 661800 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 633272 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 633272 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 430640 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 430640 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 337824 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337824 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 337824 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 330888 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 330888 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 330888 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 323952 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 317288 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 317288 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 317288 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317288 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317288 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317288 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317288 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317288 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 317288 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 317288 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 6936 in 2 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 258232 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 258232 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 258232 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 258232 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 250744 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 245752 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 245752 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 245752 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 240448 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 235456 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 235456 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 235456 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 235456 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 235456 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 235456 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 235456 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 235456 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 235456 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 235456 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 235456 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 7488 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 247104 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 247104 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 237792 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 233976 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 233976 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 233976 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 232248 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 228624 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 228624 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 228624 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 228624 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 228624 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 228624 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 228624 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 228624 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 228624 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 228624 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 228624 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 228624 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 3816 in 2 places, all below massif's threshold (01.00%) + n0: 9312 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=48 +#----------- +time=3819160780 +mem_heap_B=20810087 +mem_heap_extra_B=3324769 +mem_stacks_B=0 +heap_tree=detailed +n17: 20810087 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 6740984 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6740984 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 6740984 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6740984 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 6740984 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 6523936 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 6423160 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 6423160 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 6423160 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 6332416 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 6263672 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 6263672 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 6263672 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 6263672 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 6263672 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 6263672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 6263672 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 6263672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 6263672 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 6263672 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 6263672 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 100776 in 2 places, all below massif's threshold (01.00%) + n0: 217048 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5175447 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 888268 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 888268 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 589652 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 589652 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 589652 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 589652 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 571608 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 564516 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 564516 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 564516 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 560804 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 552080 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 552080 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 552080 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 552080 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 552080 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 552080 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 552080 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 552080 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 552080 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 552080 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 552080 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 7092 in 2 places, all below massif's threshold (01.00%) + n0: 18044 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 298616 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 298616 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 298616 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 298616 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 287208 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 281516 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 281516 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 281516 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 281516 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 277596 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 277596 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 277596 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 277596 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 277596 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 277596 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 277596 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 277596 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 277596 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 277596 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 277596 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5692 in 2 places, all below massif's threshold (01.00%) + n0: 11408 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 254518 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 254518 in 11 places, all below massif's threshold (01.00%) + n0: 48495 in 4 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 713640 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 685112 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 685112 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 453812 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 453812 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 398616 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 398616 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 398616 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 390456 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 390456 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 390456 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 383520 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 376856 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 376856 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 376856 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376856 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376856 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376856 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376856 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376856 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376856 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376856 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 376856 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 376856 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 8160 in 2 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 304720 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 304720 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 304720 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 304720 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 297128 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 291200 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 291200 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 291200 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 285896 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 280904 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 280904 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 280904 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280904 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280904 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280904 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280904 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280904 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280904 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280904 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 280904 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 5928 in 2 places, all below massif's threshold (01.00%) + n0: 7592 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 299664 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 299664 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 290208 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 285792 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 285792 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 285792 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 284064 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 280440 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 280440 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 280440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 280440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 280440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 280440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 280440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 280440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 4416 in 2 places, all below massif's threshold (01.00%) + n0: 9456 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=49 +#----------- +time=3921655551 +mem_heap_B=22450447 +mem_heap_extra_B=3434545 +mem_stacks_B=0 +heap_tree=detailed +n17: 22450447 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 7925640 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7925640 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 7925640 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7925640 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 7925640 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 7704568 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 7581272 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 7581272 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 7581272 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 7490528 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 7421784 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 7421784 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 7421784 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7421784 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7421784 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7421784 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7421784 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7421784 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7421784 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7421784 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 7421784 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 123296 in 2 places, all below massif's threshold (01.00%) + n0: 221072 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5232743 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1036540 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1036540 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 695032 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 695032 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 695032 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 695032 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 676496 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 667940 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 667940 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 667940 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 664228 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 655504 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 655504 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 655504 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 655504 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 655504 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 655504 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 655504 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 655504 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 655504 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 655504 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 655504 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 8556 in 2 places, all below massif's threshold (01.00%) + n0: 18536 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 341508 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 341508 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 341508 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 341508 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 330100 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 323532 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 323532 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 323532 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 323532 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 319612 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 319612 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 319612 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 319612 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 319612 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 319612 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 319612 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 319612 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 319612 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 319612 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 319612 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11408 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 769824 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 741296 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 741296 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 478236 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 478236 in 51 places, all below massif's threshold (01.00%) + n1: 464712 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464712 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 464712 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 455192 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 455192 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 455192 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 448256 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 441592 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 441592 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 441592 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 441592 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 441592 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 441592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 441592 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 441592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 441592 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 441592 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 441592 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 441592 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 9520 in 2 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 355160 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 355160 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 355160 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 355160 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 347256 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 340288 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 340288 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 340288 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 334984 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 329992 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 329992 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 329992 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329992 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329992 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329992 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329992 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329992 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329992 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329992 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 329992 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 6968 in 2 places, all below massif's threshold (01.00%) + n0: 7904 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 352656 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 352656 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 342936 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 337752 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 337752 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 337752 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 336024 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 332400 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 332400 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 332400 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332400 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332400 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332400 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332400 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332400 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332400 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332400 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 332400 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 332400 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5184 in 2 places, all below massif's threshold (01.00%) + n0: 9720 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=50 +#----------- +time=3937060367 +mem_heap_B=22694435 +mem_heap_extra_B=3450333 +mem_stacks_B=0 +heap_tree=detailed +n17: 22694435 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8105440 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8105440 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8105440 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8105440 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8105440 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 7884368 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 7759000 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 7759000 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 7759000 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 7668256 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 7599512 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 7599512 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 7599512 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7599512 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7599512 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7599512 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7599512 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7599512 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7599512 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7599512 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 7599512 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 125368 in 2 places, all below massif's threshold (01.00%) + n0: 221072 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5240943 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1055532 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1055532 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 707548 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 707548 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 707548 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 707548 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 689012 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 680216 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 680216 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 680216 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 676504 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 667780 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 667780 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 667780 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 667780 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 667780 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 667780 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 667780 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 667780 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 667780 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 667780 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 667780 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 8796 in 2 places, all below massif's threshold (01.00%) + n0: 18536 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 347984 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 347984 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 347984 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 347984 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 336576 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 330008 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 330008 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 330008 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 330008 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 326088 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 326088 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 326088 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 326088 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 326088 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 326088 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 326088 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 326088 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 326088 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 326088 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 326088 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11408 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 777544 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 749016 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 749016 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 482456 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 482456 in 51 places, all below massif's threshold (01.00%) + n1: 475048 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475048 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 475048 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 465392 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 465392 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 465392 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 458456 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 451792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 451792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 451792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 451792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 451792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 451792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 451792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 451792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 451792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 451792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 451792 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 451792 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 9656 in 2 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 363064 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 363064 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 363064 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 363064 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 355160 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 348088 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 348088 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 348088 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 342784 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 337792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 337792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 337792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 337792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 337792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 337792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 337792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 337792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 337792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 337792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 337792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7072 in 2 places, all below massif's threshold (01.00%) + n0: 7904 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 359472 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 359472 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 349752 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 344496 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 344496 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 344496 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 342768 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 339144 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 339144 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 339144 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 339144 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 339144 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 339144 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 339144 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 339144 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 339144 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 339144 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 339144 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 339144 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5256 in 2 places, all below massif's threshold (01.00%) + n0: 9720 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=51 +#----------- +time=3953979622 +mem_heap_B=22938195 +mem_heap_extra_B=3468109 +mem_stacks_B=0 +heap_tree=detailed +n17: 22938195 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8276184 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8276184 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8276184 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8276184 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8276184 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8052576 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 7924624 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 7924624 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 7924624 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 7833880 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 7765136 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 7765136 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 7765136 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7765136 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7765136 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7765136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7765136 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7765136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7765136 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7765136 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 7765136 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 127952 in 2 places, all below massif's threshold (01.00%) + n0: 223608 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5248515 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1081036 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1081036 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 728880 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 728880 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 728880 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 728880 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 709320 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 700032 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 700032 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 700032 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 696320 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 687596 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 687596 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 687596 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 687596 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 687596 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 687596 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 687596 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 687596 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 687596 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 687596 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 687596 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 9288 in 2 places, all below massif's threshold (01.00%) + n0: 19560 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 352156 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 352156 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 352156 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 352156 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 340620 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 334052 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 334052 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 334052 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 334052 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 330132 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 330132 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 330132 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 330132 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 330132 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 330132 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 330132 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 330132 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 330132 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 330132 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 330132 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11536 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786432 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 757904 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 757904 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 486644 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 486644 in 51 places, all below massif's threshold (01.00%) + n1: 485656 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485656 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 485656 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 475728 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 475728 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 475728 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 468792 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 462128 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 462128 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 462128 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 462128 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 462128 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 462128 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 462128 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 462128 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 462128 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 462128 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 462128 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 462128 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 9928 in 2 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 371280 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 371280 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 371280 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 371280 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 363168 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 355888 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 355888 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 355888 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 350584 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 345592 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 345592 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 345592 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 345592 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 345592 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 345592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 345592 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 345592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 345592 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 345592 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 345592 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7280 in 2 places, all below massif's threshold (01.00%) + n0: 8112 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 367512 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 367512 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 357504 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 352104 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 352104 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 352104 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 350376 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 346752 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 346752 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 346752 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 346752 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 346752 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 346752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 346752 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 346752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 346752 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 346752 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 346752 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 346752 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5400 in 2 places, all below massif's threshold (01.00%) + n0: 10008 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=52 +#----------- +time=3969284092 +mem_heap_B=23187283 +mem_heap_extra_B=3483125 +mem_stacks_B=0 +heap_tree=detailed +n17: 23187283 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8434936 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8434936 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8434936 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8434936 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8434936 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8208768 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8078752 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8078752 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8078752 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 7988008 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 7919264 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 7919264 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 7919264 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7919264 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7919264 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7919264 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7919264 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 7919264 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 7919264 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 7919264 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 7919264 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 130016 in 2 places, all below massif's threshold (01.00%) + n0: 226168 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5286095 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1097812 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1097812 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 743128 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 743128 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 743128 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 743128 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 723076 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 713548 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 713548 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 713548 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 709836 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 701112 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 701112 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 701112 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 701112 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 701112 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 701112 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 701112 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 701112 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 701112 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 701112 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 701112 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 9528 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 354684 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 354684 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 354684 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 354684 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 343148 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 336580 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 336580 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 336580 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 336580 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 332660 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 332660 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 332660 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332660 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332660 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332660 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332660 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 332660 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 332660 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 332660 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 332660 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11536 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 794080 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 765552 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 765552 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 496128 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 496128 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 496128 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 486064 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 486064 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 486064 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 479128 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 472464 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 472464 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 472464 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 472464 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 472464 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 472464 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 472464 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 472464 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 472464 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 472464 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 472464 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 472464 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 10064 in 2 places, all below massif's threshold (01.00%) + n1: 491000 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 491000 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 379288 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 379288 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 379288 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 379288 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 371072 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 363688 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 363688 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 363688 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 358384 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 353392 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 353392 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 353392 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353392 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353392 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353392 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353392 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353392 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353392 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353392 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 353392 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7384 in 2 places, all below massif's threshold (01.00%) + n0: 8216 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 373008 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 373008 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 362856 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 357384 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 357384 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 357384 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 355656 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 352032 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 352032 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 352032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 352032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 352032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 352032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 352032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 352032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 352032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 352032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 352032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 352032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5472 in 2 places, all below massif's threshold (01.00%) + n0: 10152 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=53 +#----------- +time=3984480775 +mem_heap_B=23439371 +mem_heap_extra_B=3499453 +mem_stacks_B=0 +heap_tree=detailed +n17: 23439371 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8616288 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8616288 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8616288 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8616288 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8616288 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8390120 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8258032 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8258032 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8258032 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 8167288 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 8098544 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 8098544 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 8098544 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8098544 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8098544 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8098544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8098544 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8098544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8098544 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8098544 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8098544 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 132088 in 2 places, all below massif's threshold (01.00%) + n0: 226168 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5299223 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1116880 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1116880 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 758372 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 758372 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 758372 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 758372 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 738320 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 728552 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 728552 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 728552 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 724840 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 716116 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 716116 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 716116 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 716116 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 716116 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 716116 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 716116 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 716116 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 716116 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 716116 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 716116 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 9768 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 358508 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 358508 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 358508 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 358508 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 346972 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 340404 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 340404 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 340404 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 340404 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 336484 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 336484 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 336484 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 336484 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 336484 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 336484 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 336484 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 336484 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 336484 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 336484 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 336484 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11536 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 802192 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 773664 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 773664 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 507280 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 507280 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 507280 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 496944 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 496944 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 496944 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 490008 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 483344 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 483344 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 483344 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483344 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483344 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483344 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483344 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483344 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483344 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483344 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 483344 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 483344 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 10336 in 2 places, all below massif's threshold (01.00%) + n1: 495508 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 495508 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 387816 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 387816 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 387816 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 387816 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 379600 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 372008 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 372008 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 372008 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 366704 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 361712 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 361712 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 361712 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 361712 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 361712 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 361712 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 361712 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 361712 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 361712 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 361712 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 361712 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7592 in 2 places, all below massif's threshold (01.00%) + n0: 8216 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 379248 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 379248 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 369096 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 363552 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 363552 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 363552 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 361824 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 358200 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 358200 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 358200 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 358200 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 358200 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 358200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 358200 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 358200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 358200 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 358200 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 358200 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 358200 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5544 in 2 places, all below massif's threshold (01.00%) + n0: 10152 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=54 +#----------- +time=4001199841 +mem_heap_B=23692367 +mem_heap_extra_B=3517129 +mem_stacks_B=0 +heap_tree=detailed +n17: 23692367 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8803656 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8803656 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8803656 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8803656 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8803656 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8572872 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8438760 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8438760 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8438760 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 8348016 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 8279272 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 8279272 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 8279272 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8279272 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8279272 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8279272 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8279272 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8279272 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8279272 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8279272 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8279272 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 134112 in 2 places, all below massif's threshold (01.00%) + n0: 230784 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5306219 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1136388 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1136388 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 770248 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 770248 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 770248 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 770248 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 750196 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 740188 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 740188 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 740188 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 736476 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 727752 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 727752 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 727752 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 727752 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 727752 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 727752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 727752 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 727752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 727752 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 727752 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 727752 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 10008 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 366140 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 366140 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 366140 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 366140 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 354476 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 347908 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 347908 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 347908 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 347908 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 343988 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 343988 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 343988 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 343988 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 343988 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 343988 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 343988 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 343988 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 343988 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 343988 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 343988 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6568 in 2 places, all below massif's threshold (01.00%) + n0: 11664 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 810432 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 781904 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 781904 in 271 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 518568 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518568 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 518568 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 507960 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 507960 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 507960 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 501024 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 494360 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 494360 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 494360 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 494360 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 494360 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 494360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 494360 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 494360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 494360 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 494360 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 494360 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 494360 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 10608 in 2 places, all below massif's threshold (01.00%) + n1: 499928 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 499928 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 396344 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 396344 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 396344 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 396344 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 388024 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 380224 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 380224 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 380224 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 374920 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 369928 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 369928 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 369928 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 369928 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 369928 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 369928 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 369928 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 369928 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 369928 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 369928 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 369928 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7800 in 2 places, all below massif's threshold (01.00%) + n0: 8320 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 385896 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 385896 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 375720 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 370104 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 370104 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 370104 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 368376 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 364752 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 364752 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 364752 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 364752 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 364752 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 364752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 364752 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 364752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 364752 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 364752 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 364752 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 364752 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5616 in 2 places, all below massif's threshold (01.00%) + n0: 10176 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=55 +#----------- +time=4018211687 +mem_heap_B=23950931 +mem_heap_extra_B=3532621 +mem_stacks_B=0 +heap_tree=detailed +n17: 23950931 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 8994688 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8994688 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 8994688 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8994688 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 8994688 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8759288 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8624688 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8624688 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8624688 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 8533944 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 8465200 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 8465200 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 8465200 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8465200 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8465200 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8465200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8465200 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8465200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8465200 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8465200 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8465200 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 134600 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5313535 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1161000 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1161000 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 786304 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 786304 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 786304 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 786304 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 766252 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 756244 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 756244 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 756244 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 752532 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 743808 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 743808 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 743808 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 743808 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 743808 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 743808 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 743808 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 743808 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 743808 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 743808 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 743808 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 10008 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 374696 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 374696 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 374696 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 374696 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 362008 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 355312 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 355312 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 355312 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 355312 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 351392 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 351392 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 351392 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 351392 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 351392 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 351392 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 351392 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 351392 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 351392 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 351392 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 351392 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6696 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 818440 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 789912 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 514664 in 270 places, all below massif's threshold (01.00%) + n1: 275248 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n1: 275248 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n0: 275248 in 2 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 277589 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 277589 in 5 places, all below massif's threshold (01.00%) + n0: 16381 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 527680 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 527680 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 527680 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 516936 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 516936 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 516936 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 510000 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 503336 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 503336 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 503336 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 503336 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 503336 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 503336 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 503336 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 503336 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 503336 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 503336 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 503336 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 503336 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 10744 in 2 places, all below massif's threshold (01.00%) + n1: 503324 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 503324 in 51 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n1: 403416 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 403416 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 403416 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 403416 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 394992 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 387088 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 387088 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 387088 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 381784 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 376792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 376792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 376792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 376792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 376792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 376792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 376792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 7904 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 393912 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 393912 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 383472 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 377832 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 377832 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 377832 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 376104 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 372480 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 372480 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 372480 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 372480 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 372480 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 372480 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 372480 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 372480 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 372480 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 372480 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 372480 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 372480 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 5640 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=56 +#----------- +time=4035400888 +mem_heap_B=24208827 +mem_heap_extra_B=3550381 +mem_stacks_B=0 +heap_tree=detailed +n17: 24208827 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 9178864 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9178864 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 9178864 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9178864 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 9178864 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 8943464 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8802176 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8802176 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8802176 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 8711432 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 8642688 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 8642688 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 8642688 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8642688 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8642688 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8642688 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8642688 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8642688 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8642688 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8642688 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8642688 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 141288 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5323839 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1183772 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1183772 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 806680 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 806680 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 806680 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 806680 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 786628 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 775636 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 775636 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 775636 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 771924 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 763200 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 763200 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 763200 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 763200 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 763200 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 763200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 763200 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 763200 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 763200 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 763200 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 763200 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 10992 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 377092 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 377092 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 377092 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 377092 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 364404 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 357708 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 357708 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 357708 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 357708 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 353788 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 353788 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 353788 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353788 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353788 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353788 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353788 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 353788 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 353788 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 353788 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 353788 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6696 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 827696 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 799168 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 517984 in 270 places, all below massif's threshold (01.00%) + n1: 281184 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n1: 281184 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n0: 281184 in 2 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 538968 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 538968 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 538968 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 527952 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 527952 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 527952 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 521016 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 514352 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 514352 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 514352 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 514352 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 514352 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 514352 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 514352 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 514352 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 514352 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 514352 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 514352 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 514352 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 11016 in 2 places, all below massif's threshold (01.00%) + n1: 507616 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 507616 in 51 places, all below massif's threshold (01.00%) + n1: 412048 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 412048 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 412048 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 412048 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 403624 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 395512 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 395512 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 395512 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 390208 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 385216 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 385216 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 385216 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 385216 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 385216 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 385216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 385216 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 385216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 385216 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 385216 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 385216 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8112 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 401088 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 401088 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 390648 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 384600 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 384600 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 384600 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 382872 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 379248 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 379248 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 379248 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 379248 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 379248 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 379248 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 379248 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 379248 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 379248 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 379248 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 379248 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 379248 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6048 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=57 +#----------- +time=4052794998 +mem_heap_B=24468603 +mem_heap_extra_B=3568237 +mem_stacks_B=0 +heap_tree=detailed +n17: 24468603 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 9363592 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9363592 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 9363592 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9363592 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 9363592 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 9128192 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 8983848 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 8983848 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 8983848 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 8893104 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 8824360 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 8824360 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 8824360 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8824360 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8824360 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8824360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8824360 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 8824360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 8824360 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 8824360 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8824360 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 144344 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5333727 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1208272 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1208272 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 828296 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 828296 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 828296 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 828296 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 808244 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 796760 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 796760 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 796760 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 793048 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 784324 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 784324 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 784324 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 784324 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 784324 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 784324 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 784324 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 784324 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 784324 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 784324 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 784324 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 11484 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 379976 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 379976 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 379976 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 379976 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 367288 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 360592 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 360592 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 360592 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 360592 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 356672 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 356672 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 356672 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 356672 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 356672 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 356672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 356672 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 356672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 356672 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 356672 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 356672 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6696 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 837000 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 808472 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 521432 in 270 places, all below massif's threshold (01.00%) + n1: 287040 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n1: 287040 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n0: 287040 in 2 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 550120 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 550120 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 550120 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 538968 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 538968 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 538968 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 532032 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 525368 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 525368 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 525368 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 525368 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 525368 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 525368 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 525368 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 525368 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 525368 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 525368 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 525368 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 525368 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 11152 in 2 places, all below massif's threshold (01.00%) + n1: 511548 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 511548 in 51 places, all below massif's threshold (01.00%) + n1: 420472 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 420472 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 420472 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 420472 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 412048 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 403832 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 403832 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 403832 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 398528 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 393536 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 393536 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 393536 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 393536 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 393536 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 393536 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 393536 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 393536 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 393536 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 393536 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 393536 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8216 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 408936 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 408936 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 398496 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 392280 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 392280 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 392280 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 390552 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 386928 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 386928 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 386928 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386928 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386928 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386928 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386928 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 386928 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 386928 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 386928 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 386928 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 386928 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6216 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=58 +#----------- +time=4069798911 +mem_heap_B=24734511 +mem_heap_extra_B=3584657 +mem_stacks_B=0 +heap_tree=detailed +n17: 24734511 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 9558488 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9558488 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 9558488 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9558488 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 9558488 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 9323088 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 9178256 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 9178256 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 9178256 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 9087512 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9018768 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9018768 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9018768 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9018768 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9018768 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9018768 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9018768 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9018768 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9018768 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9018768 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9018768 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 144832 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5341807 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1233512 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1233512 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 842328 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 842328 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 842328 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 842328 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 822276 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 810792 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 810792 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 810792 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 807080 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 798356 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 798356 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 798356 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 798356 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 798356 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 798356 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 798356 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 798356 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 798356 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 798356 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 798356 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 11484 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 391184 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 391184 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 391184 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 391184 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 378496 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 371800 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 371800 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 371800 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 371800 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 367880 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 367880 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 367880 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 367880 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 367880 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 367880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 367880 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 367880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 367880 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 367880 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 367880 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6696 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 845232 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 816704 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 524104 in 270 places, all below massif's threshold (01.00%) + n1: 292600 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 292600 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n1: 285296 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n0: 285296 in 3 places, all below massif's threshold (01.00%) + n0: 7304 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 559776 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 559776 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 548352 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 548352 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 548352 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 541416 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 534752 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 534752 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 534752 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 534752 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 534752 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 534752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 534752 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 534752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 534752 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 534752 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 534752 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 534752 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 11424 in 2 places, all below massif's threshold (01.00%) + n1: 515224 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 515224 in 51 places, all below massif's threshold (01.00%) + n1: 427960 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 427960 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 427960 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 427960 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 419536 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 411112 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 411112 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 411112 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 405808 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 400816 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 400816 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 400816 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 400816 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 400816 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 400816 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 400816 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 400816 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 400816 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 400816 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 400816 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8424 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 417576 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 417576 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 407136 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 400896 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 400896 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 400896 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 399168 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 395544 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 395544 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 395544 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 395544 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 395544 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 395544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 395544 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 395544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 395544 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 395544 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 395544 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 395544 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6240 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=59 +#----------- +time=4086815318 +mem_heap_B=24998943 +mem_heap_extra_B=3605169 +mem_stacks_B=0 +heap_tree=detailed +n17: 24998943 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 9752576 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9752576 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 9752576 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9752576 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 9752576 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 9517176 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 9367736 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 9367736 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 9367736 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 9276992 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9208248 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9208248 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9208248 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9208248 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9208248 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9208248 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9208248 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9208248 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9208248 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9208248 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9208248 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 149440 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5353447 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1247676 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1247676 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 852336 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 852336 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 852336 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 852336 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 832284 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 820560 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 820560 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 820560 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 816848 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 808124 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 808124 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 808124 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 808124 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 808124 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 808124 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 808124 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 808124 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 808124 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 808124 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 808124 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 11724 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 395340 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 395340 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 395340 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 395340 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 382652 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 375828 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 375828 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 375828 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 375828 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 371908 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 371908 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 371908 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 371908 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 371908 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 371908 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 371908 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 371908 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 371908 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 371908 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 371908 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6824 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 854248 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 825720 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 528192 in 270 places, all below massif's threshold (01.00%) + n1: 297528 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 297528 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n1: 290224 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n0: 290224 in 3 places, all below massif's threshold (01.00%) + n0: 7304 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 573104 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 573104 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 573104 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 561408 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 561408 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 561408 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 554472 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 547808 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 547808 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 547808 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 547808 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 547808 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 547808 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 547808 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 547808 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 547808 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 547808 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 547808 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 547808 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 11696 in 2 places, all below massif's threshold (01.00%) + n1: 521596 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 521596 in 51 places, all below massif's threshold (01.00%) + n1: 438048 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 438048 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 438048 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 438048 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 429624 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 420992 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 420992 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 420992 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 415688 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 410696 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 410696 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 410696 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 410696 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 410696 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 410696 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 410696 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 410696 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 410696 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 410696 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 410696 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8632 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 423312 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 423312 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 412872 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 406512 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 406512 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 406512 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 404784 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 401160 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401160 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 401160 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 401160 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 401160 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 401160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 401160 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 401160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 401160 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 401160 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 401160 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 401160 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6360 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=60 +#----------- +time=4104273302 +mem_heap_B=25266995 +mem_heap_extra_B=3623293 +mem_stacks_B=0 +heap_tree=detailed +n17: 25266995 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 9950752 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9950752 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 9950752 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9950752 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 9950752 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 9715352 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 9559776 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 9559776 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 9559776 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 9469032 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9400288 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9400288 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9400288 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9400288 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9400288 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9400288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9400288 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9400288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9400288 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9400288 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9400288 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 155576 in 2 places, all below massif's threshold (01.00%) + n0: 235400 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5363198 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1266408 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1266408 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 865500 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 865500 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 865500 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 865500 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 845448 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 833724 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 833724 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 833724 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 830012 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 821288 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 821288 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 821288 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 821288 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 821288 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 821288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 821288 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 821288 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 821288 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 821288 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 821288 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 11724 in 2 places, all below massif's threshold (01.00%) + n0: 20052 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 400908 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 400908 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 400908 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 400908 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 388220 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 381268 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 381268 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 381268 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 381268 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 377348 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 377348 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 377348 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 377348 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 377348 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 377348 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 377348 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 377348 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 377348 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 377348 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 377348 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6952 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 862648 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 834120 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 531664 in 270 places, all below massif's threshold (01.00%) + n1: 302456 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 302456 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 295152 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 290288 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 290288 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n1: 290288 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n0: 290288 in 5 places, all below massif's threshold (01.00%) + n0: 4864 in 2 places, all below massif's threshold (01.00%) + n0: 7304 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723663 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111838 in 10 places, all below massif's threshold (01.00%) + n1: 585208 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585208 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 585208 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 573376 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 573376 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 573376 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 566440 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 559776 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 559776 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 559776 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 559776 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 559776 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 559776 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 559776 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 559776 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 559776 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 559776 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 559776 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 559776 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 11832 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 526664 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 526664 in 51 places, all below massif's threshold (01.00%) + n1: 447408 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 447408 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 447408 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 447408 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 438984 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 430248 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 430248 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 430248 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 424944 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 419952 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 419952 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 419952 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419952 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419952 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419952 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419952 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419952 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419952 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419952 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 419952 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8736 in 2 places, all below massif's threshold (01.00%) + n0: 8424 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 429672 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 429672 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 419232 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 412848 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 412848 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 412848 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 411120 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 407496 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 407496 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 407496 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407496 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407496 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407496 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407496 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407496 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407496 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407496 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 407496 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 407496 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6384 in 2 places, all below massif's threshold (01.00%) + n0: 10440 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=61 +#----------- +time=4123878664 +mem_heap_B=25536899 +mem_heap_extra_B=3642989 +mem_stacks_B=0 +heap_tree=detailed +n17: 25536899 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 10145384 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10145384 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 10145384 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10145384 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 10145384 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 9906384 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 9749280 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 9749280 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 9749280 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 9658536 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9589792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9589792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9589792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9589792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9589792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9589792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9589792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9589792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9589792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9589792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9589792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 157104 in 2 places, all below massif's threshold (01.00%) + n0: 239000 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5375611 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1284576 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1284576 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 879648 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 879648 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 879648 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 879648 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 859104 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 847140 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 847140 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 847140 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 843428 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 834704 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 834704 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 834704 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 834704 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 834704 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 834704 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 834704 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 834704 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 834704 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 834704 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 834704 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 11964 in 2 places, all below massif's threshold (01.00%) + n0: 20544 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 404928 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 404928 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 404928 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 404928 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 392240 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 385288 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 385288 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 385288 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 385288 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 381368 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 381368 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 381368 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 381368 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 381368 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 381368 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 381368 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 381368 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 381368 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 381368 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 381368 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6952 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 872192 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 843664 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 535544 in 270 places, all below massif's threshold (01.00%) + n1: 308120 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 308120 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 300688 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 295768 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 295768 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 295768 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 294048 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n0: 294048 in 3 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 4920 in 2 places, all below massif's threshold (01.00%) + n0: 7432 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n3: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 293970 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 293970 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 293970 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 111737 in 10 places, all below massif's threshold (01.00%) + n1: 598264 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 598264 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 598264 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 586160 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 586160 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 586160 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 579224 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 572560 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 572560 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 572560 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 572560 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 572560 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 572560 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 572560 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 572560 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 572560 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 572560 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 572560 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 572560 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 12104 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 532400 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 532400 in 51 places, all below massif's threshold (01.00%) + n1: 457288 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 457288 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 457288 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 457288 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 448760 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 439816 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 439816 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 439816 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 434512 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 429520 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 429520 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 429520 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429520 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429520 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429520 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429520 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429520 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429520 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429520 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 429520 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 8944 in 2 places, all below massif's threshold (01.00%) + n0: 8528 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 436248 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 436248 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 425592 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 419136 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 419136 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 419136 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 417408 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 413784 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 413784 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 413784 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 413784 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 413784 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 413784 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 413784 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 413784 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 413784 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 413784 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 413784 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 413784 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6456 in 2 places, all below massif's threshold (01.00%) + n0: 10656 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=62 +#----------- +time=4143586458 +mem_heap_B=25809791 +mem_heap_extra_B=3663497 +mem_stacks_B=0 +heap_tree=detailed +n17: 25809791 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 10337208 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10337208 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 10337208 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10337208 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 10337208 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 10098208 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 9938520 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 9938520 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 9938520 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 9847776 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9779032 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9779032 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9779032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9779032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9779032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9779032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9779032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9779032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9779032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9779032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9779032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 159688 in 2 places, all below massif's threshold (01.00%) + n0: 239000 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5385603 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1309452 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1309452 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 901784 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 901784 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 901784 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 901784 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 881240 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 869036 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 869036 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 869036 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 865324 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 856600 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 856600 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 856600 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 856600 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 856600 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 856600 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 856600 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 856600 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 856600 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 856600 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 856600 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12204 in 2 places, all below massif's threshold (01.00%) + n0: 20544 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 407668 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 407668 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 407668 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 407668 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 394980 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 388028 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 388028 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 388028 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 388028 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 384108 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 384108 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 384108 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 384108 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 384108 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 384108 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 384108 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 384108 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 384108 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 384108 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 384108 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6952 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 882376 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 853848 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 539184 in 270 places, all below massif's threshold (01.00%) + n1: 314664 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 314664 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 307232 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 302256 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 302256 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 302256 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 300536 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 297896 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 297896 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 297896 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 297896 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 297896 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 297896 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 297896 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 297896 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 297896 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 297896 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 297896 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 4976 in 2 places, all below massif's threshold (01.00%) + n0: 7432 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 611048 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 611048 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 611048 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 598672 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 598672 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 598672 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 591736 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 585072 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 585072 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 585072 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 585072 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 585072 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 585072 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 585072 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 585072 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 585072 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 585072 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 585072 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 585072 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 12376 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 537544 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 537544 in 51 places, all below massif's threshold (01.00%) + n1: 467168 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 467168 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 467168 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 467168 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 458640 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 449488 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 449488 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 449488 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 444184 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 439192 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 439192 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 439192 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 439192 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 439192 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 439192 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 439192 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 439192 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 439192 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 439192 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 439192 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 9152 in 2 places, all below massif's threshold (01.00%) + n0: 8528 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 444456 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 444456 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 433800 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 427248 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 427248 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 427248 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 425520 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 421896 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 421896 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 421896 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 421896 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 421896 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 421896 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 421896 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 421896 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 421896 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 421896 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 421896 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 421896 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 6552 in 2 places, all below massif's threshold (01.00%) + n0: 10656 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 295568 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 295568 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 295568 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 295568 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 295568 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 295568 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n1: 295568 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 295568 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 295568 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=63 +#----------- +time=4162504496 +mem_heap_B=26087919 +mem_heap_extra_B=3680897 +mem_stacks_B=0 +heap_tree=detailed +n16: 26087919 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 10533512 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10533512 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 10533512 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10533512 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 10533512 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 10294512 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 10128720 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 10128720 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 10128720 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 10037976 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 9969232 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 9969232 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 9969232 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9969232 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9969232 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9969232 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9969232 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 9969232 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 9969232 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 9969232 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 9969232 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 165792 in 2 places, all below massif's threshold (01.00%) + n0: 239000 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5695043 in 2491 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1333516 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1333516 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 918584 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 918584 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 918584 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 918584 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 898040 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 885836 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 885836 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 885836 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 882124 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 873400 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 873400 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 873400 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 873400 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 873400 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 873400 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 873400 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 873400 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 873400 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 873400 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 873400 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12204 in 2 places, all below massif's threshold (01.00%) + n0: 20544 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 414932 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 414932 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 414932 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 414932 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 402244 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 394140 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 394140 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 394140 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 394140 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 390220 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 390220 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 390220 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 390220 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 390220 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 390220 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 390220 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 390220 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 390220 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 390220 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 390220 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8104 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 891888 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 863360 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 542704 in 270 places, all below massif's threshold (01.00%) + n1: 320656 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 320656 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 313224 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 307952 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 307952 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 307952 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 306232 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 303592 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 303592 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 303592 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 303592 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 303592 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 303592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 303592 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 303592 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 303592 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 303592 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 303592 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5272 in 2 places, all below massif's threshold (01.00%) + n0: 7432 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 623016 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 623016 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 623016 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 610368 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 610368 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 610368 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 603432 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 596768 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 596768 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 596768 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 596768 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 596768 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 596768 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 596768 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 596768 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 596768 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 596768 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 596768 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 596768 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 12648 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 542472 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 542472 in 51 places, all below massif's threshold (01.00%) + n1: 476320 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 476320 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 476320 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 476320 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 467792 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 458432 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 458432 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 458432 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 453128 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 448136 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 448136 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 448136 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 448136 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 448136 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 448136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 448136 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 448136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 448136 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 448136 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 448136 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 9360 in 2 places, all below massif's threshold (01.00%) + n0: 8528 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 452784 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 452784 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 442128 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 435024 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 435024 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 435024 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 433296 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 429672 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 429672 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 429672 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429672 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429672 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429672 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 429672 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 429672 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 429672 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 429672 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 429672 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7104 in 2 places, all below massif's threshold (01.00%) + n0: 10656 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=64 +#----------- +time=4182724357 +mem_heap_B=26366343 +mem_heap_extra_B=3701897 +mem_stacks_B=0 +heap_tree=detailed +n16: 26366343 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 10730456 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10730456 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 10730456 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10730456 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 10730456 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 10491456 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 10314400 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 10314400 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 10314400 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 10223656 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 10154912 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 10154912 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 10154912 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10154912 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10154912 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10154912 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10154912 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10154912 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10154912 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10154912 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 10154912 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 177056 in 2 places, all below massif's threshold (01.00%) + n0: 239000 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5701355 in 2491 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1363676 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1363676 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 930860 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 930860 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 930860 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 930860 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 910316 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 898112 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 898112 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 898112 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 894400 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 885676 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 885676 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 885676 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 885676 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 885676 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 885676 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 885676 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 885676 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 885676 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 885676 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 885676 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12204 in 2 places, all below massif's threshold (01.00%) + n0: 20544 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 432816 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 432816 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 432816 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 432816 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 420128 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 411768 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 411768 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 411768 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 411768 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 407848 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 407848 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 407848 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407848 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407848 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407848 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407848 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 407848 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 407848 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 407848 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 407848 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8360 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 901928 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 873400 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 546064 in 270 places, all below massif's threshold (01.00%) + n1: 327336 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 327336 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 319904 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 314536 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 314536 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 314536 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 312816 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 310176 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 310176 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 310176 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 310176 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 310176 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 310176 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 310176 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 310176 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 310176 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 310176 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 310176 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5368 in 2 places, all below massif's threshold (01.00%) + n0: 7432 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 303013 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n0: 303013 in 5 places, all below massif's threshold (01.00%) + n0: 14842 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 634440 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 634440 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 634440 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 621520 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 621520 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 621520 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 614584 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 607920 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 607920 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 607920 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 607920 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 607920 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 607920 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 607920 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 607920 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 607920 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 607920 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 607920 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 607920 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 12920 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 546768 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 546768 in 51 places, all below massif's threshold (01.00%) + n1: 485056 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 485056 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 485056 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 485056 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 476528 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 466960 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 466960 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 466960 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 461656 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 456664 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 456664 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 456664 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 456664 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 456664 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 456664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 456664 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 456664 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 456664 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 456664 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 456664 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 9568 in 2 places, all below massif's threshold (01.00%) + n0: 8528 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 463296 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 463296 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 452640 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 445416 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 445416 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 445416 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 443688 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 440064 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 440064 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 440064 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440064 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440064 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440064 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440064 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440064 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440064 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440064 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 440064 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 440064 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7224 in 2 places, all below massif's threshold (01.00%) + n0: 10656 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=65 +#----------- +time=4204207700 +mem_heap_B=26647603 +mem_heap_extra_B=3721533 +mem_stacks_B=0 +heap_tree=detailed +n17: 26647603 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 10929752 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10929752 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 10929752 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10929752 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 10929752 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 10686632 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 10509088 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 10509088 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 10509088 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 10418344 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 10349600 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 10349600 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 10349600 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10349600 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10349600 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10349600 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10349600 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10349600 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10349600 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10349600 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 10349600 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 177544 in 2 places, all below massif's threshold (01.00%) + n0: 243120 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5407087 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1392676 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1392676 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 947956 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 947956 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 947956 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 947956 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 926388 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 914184 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 914184 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 914184 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 910472 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 901748 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 901748 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 901748 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 901748 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 901748 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 901748 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 901748 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 901748 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 901748 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 901748 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 901748 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12204 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 444720 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 444720 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 444720 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 444720 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 432032 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 423672 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 423672 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 423672 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 423672 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 419752 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 419752 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 419752 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419752 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419752 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419752 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 419752 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 419752 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 419752 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 419752 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8360 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 911848 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 883320 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 549520 in 270 places, all below massif's threshold (01.00%) + n1: 333800 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 333800 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 326112 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 320704 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 320704 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 320704 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 318984 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 316344 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 316344 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 316344 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 316344 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 316344 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 316344 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 316344 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 316344 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 316344 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 316344 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 316344 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5408 in 2 places, all below massif's threshold (01.00%) + n0: 7688 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 317855 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 645592 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645592 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 645592 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 632536 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 632536 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 632536 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 625600 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 618936 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 618936 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 618936 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 618936 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 618936 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 618936 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 618936 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 618936 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 618936 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 618936 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 618936 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 618936 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 13056 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 550952 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 550952 in 51 places, all below massif's threshold (01.00%) + n1: 493480 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 493480 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 493480 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 493480 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 484848 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 475176 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 475176 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 475176 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 469872 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 464880 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 464880 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 464880 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 464880 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 464880 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 464880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 464880 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 464880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 464880 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 464880 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 464880 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 9672 in 2 places, all below massif's threshold (01.00%) + n0: 8632 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 473040 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 473040 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 461952 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 454704 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 454704 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 454704 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 452976 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 449352 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 449352 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 449352 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 449352 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 449352 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 449352 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 449352 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 449352 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 449352 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 449352 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 449352 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 449352 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7248 in 2 places, all below massif's threshold (01.00%) + n0: 11088 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 303808 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n0: 303808 in 3 places, all below massif's threshold (01.00%) +#----------- +snapshot=66 +#----------- +time=4225621247 +mem_heap_B=26937027 +mem_heap_extra_B=3740725 +mem_stacks_B=0 +heap_tree=detailed +n17: 26937027 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 11131976 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11131976 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 11131976 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11131976 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 11131976 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 10888856 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 10704648 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 10704648 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 10704648 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 10613904 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 10545160 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 10545160 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 10545160 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10545160 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10545160 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10545160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10545160 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10545160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10545160 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10545160 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 10545160 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 184208 in 2 places, all below massif's threshold (01.00%) + n0: 243120 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5411911 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1422432 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1422432 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 968160 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 968160 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 968160 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 968160 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 946592 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 934148 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 934148 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 934148 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 930436 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 921712 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 921712 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 921712 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 921712 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 921712 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 921712 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 921712 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 921712 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 921712 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 921712 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 921712 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12444 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 454272 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 454272 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 454272 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 454272 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 441584 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 432200 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 432200 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 432200 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 432200 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 428280 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 428280 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 428280 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 428280 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 428280 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 428280 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 428280 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 428280 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 428280 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 428280 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 428280 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9384 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 922024 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 893496 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 553064 in 270 places, all below massif's threshold (01.00%) + n1: 340432 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 340432 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 332744 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 327152 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 327152 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 327152 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 325432 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 322792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 322792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 322792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 322792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 322792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 322792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 322792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 322792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 322792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 322792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 322792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5592 in 2 places, all below massif's threshold (01.00%) + n0: 7688 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 317855 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 658240 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658240 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 658240 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 644912 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 644912 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 644912 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 637976 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 631312 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 631312 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 631312 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 631312 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 631312 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 631312 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 631312 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 631312 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 631312 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 631312 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 631312 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 631312 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 13328 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 555828 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 555828 in 51 places, all below massif's threshold (01.00%) + n1: 503256 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 503256 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 503256 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 503256 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 494624 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 484744 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 484744 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 484744 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 479440 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 474448 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 474448 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 474448 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 474448 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 474448 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 474448 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 474448 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 474448 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 474448 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 474448 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 474448 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 9880 in 2 places, all below massif's threshold (01.00%) + n0: 8632 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 482232 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 482232 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 471144 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 463608 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 463608 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 463608 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 461880 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 458256 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 458256 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 458256 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 458256 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 458256 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 458256 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 458256 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 458256 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 458256 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 458256 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 458256 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 458256 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7536 in 2 places, all below massif's threshold (01.00%) + n0: 11088 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 309760 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n0: 309760 in 3 places, all below massif's threshold (01.00%) +#----------- +snapshot=67 +#----------- +time=4247361722 +mem_heap_B=27223319 +mem_heap_extra_B=3763617 +mem_stacks_B=0 +heap_tree=detailed +n17: 27223319 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 11333056 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11333056 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 11333056 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11333056 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 11333056 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 11089936 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 10903656 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 10903656 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 10903656 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 10812912 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 10744168 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 10744168 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 10744168 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10744168 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10744168 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10744168 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10744168 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10744168 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10744168 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10744168 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 10744168 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 186280 in 2 places, all below massif's threshold (01.00%) + n0: 243120 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5416639 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1446356 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1446356 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 984908 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 984908 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 984908 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 984908 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 963340 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 950896 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 950896 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 950896 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 947184 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 938460 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 938460 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 938460 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 938460 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 938460 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 938460 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 938460 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 938460 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 938460 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 938460 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 938460 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12444 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 461448 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 461448 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 461448 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 461448 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 448760 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 439136 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 439136 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 439136 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 439136 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 435216 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 435216 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 435216 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 435216 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 435216 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 435216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 435216 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 435216 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 435216 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 435216 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 435216 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9624 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 932584 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 904056 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 557264 in 270 places, all below massif's threshold (01.00%) + n1: 346792 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 346792 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 339104 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 333416 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 333416 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 333416 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 331696 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 329056 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 329056 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 329056 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329056 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329056 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329056 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329056 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 329056 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 329056 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 329056 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 329056 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5688 in 2 places, all below massif's threshold (01.00%) + n0: 7688 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 317855 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 672520 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 672520 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 672520 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 658920 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 658920 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 658920 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 651984 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 645320 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 645320 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 645320 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 645320 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 645320 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 645320 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 645320 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 645320 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 645320 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 645320 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 645320 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 645320 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 13600 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 561748 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 561748 in 51 places, all below massif's threshold (01.00%) + n1: 514176 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 514176 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 514176 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 514176 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 505544 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 495456 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 495456 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 495456 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 490152 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 485160 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 485160 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 485160 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 485160 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 485160 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 485160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 485160 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 485160 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 485160 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 485160 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 485160 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 10088 in 2 places, all below massif's threshold (01.00%) + n0: 8632 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 490392 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 490392 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 479304 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 471672 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 471672 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 471672 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 469944 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 466320 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 466320 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 466320 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 466320 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 466320 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 466320 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 466320 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 466320 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 466320 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 466320 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 466320 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 466320 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7632 in 2 places, all below massif's threshold (01.00%) + n0: 11088 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 316480 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n1: 310080 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 310080 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n1: 310080 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n0: 310080 in 5 places, all below massif's threshold (01.00%) + n0: 6400 in 2 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=68 +#----------- +time=4269399638 +mem_heap_B=27512631 +mem_heap_extra_B=3784761 +mem_stacks_B=0 +heap_tree=detailed +n17: 27512631 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 11533768 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11533768 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 11533768 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11533768 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 11533768 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 11290648 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 11102848 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 11102848 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 11102848 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 11012104 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 10943360 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 10943360 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 10943360 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10943360 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10943360 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10943360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10943360 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 10943360 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 10943360 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 10943360 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 10943360 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 187800 in 2 places, all below massif's threshold (01.00%) + n0: 243120 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5422607 in 2490 places, all below massif's threshold (01.00%) + n3: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 313920 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 313920 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 313920 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1472100 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1472100 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1005324 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 1005324 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1005324 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 1005324 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 983756 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 970820 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 970820 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 970820 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 967108 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 958384 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 958384 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 958384 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 958384 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 958384 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 958384 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 958384 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 958384 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 958384 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 958384 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 958384 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 12936 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 466776 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 466776 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 466776 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 466776 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 454088 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 444464 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 444464 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 444464 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 444464 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 440544 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 440544 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 440544 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440544 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440544 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440544 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 440544 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 440544 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 440544 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 440544 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9624 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 943528 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 915000 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 561344 in 270 places, all below massif's threshold (01.00%) + n1: 353656 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 353656 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 345968 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 340216 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 340216 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 340216 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 338496 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 335856 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 335856 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 335856 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 335856 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 335856 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 335856 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 335856 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 335856 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 335856 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 335856 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 335856 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5752 in 2 places, all below massif's threshold (01.00%) + n0: 7688 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 317855 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 686392 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 686392 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 686392 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 672520 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 672520 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 672520 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 665584 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 658920 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 658920 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 658920 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 658920 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 658920 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 658920 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 658920 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 658920 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 658920 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 658920 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 658920 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 658920 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 13872 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 567612 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 567612 in 51 places, all below massif's threshold (01.00%) + n1: 524784 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 524784 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 524784 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 524784 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 516152 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 505856 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 505856 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 505856 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 500552 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 495560 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 495560 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 495560 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 495560 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 495560 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 495560 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 495560 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 495560 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 495560 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 495560 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 495560 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 10296 in 2 places, all below massif's threshold (01.00%) + n0: 8632 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 499464 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 499464 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 488376 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 480624 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 480624 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 480624 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 478896 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 475272 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 475272 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 475272 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 475272 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 475272 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 475272 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 475272 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 475272 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 475272 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 475272 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 475272 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 475272 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7752 in 2 places, all below massif's threshold (01.00%) + n0: 11088 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 323008 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n1: 316480 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 316480 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 316480 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n1: 313216 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n0: 313216 in 3 places, all below massif's threshold (01.00%) + n0: 3264 in 4 places, all below massif's threshold (01.00%) + n0: 6528 in 2 places, all below massif's threshold (01.00%) + n1: 314928 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + n1: 314928 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + n1: 314928 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + n1: 314928 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + n1: 314928 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 314928 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 314928 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n0: 314928 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=69 +#----------- +time=4292878998 +mem_heap_B=27801887 +mem_heap_extra_B=3808585 +mem_stacks_B=0 +heap_tree=detailed +n16: 27801887 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 11735128 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11735128 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 11735128 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11735128 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 11735128 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 11491048 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 11296624 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 11296624 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 11296624 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 11205880 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 11137136 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 11137136 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 11137136 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11137136 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11137136 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11137136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11137136 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11137136 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11137136 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11137136 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 11137136 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 194424 in 2 places, all below massif's threshold (01.00%) + n0: 244080 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5743571 in 2491 places, all below massif's threshold (01.00%) + n2: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n0: 499450 in 43 places, all below massif's threshold (01.00%) + n1: 1494192 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1494192 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1020244 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 1020244 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1020244 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 1020244 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 998676 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 985248 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 985248 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 985248 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 981536 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 972812 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 972812 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 972812 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 972812 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 972812 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 972812 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 972812 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 972812 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 972812 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 972812 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 972812 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 13428 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 473948 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 473948 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 473948 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 473948 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 461260 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 451636 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 451636 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 451636 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 451636 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 447716 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 447716 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 447716 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 447716 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 447716 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 447716 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 447716 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 447716 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 447716 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 447716 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 447716 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9624 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 954392 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 925864 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 565984 in 270 places, all below massif's threshold (01.00%) + n1: 359880 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 359880 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 352112 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 346152 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 346152 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 346152 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 344432 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 341792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 341792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 341792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 341792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 341792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 341792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 341792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 341792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 341792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 341792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 341792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5960 in 2 places, all below massif's threshold (01.00%) + n0: 7768 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n2: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405707 in 11 places, all below massif's threshold (01.00%) + n2: 317855 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 317855 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n0: 317855 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 701760 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 701760 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 701760 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 687480 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 687480 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 687480 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 680544 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 673880 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 673880 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 673880 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 673880 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 673880 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 673880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 673880 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 673880 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 673880 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 673880 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 673880 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 673880 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 14280 in 2 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 574252 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 574252 in 51 places, all below massif's threshold (01.00%) + n1: 536432 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 536432 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 536432 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 536432 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 527592 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 516984 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 516984 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 516984 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 511680 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 506688 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 506688 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 506688 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 506688 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 506688 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 506688 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 506688 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 506688 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 506688 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 506688 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 506688 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 10608 in 2 places, all below massif's threshold (01.00%) + n0: 8840 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 507480 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 507480 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 496344 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 488376 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 488376 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 488376 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 486648 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 483024 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 483024 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 483024 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483024 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483024 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483024 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483024 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 483024 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 483024 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 483024 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 483024 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 483024 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7968 in 2 places, all below massif's threshold (01.00%) + n0: 11136 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 330240 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n1: 323520 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 323520 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 323520 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 320256 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 317120 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 317120 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 317120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317120 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317120 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317120 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317120 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 317120 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 317120 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 317120 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 317120 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 317120 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 317120 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 317120 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 3136 in 2 places, all below massif's threshold (01.00%) + n0: 3264 in 4 places, all below massif's threshold (01.00%) + n0: 6720 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=70 +#----------- +time=4320676562 +mem_heap_B=28196463 +mem_heap_extra_B=3821993 +mem_stacks_B=0 +heap_tree=peak +n16: 28196463 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 11918720 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11918720 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 11918720 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11918720 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) + n2: 11918720 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) + n2: 11674640 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 11480216 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 11480216 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 11480216 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 11389472 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 11320728 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 11320728 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 11320728 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11320728 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11320728 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11320728 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11320728 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 11320728 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 11320728 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 11320728 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 11320728 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 68744 in 2 places, all below massif's threshold (01.00%) + n0: 90744 in 4 places, all below massif's threshold (01.00%) + n0: 194424 in 2 places, all below massif's threshold (01.00%) + n0: 244080 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5870015 in 2491 places, all below massif's threshold (01.00%) + n1: 1516112 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) + n2: 1516112 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1030576 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 1030576 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 1030576 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 1030576 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 1009008 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 995580 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 995580 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 995580 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 991868 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 983144 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 983144 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 983144 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 983144 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 983144 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 983144 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 983144 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 983144 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 983144 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 983144 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 983144 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 8724 in 2 places, all below massif's threshold (01.00%) + n0: 3712 in 4 places, all below massif's threshold (01.00%) + n0: 13428 in 2 places, all below massif's threshold (01.00%) + n0: 21568 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n1: 485536 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 485536 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 485536 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 485536 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 472848 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 463224 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 463224 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 463224 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 463224 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 459304 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 459304 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 459304 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 459304 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 459304 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 459304 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 459304 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 459304 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 459304 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 459304 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 459304 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n0: 3920 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9624 in 2 places, all below massif's threshold (01.00%) + n0: 12688 in 1 place, below massif's threshold (01.00%) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n2: 1512570 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) + n1: 1013120 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 1013120 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) + n2: 1013120 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 680000 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 680000 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + n1: 680000 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x504DABB: (below main) (libc-start.c:220) + n1: 333120 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) + n1: 333120 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) + n1: 333120 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) + n1: 333120 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 333120 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 333120 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) + n0: 333120 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + n0: 499450 in 43 places, all below massif's threshold (01.00%) + n2: 965536 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n2: 937008 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) + n0: 570664 in 270 places, all below massif's threshold (01.00%) + n1: 366344 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) + n2: 366344 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 358576 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 352616 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 352616 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 352616 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 350896 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 348256 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 348256 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 348256 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 348256 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 348256 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 348256 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 348256 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 348256 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 348256 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 348256 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 348256 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 2640 in 2 places, all below massif's threshold (01.00%) + n0: 1720 in 4 places, all below massif's threshold (01.00%) + n0: 5960 in 2 places, all below massif's threshold (01.00%) + n0: 7768 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 816540 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 603200 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 603200 in 23 places, all below massif's threshold (01.00%) + n0: 213340 in 76 places, all below massif's threshold (01.00%) + n2: 786308 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591478 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 591478 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + n2: 591478 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + n1: 591032 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 591032 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 591032 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 591032 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 591032 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 591032 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 591032 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 446 in 1 place, below massif's threshold (01.00%) + n0: 194830 in 12 places, all below massif's threshold (01.00%) + n1: 723562 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 723562 in 12 places, all below massif's threshold (01.00%) + n1: 717808 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 717808 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + n2: 717808 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 703392 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 703392 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 703392 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 696456 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 689792 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 689792 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 689792 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 689792 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 689792 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 689792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 689792 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 689792 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 689792 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 689792 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 689792 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 689792 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 6664 in 2 places, all below massif's threshold (01.00%) + n0: 6936 in 4 places, all below massif's threshold (01.00%) + n0: 14416 in 2 places, all below massif's threshold (01.00%) + n1: 581952 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) + n0: 581952 in 51 places, all below massif's threshold (01.00%) + n2: 578088 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) + n1: 533992 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 533992 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457520 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 457120 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) + n1: 438504 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) + n2: 438504 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) + n1: 367544 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) + n0: 367544 in 11 places, all below massif's threshold (01.00%) + n0: 70960 in 4 places, all below massif's threshold (01.00%) + n0: 18616 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 400 in 1 place, below massif's threshold (01.00%) + n0: 76472 in 2 places, all below massif's threshold (01.00%) + n0: 44096 in 97 places, all below massif's threshold (01.00%) + n1: 548808 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 548808 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + n2: 548808 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + n2: 548808 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + n2: 539968 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 529256 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 529256 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 529256 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 523952 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 518960 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 518960 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 518960 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 518960 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 518960 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 518960 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 518960 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 518960 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 518960 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 518960 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 518960 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 4992 in 2 places, all below massif's threshold (01.00%) + n0: 5304 in 4 places, all below massif's threshold (01.00%) + n0: 10712 in 2 places, all below massif's threshold (01.00%) + n0: 8840 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n1: 515280 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + n2: 515280 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + n2: 504144 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + n1: 496176 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 496176 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 496176 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 494448 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 490824 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 490824 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 490824 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 490824 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 490824 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 490824 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 490824 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 490824 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 490824 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 490824 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 490824 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 490824 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 3624 in 2 places, all below massif's threshold (01.00%) + n0: 1728 in 4 places, all below massif's threshold (01.00%) + n0: 7968 in 2 places, all below massif's threshold (01.00%) + n0: 11136 in 1 place, below massif's threshold (01.00%) + n1: 405308 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) + n0: 405308 in 32 places, all below massif's threshold (01.00%) + n2: 402064 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) + n2: 402064 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) + n1: 401312 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) + n2: 401312 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + n1: 399440 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 399440 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 399440 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 399440 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 399440 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 399440 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 337792 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + n1: 331008 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + n1: 331008 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + n2: 331008 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + n2: 327744 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + n1: 324608 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + n1: 324608 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + n1: 324608 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + n1: 324608 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 324608 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 324608 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 324608 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + n1: 324608 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + n1: 324608 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + n1: 324608 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 324608 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 324608 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 324608 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + n0: 324608 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + n0: 3136 in 2 places, all below massif's threshold (01.00%) + n0: 3264 in 4 places, all below massif's threshold (01.00%) + n0: 6784 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=71 +#----------- +time=4358467245 +mem_heap_B=15532481 +mem_heap_extra_B=2920983 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=72 +#----------- +time=4396261063 +mem_heap_B=9944581 +mem_heap_extra_B=2339651 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=73 +#----------- +time=4434054474 +mem_heap_B=9690657 +mem_heap_extra_B=2270607 +mem_stacks_B=0 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.kate.print b/massif-visualizer/test/data/massif.out.kate.print new file mode 100644 index 00000000..86ed760d --- /dev/null +++ b/massif-visualizer/test/data/massif.out.kate.print @@ -0,0 +1,16682 @@ +-------------------------------------------------------------------------------- +Command: kate +Massif arguments: (none) +ms_print arguments: massif.out.kate +-------------------------------------------------------------------------------- + + + MB +30.54^ # + | @@# + | @@@@# + | @@@@@# + | @@@@@@@# + | @@@@@@@@# + | @@@@@@@@@@# + | @@@ @@@@@@@@# + | @@@@ @@@@@@@@# + | @@@@@ @@@@@@@@# + | @@ ::@@@@@ @@@@@@@@# + | @@@@ :: @@@@@ @@@@@@@@# + | :@:::::@ @@ ::::::::::::::::::: @@@@@ @@@@@@@@# + | ::: ::::@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | @@:@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | :@@ :@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | ::@@ :@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | ::@@ :@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | :::::@@ :@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + | :@@:: ::@@ :@:: :::: :@: :::@ @@ ::: : :::: :: ::::: @@@@@ @@@@@@@@#: + 0 +----------------------------------------------------------------------->Gi + 0 4.130 + +Number of snapshots: 74 + Detailed snapshots: [3, 8, 9, 11, 19, 24, 25, 26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70 (peak)] + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 0 0 0 0 0 0 + 1 110,558,310 913,096 754,538 158,558 0 + 2 199,002,722 2,085,216 987,642 1,097,574 0 + 3 293,716,652 3,007,816 1,776,070 1,231,746 0 +59.05% (1,776,070B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->17.62% (530,016B) in 803 places, all below massif's threshold (01.00%) +| +->10.56% (317,637B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.88% (86,699B) 0x6FE95C3: QIODevice::readAll() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.88% (86,699B) 0x5FFDF56: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.88% (86,699B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.88% (86,699B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.88% (86,699B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.88% (86,699B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.88% (86,699B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.88% (86,699B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.88% (86,699B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.88% (86,699B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.88% (86,699B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.88% (86,699B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.88% (86,699B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.88% (86,699B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.88% (86,699B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->02.88% (86,699B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->02.73% (82,080B) 0x6FEAF3C: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.18% (65,664B) 0x6FE2C7E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.18% (65,664B) 0x6FE313C: QFile::QFile(QString const&) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.09% (32,832B) 0x690F52E: KPixmapCache::Private::mmapFile(QString const&, KPixmapCache::Private::MmapInfo*, int) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.09% (32,832B) in 2 places, all below massif's threshold (01.00%) +| | | | +| | | ->01.09% (32,832B) in 10 places, all below massif's threshold (01.00%) +| | | +| | ->00.55% (16,416B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->02.73% (82,080B) 0x6FE9BFC: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.73% (82,080B) 0x6FE9EB4: QIODevice::QIODevice() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.73% (82,080B) in 6 places, all below massif's threshold (01.00%) +| | +| ->02.18% (65,664B) 0x6FE2E7B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.18% (65,664B) 0x6FE313C: QFile::QFile(QString const&) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,832B) 0x690F52E: KPixmapCache::Private::mmapFile(QString const&, KPixmapCache::Private::MmapInfo*, int) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.09% (32,832B) in 2 places, all below massif's threshold (01.00%) +| | | +| | ->01.09% (32,832B) in 10 places, all below massif's threshold (01.00%) +| | +| ->00.04% (1,114B) in 1+ places, all below ms_print's threshold (01.00%) +| +->09.78% (294,212B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.95% (118,778B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.95% (118,778B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.60% (108,421B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.60% (108,421B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.11% (63,483B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.11% (63,315B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (63,315B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (63,315B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (63,315B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (63,315B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->02.11% (63,315B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->02.11% (63,315B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->02.11% (63,315B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->02.11% (63,315B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->02.11% (63,315B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->00.01% (168B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->01.41% (42,462B) 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.41% (42,462B) 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.41% (42,462B) 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.41% (42,462B) 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.41% (42,462B) 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.13% (33,996B) 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.13% (33,996B) 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.13% (33,996B) 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.13% (33,996B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.13% (33,996B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.28% (8,466B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (2,476B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.34% (10,357B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->03.65% (109,700B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.65% (109,700B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.27% (98,354B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.27% (98,354B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.63% (49,050B) 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.63% (49,050B) 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.63% (49,050B) 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.63% (49,050B) 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.63% (49,050B) 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.31% (39,393B) 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (39,393B) 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (39,393B) 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.31% (39,393B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.31% (39,393B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.32% (9,657B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->01.58% (47,418B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.57% (47,286B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.57% (47,286B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.57% (47,286B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.57% (47,286B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.57% (47,286B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.57% (47,286B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.57% (47,286B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.57% (47,286B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.57% (47,286B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.57% (47,286B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->00.00% (132B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.06% (1,886B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.38% (11,346B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.16% (34,918B) 0x5FFF535: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.16% (34,918B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.16% (34,918B) in 3 places, all below massif's threshold (01.00%) +| | +| ->01.02% (30,777B) 0x6F668C0: QByteArray::mid(int, int) const (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (30,777B) in 10 places, all below massif's threshold (01.00%) +| | +| ->00.00% (39B) in 1+ places, all below ms_print's threshold (01.00%) +| +->07.61% (228,928B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->07.22% (217,264B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->07.22% (217,264B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->05.73% (172,472B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.73% (172,472B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.73% (172,472B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.30% (159,368B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->05.30% (159,368B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->03.07% (92,440B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->03.07% (92,216B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.07% (92,216B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.07% (92,216B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.07% (92,216B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.07% (92,216B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->03.07% (92,216B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->03.07% (92,216B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->03.07% (92,216B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->03.07% (92,216B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->03.07% (92,216B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.01% (224B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->02.13% (64,088B) 0x5FEBECB: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.13% (64,088B) 0x60037D4: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.13% (64,088B) 0x6003A40: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.13% (64,088B) 0x6003BD8: KSharedConfig::openConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.13% (64,088B) 0x687129F: KIconTheme::KIconTheme(QString const&, QString const&) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.71% (51,456B) 0x6861711: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x6861953: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x6862F74: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x68689C7: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.71% (51,456B) 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.71% (51,456B) 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | +| | | | | | ->00.42% (12,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.09% (2,840B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.44% (13,104B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->01.22% (36,744B) 0x5FF15A7: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.22% (36,744B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.22% (36,744B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.22% (36,744B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.27% (8,048B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.39% (11,664B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.10% (123,430B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.69% (80,784B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (44,992B) in 15 places, all below massif's threshold (01.00%) +| | | +| | ->01.19% (35,792B) 0x6FAE038: QString::toLower() const (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (33,536B) 0x7012980: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.11% (33,536B) 0x70163A3: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.11% (33,536B) 0x70164D2: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.11% (33,536B) 0x700E755: QSettings::value(QString const&, QVariant const&) const (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.11% (33,536B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.08% (2,256B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.42% (42,646B) in 34 places, all below massif's threshold (01.00%) +| +->02.18% (65,536B) 0x55E4E34: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.18% (65,536B) 0x55E5369: QImage::QImage(int, int, QImage::Format) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.18% (65,536B) 0x55E5BD9: QImage::copy(QRect const&) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x686940B: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x68605FB: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x55D58D3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x55CB586: QWidgetPrivate::setWindowIcon_sys(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x558F0DD: QWidget::create(unsigned long, bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x55B32E5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x55B3CDF: QClipboard::QClipboard(QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x553F105: QApplication::clipboard() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.18% (65,536B) 0x689F1BC: KClipboardSynchronizer::Private::setupSignals() (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x689F56C: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x689F702: KClipboardSynchronizer::self() (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x689AE5F: ??? (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x689C5F7: KApplication::KApplication(bool) (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.18% (65,536B) 0x6416824: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.18% (65,536B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | ->02.18% (65,536B) 0x504DABB: (below main) (libc-start.c:220) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.17% (65,280B) 0x504E68F: __gconv_open (gconv_open.c:284) +| ->02.17% (65,280B) 0x504E000: iconv_open (iconv_open.c:72) +| ->02.17% (65,280B) 0x707DB96: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->01.09% (32,640B) 0x707EB2C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x6FA75DC: QString::fromLocal8Bit(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x6FE08D3: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x6FE0778: QFile::decodeName(QByteArray const&) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x702673E: QFSFileEngine::currentPath(QString const&) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x6FD66A8: QDir::currentPath() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (32,640B) 0x6060103: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.09% (32,640B) 0x4E2ADA6: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | ->01.09% (32,640B) 0x504DABB: (below main) (libc-start.c:220) +| | +| ->01.09% (32,640B) 0x707E4E4: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->01.09% (32,640B) 0x7078705: QTextCodec::fromUnicode(QString const&) const (in /usr/lib/libQtCore.so.4.5.2) +| ->01.09% (32,640B) 0x6FA6BEF: QString::toLocal8Bit() const (in /usr/lib/libQtCore.so.4.5.2) +| ->01.09% (32,640B) 0x606010E: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (in /usr/lib/libkdecore.so.5.3.0) +| ->01.09% (32,640B) 0x4E2ADA6: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.09% (32,640B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.50% (45,144B) 0x60373E4: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6037B56: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6038A6E: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6035F89: kDebugStream(QtMsgType, int, char const*, int, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6138865: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6137EA4: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6139043: KSycoca::findFactory(KSycocaFactoryId) (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x613C445: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x6094263: KServiceFactory::KServiceFactory() (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x60945D8: KServiceFactory::self() (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0x608C38B: KService::serviceByDesktopName(QString const&) (in /usr/lib/libkdecore.so.5.3.0) +| ->01.50% (45,144B) 0xA4531B0: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.50% (45,144B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.50% (45,144B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.50% (45,144B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.50% (45,144B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.42% (42,839B) 0x400AF2D: _dl_new_object (dl-object.c:52) +| ->01.42% (42,839B) 0x400647A: _dl_map_object_from_fd (dl-load.c:966) +| ->01.42% (42,839B) 0x40083A6: _dl_map_object (dl-load.c:2235) +| ->01.42% (42,839B) in 2 places, all below massif's threshold (01.00%) +| +->01.06% (31,864B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.06% (31,864B) in 33 places, all below massif's threshold (01.00%) +| +->01.04% (31,184B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) + ->01.04% (31,184B) in 4 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 4 375,603,031 3,469,056 2,113,852 1,355,204 0 + 5 485,920,124 4,679,168 3,137,441 1,541,727 0 + 6 568,275,881 6,836,264 5,048,925 1,787,339 0 + 7 634,713,981 8,323,920 6,498,342 1,825,578 0 + 8 717,708,566 8,466,800 6,641,182 1,825,618 0 +78.44% (6,641,182B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->24.81% (2,100,761B) in 1620 places, all below massif's threshold (01.00%) +| +->16.08% (1,361,210B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->11.97% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->11.97% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->11.97% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->11.97% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->11.97% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->11.97% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->11.97% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->08.03% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->08.03% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->08.03% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->08.03% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->08.03% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->08.03% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->08.03% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->08.03% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->03.93% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.93% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->03.93% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.93% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.93% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.93% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.93% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.93% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->02.38% (201,408B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.38% (201,408B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.38% (201,408B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.38% (201,408B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.38% (201,408B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (201,408B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (102,432B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.21% (102,432B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.21% (102,432B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.21% (102,432B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.21% (102,432B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.21% (102,432B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.21% (102,432B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->01.21% (102,432B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.17% (98,976B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.17% (98,976B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.17% (98,976B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (98,976B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (98,976B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (98,976B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (98,976B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (98,976B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (98,976B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.73% (146,682B) in 41 places, all below massif's threshold (01.00%) +| +->08.56% (724,586B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.75% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.75% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.58% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.58% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.01% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.82% (154,159B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.82% (154,159B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.82% (154,159B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.82% (154,159B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.82% (154,159B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.82% (154,159B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.82% (154,159B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.82% (154,159B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.82% (154,159B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.82% (154,159B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->01.14% (96,120B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.14% (96,120B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.14% (96,120B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.14% (96,120B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->00.05% (4,239B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.57% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.18% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->03.48% (295,027B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.48% (295,027B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.29% (278,260B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.29% (278,260B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.65% (224,477B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.36% (115,366B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (115,366B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (115,366B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (115,366B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (115,366B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.36% (115,366B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.36% (115,366B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.36% (115,366B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.36% (115,366B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.36% (115,366B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->01.26% (106,469B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.26% (106,469B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.26% (106,469B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.26% (106,469B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->00.03% (2,642B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.64% (53,783B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.20% (16,767B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.32% (111,704B) in 8 places, all below massif's threshold (01.00%) +| +->06.64% (561,912B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->06.30% (533,536B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->06.30% (533,536B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->05.40% (457,120B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.40% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.40% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->05.18% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->05.18% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->04.34% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.65% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.65% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.65% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.65% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.65% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.65% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.65% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.65% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.65% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->02.65% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->01.64% (138,872B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.64% (138,872B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.64% (138,872B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.64% (138,872B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.05% (4,096B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.84% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.22% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.90% (76,416B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.34% (28,376B) in 1+ places, all below ms_print's threshold (01.00%) +| +->05.85% (495,688B) 0x9132E23: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->05.85% (495,688B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->05.85% (495,688B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->05.85% (495,688B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->05.85% (495,688B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->05.85% (495,688B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->05.85% (495,688B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->05.85% (495,688B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.85% (495,688B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.85% (495,688B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->05.85% (495,688B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->05.85% (495,688B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->05.85% (495,688B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->05.85% (495,688B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->05.85% (495,688B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->05.40% (457,252B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.69% (312,848B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.06% (174,680B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.17% (98,976B) 0x5FED260: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.17% (98,880B) 0x5FF6AAA: KConfigGroup::readEntry(char const*, QString const&) const (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.17% (98,776B) 0x5FF71D0: KConfigGroup::readEntry(char const*, char const*) const (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.17% (98,776B) in 22 places, all below massif's threshold (01.00%) +| | | | | | +| | | | | ->00.00% (104B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (96B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.89% (75,704B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->01.63% (138,168B) in 21 places, all below massif's threshold (01.00%) +| | +| ->01.71% (144,404B) in 54 places, all below massif's threshold (01.00%) +| +->03.72% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->03.72% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->03.72% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->03.72% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->03.72% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->03.72% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->03.72% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->03.72% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.72% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->03.72% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->03.72% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->03.72% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.72% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.35% (198,985B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.35% (198,985B) in 20 places, all below massif's threshold (01.00%) +| +->02.03% (171,512B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.79% (151,912B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.79% (151,912B) in 161 places, all below massif's threshold (01.00%) +| | +| ->00.23% (19,600B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.94% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) +| ->01.94% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) +| ->01.94% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.94% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.94% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.94% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.94% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.94% (163,840B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.07% (90,508B) 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.07% (90,508B) 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.07% (90,508B) in 21 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 9 784,636,212 9,688,632 7,603,984 2,084,648 0 +78.48% (7,603,984B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->30.65% (2,969,883B) in 1903 places, all below massif's threshold (01.00%) +| +->15.12% (1,464,954B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->10.46% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->10.46% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->10.46% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->10.46% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->10.46% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->10.46% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->10.46% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.02% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->07.02% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->07.02% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->07.02% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->07.02% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->07.02% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->07.02% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->07.02% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->03.44% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.44% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->03.44% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.44% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.44% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.44% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->02.89% (280,080B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.89% (280,080B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.89% (280,080B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.89% (280,080B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.89% (280,080B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.89% (280,080B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (102,432B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.06% (102,432B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.06% (102,432B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.06% (102,432B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.06% (102,432B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.06% (102,432B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->01.06% (102,432B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->01.06% (102,432B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.02% (98,976B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.02% (98,976B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | | ->01.02% (98,976B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | | ->01.02% (98,976B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | | ->01.02% (98,976B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.02% (98,976B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.02% (98,976B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | | ->01.02% (98,976B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | | ->01.02% (98,976B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | | +| | ->00.81% (78,672B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.77% (171,754B) in 42 places, all below massif's threshold (01.00%) +| +->07.48% (724,586B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.28% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.28% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.13% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.13% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.63% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.59% (154,159B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.59% (154,159B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.59% (154,159B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.59% (154,159B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.59% (154,159B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.59% (154,159B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.59% (154,159B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.59% (154,159B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.59% (154,159B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.59% (154,159B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->01.04% (100,359B) in 10 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.50% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.15% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->03.05% (295,027B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.05% (295,027B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.87% (278,260B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.87% (278,260B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.32% (224,477B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.19% (115,366B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.19% (115,366B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.19% (115,366B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.19% (115,366B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.19% (115,366B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.19% (115,366B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | ->01.19% (115,366B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.19% (115,366B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.19% (115,366B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.19% (115,366B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->01.10% (106,469B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.10% (106,469B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | ->01.10% (106,469B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | ->01.10% (106,469B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | +| | | | ->00.03% (2,642B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.56% (53,783B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.17% (16,767B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.15% (111,704B) in 8 places, all below massif's threshold (01.00%) +| +->05.84% (565,728B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->05.51% (533,536B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->05.51% (533,536B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->04.72% (457,120B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->04.72% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->04.72% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->04.53% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->04.53% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->03.79% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.32% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.32% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.32% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.32% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.32% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.32% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->02.32% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.32% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->02.32% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->02.32% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->01.43% (138,872B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.43% (138,872B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.43% (138,872B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.43% (138,872B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.04% (4,096B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.73% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.19% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.79% (76,416B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.33% (32,192B) in 1+ places, all below ms_print's threshold (01.00%) +| +->05.35% (518,154B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.82% (370,360B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.16% (208,928B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.13% (109,952B) in 84 places, all below massif's threshold (01.00%) +| | | | +| | | ->01.02% (98,976B) 0x5FED260: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.02% (98,880B) 0x5FF6AAA: KConfigGroup::readEntry(char const*, QString const&) const (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.02% (98,776B) 0x5FF71D0: KConfigGroup::readEntry(char const*, char const*) const (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.02% (98,776B) in 22 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.00% (104B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (96B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->01.67% (161,432B) in 21 places, all below massif's threshold (01.00%) +| | +| ->01.53% (147,794B) in 60 places, all below massif's threshold (01.00%) +| +->03.32% (321,544B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.09% (299,320B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.07% (200,968B) in 203 places, all below massif's threshold (01.00%) +| | | +| | ->01.02% (98,352B) 0x705A447: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (98,352B) 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.01% (98,112B) 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.01% (98,112B) in 467 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (240B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.23% (22,224B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.25% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->03.25% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->03.25% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->03.25% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->03.25% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->03.25% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->03.25% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->03.25% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.25% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.25% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->03.25% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->03.25% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->03.25% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.25% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.23% (216,484B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.22% (117,988B) in 20 places, all below massif's threshold (01.00%) +| | +| ->01.02% (98,496B) 0x6FE9BFC: QIODevicePrivate::QIODevicePrivate() (in /usr/lib/libQtCore.so.4.5.2) +| ->01.02% (98,496B) 0x6FE9EB4: QIODevice::QIODevice() (in /usr/lib/libQtCore.so.4.5.2) +| ->01.02% (98,496B) in 6 places, all below massif's threshold (01.00%) +| +->01.69% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) +| ->01.69% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) +| ->01.69% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| ->01.69% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.69% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.69% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.69% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.69% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.69% (163,840B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.29% (124,816B) 0x7061E5C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->01.29% (124,816B) 0x705A3FE: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.29% (124,816B) 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.29% (124,816B) 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.29% (124,816B) in 166 places, all below massif's threshold (01.00%) +| +->01.23% (119,483B) 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) +| ->01.23% (119,483B) 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) +| ->01.23% (119,483B) in 21 places, all below massif's threshold (01.00%) +| +->01.03% (99,584B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + ->01.03% (99,584B) in 75 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 10 874,841,130 9,724,448 7,646,283 2,078,165 0 + 11 939,800,075 10,649,328 8,393,657 2,255,671 0 +78.82% (8,393,657B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->29.97% (3,191,242B) in 2286 places, all below massif's threshold (01.00%) +| +->13.74% (1,463,282B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->09.51% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->09.51% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->09.51% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->09.51% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->09.51% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->09.51% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.51% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.39% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->06.39% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->06.39% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->06.39% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->06.39% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->06.39% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->06.39% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->06.39% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->03.13% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.13% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->03.13% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.13% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.13% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.13% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.13% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->03.13% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->02.63% (280,080B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.63% (280,080B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.63% (280,080B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.63% (280,080B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.63% (280,080B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (280,080B) in 3 places, all below massif's threshold (01.00%) +| | +| ->01.60% (170,082B) in 42 places, all below massif's threshold (01.00%) +| +->06.80% (724,463B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.98% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.98% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.85% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.85% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.39% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.45% (154,159B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.45% (154,159B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.45% (154,159B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.45% (154,159B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.45% (154,159B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.45% (154,159B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.45% (154,159B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.45% (154,159B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.45% (154,159B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.45% (154,159B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.94% (100,359B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.46% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.14% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->02.77% (294,871B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.77% (294,871B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.61% (278,104B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.61% (278,104B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.11% (224,477B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.08% (115,366B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (115,366B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (115,366B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (115,366B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (115,366B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.08% (115,366B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.08% (115,366B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.08% (115,366B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.08% (115,366B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.08% (115,366B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->01.02% (109,111B) in 10 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.50% (53,627B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.16% (16,767B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.05% (111,737B) in 10 places, all below massif's threshold (01.00%) +| +->05.81% (618,438B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->04.32% (459,744B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.22% (236,256B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.22% (236,256B) in 91 places, all below massif's threshold (01.00%) +| | | +| | ->02.10% (223,488B) in 21 places, all below massif's threshold (01.00%) +| | +| ->01.49% (158,694B) in 67 places, all below massif's threshold (01.00%) +| +->05.35% (570,208B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->05.01% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->05.01% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->04.30% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->04.29% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->04.29% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->04.12% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->04.12% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->03.45% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->02.11% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->02.11% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->02.11% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->02.11% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->02.11% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->02.11% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->02.11% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->02.11% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->02.11% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->02.11% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->01.30% (138,872B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.30% (138,872B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.30% (138,872B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.30% (138,872B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.04% (4,096B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.67% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.17% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.72% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.34% (36,216B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.73% (397,248B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.44% (366,104B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.30% (245,064B) in 238 places, all below massif's threshold (01.00%) +| | | +| | ->01.14% (121,040B) 0x705A447: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (121,040B) 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (120,720B) 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.13% (120,720B) in 575 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (320B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.29% (31,144B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.96% (315,065B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.96% (315,065B) in 29 places, all below massif's threshold (01.00%) +| +->02.96% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->02.96% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.96% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.96% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.96% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.96% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.96% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.96% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.96% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.96% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.96% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.96% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.96% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->02.96% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.96% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.54% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) +| ->01.54% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) +| ->01.54% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.54% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.54% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.54% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.54% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.54% (163,840B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.51% (160,992B) 0x7061E5C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->01.51% (160,992B) 0x705A3FE: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.51% (160,992B) 0x705B886: QMetaObject::connect(QObject const*, int, QObject const*, int, int, int*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.51% (160,992B) 0x705BD85: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.51% (160,992B) in 222 places, all below massif's threshold (01.00%) +| +->01.19% (126,704B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.19% (126,704B) in 92 places, all below massif's threshold (01.00%) +| +->01.16% (123,919B) 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) +| ->01.16% (123,919B) 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) +| ->01.16% (123,919B) in 21 places, all below massif's threshold (01.00%) +| +->01.09% (115,808B) 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.09% (115,808B) in 3 places, all below massif's threshold (01.00%) +| +->01.01% (107,520B) 0x5597991: QWidgetAction::QWidgetAction(QObject*) (in /usr/lib/libQtGui.so.4.5.2) + ->01.01% (107,520B) in 6 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 12 1,039,131,551 11,184,064 8,887,755 2,296,309 0 + 13 1,098,539,650 11,290,040 8,979,833 2,310,207 0 + 14 1,171,846,470 11,599,016 9,245,360 2,353,656 0 + 15 1,235,357,442 11,182,464 8,913,223 2,269,241 0 + 16 1,337,666,475 12,546,392 10,064,933 2,481,459 0 + 17 1,407,075,576 12,703,680 10,210,419 2,493,261 0 + 18 1,502,514,693 13,045,240 10,523,609 2,521,631 0 + 19 1,566,297,595 13,285,864 10,743,033 2,542,831 0 +80.86% (10,743,033B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->30.58% (4,063,065B) in 2482 places, all below massif's threshold (01.00%) +| +->11.38% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->07.63% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->07.63% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->07.63% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->07.63% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->07.63% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->07.63% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->07.63% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.12% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->05.12% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->05.12% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->05.12% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->05.12% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->05.12% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->05.12% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->05.12% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->02.51% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.51% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->02.51% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.51% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.51% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.51% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.51% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.51% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->02.36% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.36% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.36% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.36% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.36% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.36% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->01.40% (185,530B) in 42 places, all below massif's threshold (01.00%) +| +->06.00% (797,740B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->04.39% (583,024B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.69% (356,952B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.70% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.70% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.62% (214,716B) in 76 places, all below massif's threshold (01.00%) +| +->05.45% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.39% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.39% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.28% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.28% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.92% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.16% (154,159B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.16% (154,159B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.16% (154,159B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.16% (154,159B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.16% (154,159B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.16% (154,159B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.16% (154,159B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.16% (154,159B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.16% (154,159B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.16% (154,159B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.76% (100,359B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.37% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.11% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->02.21% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.21% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.09% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.09% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.69% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.69% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.40% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.12% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.84% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->05.34% (709,948B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->04.45% (590,586B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.45% (590,586B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.45% (590,586B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.45% (590,586B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->04.45% (590,586B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.45% (590,586B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.45% (590,586B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.45% (590,586B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.45% (590,586B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.45% (590,586B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->04.45% (590,586B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->04.45% (590,586B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.45% (590,586B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.45% (590,586B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.45% (590,586B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.45% (590,586B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.45% (590,586B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.45% (590,586B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | +| ->00.90% (119,362B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.34% (576,072B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->04.02% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->04.02% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.44% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.44% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->03.44% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->03.30% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->03.30% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.77% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.69% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.69% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.69% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.69% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.69% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.69% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.69% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.69% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.69% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.69% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->01.05% (138,872B) 0x6423601: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.05% (138,872B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.05% (138,872B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.05% (138,872B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.03% (4,096B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.53% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.14% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.58% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.32% (42,080B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.05% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.05% (405,308B) in 31 places, all below massif's threshold (01.00%) +| +->03.02% (400,752B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.80% (372,224B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.80% (372,224B) in 266 places, all below massif's threshold (01.00%) +| | +| ->00.21% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.37% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->02.37% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.37% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.37% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.37% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.37% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.37% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.37% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.37% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.37% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.37% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.37% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.37% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->02.37% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.37% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.22% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->02.22% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->02.22% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->02.22% (295,568B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.22% (295,568B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.22% (295,568B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.22% (295,568B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.22% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->02.22% (295,568B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->02.22% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (295,568B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| ->02.22% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| ->02.22% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| ->02.22% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| +->02.07% (274,424B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.07% (274,424B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.07% (274,424B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.07% (274,424B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (274,424B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.07% (274,424B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (266,744B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.01% (266,744B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.01% (266,744B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.01% (266,744B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (7,680B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.37% (181,984B) 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.12% (148,896B) 0x56C68B7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (148,896B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.25% (33,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.30% (172,288B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.30% (172,288B) in 108 places, all below massif's threshold (01.00%) +| +->01.23% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) +| ->01.23% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) +| ->01.23% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| ->01.23% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.23% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.23% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.23% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.23% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.23% (163,840B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.14% (150,984B) 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.14% (150,984B) 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.14% (150,984B) in 21 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 20 1,641,884,681 13,385,976 10,830,873 2,555,103 0 + 21 1,751,819,720 13,809,320 11,221,261 2,588,059 0 + 22 1,820,778,287 14,069,064 11,459,605 2,609,459 0 + 23 1,894,593,457 14,371,808 11,738,053 2,633,755 0 + 24 1,956,180,349 14,719,368 12,064,549 2,654,819 0 +81.96% (12,064,549B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->28.55% (4,202,585B) in 2480 places, all below massif's threshold (01.00%) +| +->10.28% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->06.88% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.88% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.88% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.88% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.88% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.88% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.88% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.62% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.62% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.62% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.62% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.62% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->04.62% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.62% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->04.62% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->02.26% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.26% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->02.26% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.26% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.26% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.26% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.26% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->02.13% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.13% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.13% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.13% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.13% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.13% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->01.26% (185,530B) in 42 places, all below massif's threshold (01.00%) +| +->05.54% (814,968B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->05.54% (814,968B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.54% (814,968B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.54% (814,968B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->05.54% (814,968B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->05.54% (814,968B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->05.43% (799,144B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->05.43% (799,144B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->05.43% (799,144B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->04.48% (659,360B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->04.48% (659,360B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->04.48% (659,360B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->04.48% (659,360B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->04.48% (659,360B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->04.48% (659,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->04.48% (659,360B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->04.48% (659,360B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->04.48% (659,360B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->04.48% (659,360B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | +| | | | ->00.95% (139,784B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.11% (15,824B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->05.42% (797,740B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.96% (583,024B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.43% (356,952B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.54% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.54% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.46% (214,716B) in 76 places, all below massif's threshold (01.00%) +| +->04.92% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.16% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.16% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.06% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.06% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.73% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.05% (154,159B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (154,159B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (154,159B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (154,159B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (154,159B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.05% (154,159B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | ->01.05% (154,159B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.05% (154,159B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | ->01.05% (154,159B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | ->01.05% (154,159B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | +| | | | | ->00.68% (100,359B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.33% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.10% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->02.00% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.00% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.89% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.89% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.52% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.52% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.36% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.11% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.76% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.82% (709,948B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->04.01% (590,586B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.01% (590,586B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.01% (590,586B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->04.01% (590,586B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->04.01% (590,586B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.01% (590,586B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.01% (590,586B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.01% (590,586B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->04.01% (590,586B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.01% (590,586B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->04.01% (590,586B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->04.01% (590,586B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.01% (590,586B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.01% (590,586B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.01% (590,586B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.01% (590,586B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->04.01% (590,586B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.01% (590,586B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | +| ->00.81% (119,362B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.91% (576,120B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.63% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.63% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.11% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->03.11% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->03.11% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.98% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.98% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.50% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.53% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.53% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.53% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.53% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.53% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.53% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.53% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.53% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.53% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.53% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.97% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.48% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.13% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.52% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.29% (42,128B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.92% (429,216B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.72% (400,688B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.72% (400,688B) in 266 places, all below massif's threshold (01.00%) +| | +| ->00.19% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.75% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.75% (405,308B) in 31 places, all below massif's threshold (01.00%) +| +->02.73% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->02.73% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.73% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.73% (401,312B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.71% (398,168B) 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.71% (398,168B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.71% (398,168B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.69% (396,296B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.69% (396,296B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.69% (396,296B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.69% (396,296B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.69% (396,296B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->02.69% (396,296B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.69% (396,296B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,144B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.01% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.14% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->02.14% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.14% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->02.14% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.14% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->02.14% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.14% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->02.14% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.14% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.14% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.14% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.14% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->02.14% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->02.14% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->02.14% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.01% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->02.01% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->02.01% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->02.01% (295,568B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.01% (295,568B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.01% (295,568B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.01% (295,568B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->02.01% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->02.01% (295,568B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->02.01% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (295,568B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| ->02.01% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| ->02.01% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| ->02.01% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.01% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| +->01.42% (209,532B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.42% (209,532B) in 50 places, all below massif's threshold (01.00%) +| +->01.24% (181,984B) 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.01% (148,896B) 0x56C68B7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (148,896B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.22% (33,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.18% (173,640B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.18% (173,640B) in 108 places, all below massif's threshold (01.00%) +| +->01.11% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) +| ->01.11% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) +| ->01.11% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| ->01.11% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.11% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| ->01.11% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.11% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.11% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| ->01.11% (163,840B) 0x504DABB: (below main) (libc-start.c:220) +| +->01.03% (150,976B) 0x7A9C97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.03% (150,976B) 0x7A9E371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + ->01.03% (150,976B) in 21 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 25 2,053,699,632 15,837,792 13,114,237 2,723,555 0 +82.80% (13,114,237B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->27.82% (4,405,573B) in 2480 places, all below massif's threshold (01.00%) +| +->09.90% (1,567,400B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->09.90% (1,567,400B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.90% (1,567,400B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->09.90% (1,567,400B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->09.90% (1,567,400B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->09.90% (1,567,400B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->09.63% (1,525,488B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->09.63% (1,525,488B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->09.63% (1,525,488B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->08.29% (1,313,728B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->08.29% (1,313,728B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->08.29% (1,313,728B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->08.29% (1,313,728B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->08.29% (1,313,728B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->08.29% (1,313,728B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->08.29% (1,313,728B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->08.29% (1,313,728B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->08.29% (1,313,728B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->08.29% (1,313,728B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | +| | | | ->01.34% (211,760B) in 4 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.26% (41,912B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->09.55% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->06.40% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.40% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.40% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.40% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.40% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.40% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.40% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.29% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.29% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.29% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.29% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.29% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->04.29% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.29% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->04.29% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->02.10% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->02.10% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->02.10% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.10% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.10% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.10% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.10% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->02.10% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.98% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.98% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.98% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.98% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.98% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->01.17% (185,530B) in 42 places, all below massif's threshold (01.00%) +| +->05.04% (797,740B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.68% (583,024B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.25% (356,952B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.43% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.43% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.36% (214,716B) in 76 places, all below massif's threshold (01.00%) +| +->04.57% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.01% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.91% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.91% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.61% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.61% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.31% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.09% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.86% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.86% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.75% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.75% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.41% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.41% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.34% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.10% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.71% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.48% (709,948B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.73% (590,586B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.73% (590,586B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.73% (590,586B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.73% (590,586B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->03.73% (590,586B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.73% (590,586B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.73% (590,586B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.73% (590,586B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.73% (590,586B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.73% (590,586B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.73% (590,586B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.73% (590,586B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.73% (590,586B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.73% (590,586B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.73% (590,586B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.73% (590,586B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.73% (590,586B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.73% (590,586B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | +| ->00.75% (119,362B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.64% (576,120B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.37% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.37% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.89% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.89% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.89% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.77% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.77% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.32% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.42% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.42% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.42% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.42% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.42% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.42% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.42% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.42% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.42% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.42% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.90% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.45% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.12% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.48% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.27% (42,128B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.93% (463,696B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.75% (435,168B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.75% (435,168B) in 266 places, all below massif's threshold (01.00%) +| | +| ->00.18% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.56% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.56% (405,308B) in 31 places, all below massif's threshold (01.00%) +| +->02.54% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->02.54% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.53% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.53% (401,312B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.51% (398,168B) 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.51% (398,168B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.51% (398,168B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.50% (396,296B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.50% (396,296B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.50% (396,296B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.50% (396,296B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.50% (396,296B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->02.50% (396,296B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.50% (396,296B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,144B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.99% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.99% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.99% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.99% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.99% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.99% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.99% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.99% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.99% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.99% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.99% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.99% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.99% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.99% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.99% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.87% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.87% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.87% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.87% (295,568B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.87% (295,568B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.87% (295,568B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.87% (295,568B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.87% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->01.87% (295,568B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->01.87% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (295,568B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| ->01.87% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| ->01.87% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| ->01.87% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.87% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| +->01.42% (225,284B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.42% (225,284B) in 50 places, all below massif's threshold (01.00%) +| +->01.23% (194,332B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.23% (194,332B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.23% (194,332B) in 2 places, all below massif's threshold (01.00%) +| +->01.15% (181,984B) 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.15% (181,984B) in 4 places, all below massif's threshold (01.00%) +| +->01.10% (174,320B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.10% (174,320B) in 108 places, all below massif's threshold (01.00%) +| +->01.03% (163,840B) 0x14506A8A: ??? (in /usr/lib/libQtScript.so.4.5.2) + ->01.03% (163,840B) 0x144EFD7D: QScriptEngine::QScriptEngine() (in /usr/lib/libQtScript.so.4.5.2) + ->01.03% (163,840B) 0x13EB2B47: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13EB2FE7: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13EB5EF5: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13EB91AC: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13FA059D: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (163,840B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) + ->01.03% (163,840B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) + ->01.03% (163,840B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + ->01.03% (163,840B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) + ->01.03% (163,840B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + ->01.03% (163,840B) 0x504DABB: (below main) (libc-start.c:220) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 26 2,129,491,054 16,851,264 14,063,489 2,787,775 0 +83.46% (14,063,489B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->27.88% (4,698,865B) in 2481 places, all below massif's threshold (01.00%) +| +->13.40% (2,257,712B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->13.40% (2,257,712B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->13.40% (2,257,712B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->13.40% (2,257,712B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->13.40% (2,257,712B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->13.40% (2,257,712B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->13.08% (2,204,064B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->13.08% (2,204,064B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->13.08% (2,204,064B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->11.82% (1,992,304B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->11.82% (1,992,304B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->11.82% (1,992,304B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->11.82% (1,992,304B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->11.82% (1,992,304B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->11.82% (1,992,304B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->11.82% (1,992,304B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->11.82% (1,992,304B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->11.82% (1,992,304B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->11.82% (1,992,304B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | +| | | | ->01.26% (211,760B) in 4 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.32% (53,648B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->08.98% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->06.01% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.01% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.01% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.01% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.01% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->06.01% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->06.01% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.04% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.04% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.04% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.04% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->04.04% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->04.04% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->04.04% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->04.04% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.98% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.98% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.98% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.98% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.98% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.98% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.98% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.98% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.86% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.86% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.86% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.86% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.86% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.86% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->01.10% (185,530B) in 42 places, all below massif's threshold (01.00%) +| +->04.73% (797,740B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.46% (583,024B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.12% (356,952B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.34% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.27% (214,716B) in 76 places, all below massif's threshold (01.00%) +| +->04.29% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.89% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.89% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.80% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.80% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.51% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.51% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.29% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.09% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.74% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.74% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.65% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.65% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.33% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.33% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.32% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.10% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.66% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.21% (709,948B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.50% (590,586B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.50% (590,586B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.50% (590,586B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.50% (590,586B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->03.50% (590,586B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.50% (590,586B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.50% (590,586B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.50% (590,586B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->03.50% (590,586B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.50% (590,586B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.50% (590,586B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->03.50% (590,586B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.50% (590,586B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.50% (590,586B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.50% (590,586B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.50% (590,586B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->03.50% (590,586B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.50% (590,586B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | +| ->00.71% (119,362B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.42% (576,120B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.17% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->03.17% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.72% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.71% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.71% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.60% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.60% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.18% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.33% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.33% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.33% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.33% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.33% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.33% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.33% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.33% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.33% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.33% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.85% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.42% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.11% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.45% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.25% (42,128B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.94% (495,704B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.77% (467,176B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.77% (467,176B) in 266 places, all below massif's threshold (01.00%) +| | +| ->00.17% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.41% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.41% (405,308B) in 31 places, all below massif's threshold (01.00%) +| +->02.39% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->02.39% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.38% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13ED1416: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13EC74CB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.38% (401,312B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.36% (398,168B) 0x13ECEA43: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.36% (398,168B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.36% (398,168B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.35% (396,296B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.35% (396,296B) 0x13F20B58: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.35% (396,296B) 0x13F25336: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.35% (396,296B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x5B40E2F: QAbstractSlider::sliderMoved(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x58A5569: QAbstractSlider::setSliderPosition(int) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x593DF48: QScrollBar::mouseMoveEvent(QMouseEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x13F2B807: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.35% (396,296B) 0x558D820: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->02.35% (396,296B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x55ABA0C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->02.35% (396,296B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,144B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.87% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.87% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.87% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.87% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.87% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.87% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.87% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.87% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.87% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.87% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.87% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.87% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.87% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.87% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.87% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.75% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.75% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.75% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.75% (295,568B) 0x6421092: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.75% (295,568B) 0x6437665: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.75% (295,568B) 0x6437A3C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.75% (295,568B) 0x6437D82: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| ->01.75% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.75% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x5926ECB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x592CDE8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x696B76C: KMenu::mouseReleaseEvent(QMouseEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->01.75% (295,568B) 0x558D9BE: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x592F5A9: QMenu::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x554600F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| ->01.75% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.75% (295,568B) 0x55458DE: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x55ABE2C: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x55AAAA7: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| ->01.75% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| ->01.75% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| ->01.75% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.75% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.75% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| +->01.63% (274,088B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.63% (274,088B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.05% (177,212B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (177,212B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (177,212B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.05% (177,212B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.05% (177,212B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.04% (175,244B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.04% (175,244B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.04% (175,244B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.04% (175,244B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.01% (1,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.57% (96,876B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.44% (242,192B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.44% (242,192B) in 50 places, all below massif's threshold (01.00%) +| +->01.08% (181,984B) 0x56CE1E7: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->01.08% (181,984B) in 4 places, all below massif's threshold (01.00%) +| +->01.04% (175,136B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + ->01.04% (175,136B) in 108 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 27 2,235,323,238 13,018,112 10,474,361 2,543,751 0 + 28 2,311,662,255 13,193,720 10,631,655 2,562,065 0 + 29 2,387,571,305 13,329,864 10,746,607 2,583,257 0 + 30 2,482,462,176 13,455,640 10,857,359 2,598,281 0 + 31 2,520,424,096 13,512,400 10,908,839 2,603,561 0 + 32 2,596,333,172 13,618,552 11,003,087 2,615,465 0 + 33 2,672,241,031 13,724,408 11,095,919 2,628,489 0 + 34 2,770,652,571 13,653,384 10,994,177 2,659,207 0 + 35 2,827,586,530 13,483,496 10,868,519 2,614,977 0 + 36 2,922,476,053 13,668,312 11,030,983 2,637,329 0 + 37 2,998,390,178 13,769,368 11,119,655 2,649,713 0 + 38 3,111,753,933 13,928,664 11,262,183 2,666,481 0 + 39 3,149,544,591 13,979,920 11,307,671 2,672,249 0 + 40 3,225,119,856 14,097,320 11,409,775 2,687,545 0 + 41 3,300,719,590 14,841,800 12,102,523 2,739,277 0 + 42 3,376,294,053 16,240,984 13,408,867 2,832,117 0 + 43 3,477,755,138 18,387,368 15,416,875 2,970,493 0 +83.84% (15,416,875B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->27.28% (5,015,223B) in 2491 places, all below massif's threshold (01.00%) +| +->15.61% (2,869,488B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->15.61% (2,869,488B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->15.61% (2,869,488B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->15.61% (2,869,488B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->15.61% (2,869,488B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->15.50% (2,850,144B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->15.28% (2,808,704B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->15.28% (2,808,704B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->15.28% (2,808,704B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->14.78% (2,717,960B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->14.41% (2,649,216B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->14.41% (2,649,216B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->14.41% (2,649,216B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->14.41% (2,649,216B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->14.41% (2,649,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->14.41% (2,649,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->14.41% (2,649,216B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.37% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.49% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.23% (41,440B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.11% (19,344B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->08.23% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->05.51% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.51% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.51% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.51% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.51% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.51% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.51% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.70% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.70% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.70% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.70% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.70% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.70% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.70% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->03.70% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.81% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.81% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.81% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.81% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.81% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.81% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.81% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.81% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.71% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->01.01% (185,530B) in 42 places, all below massif's threshold (01.00%) +| +->04.44% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.28% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.05% (377,128B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.23% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.23% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.16% (213,340B) in 76 places, all below massif's threshold (01.00%) +| +->04.28% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.22% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.22% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.22% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->03.22% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->03.21% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.21% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.21% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->03.21% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.21% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.21% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->03.21% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.21% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->03.21% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->03.21% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->03.21% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->03.21% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->03.21% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.06% (194,830B) in 12 places, all below massif's threshold (01.00%) +| +->03.94% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.73% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.73% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.65% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.65% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.38% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.38% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.26% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.60% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.60% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.51% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.51% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.22% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.22% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.29% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.09% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.61% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.14% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.90% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.90% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.49% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.49% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.49% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.38% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.38% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.00% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.22% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.22% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.22% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.22% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.22% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.22% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.22% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.22% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.22% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.22% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.78% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.39% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.10% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.42% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.24% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.90% (532,776B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.74% (504,248B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.74% (504,248B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.16% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.20% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.20% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->02.19% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->02.19% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.18% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.18% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.18% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.18% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.17% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.17% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.17% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.17% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.17% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.17% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.17% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.17% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.17% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.17% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.17% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.13% (391,164B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.13% (391,164B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.45% (266,544B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.45% (266,544B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.45% (266,544B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.45% (266,544B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (263,528B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (259,844B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (259,844B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (259,844B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.39% (256,132B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.35% (247,408B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.35% (247,408B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.35% (247,408B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.35% (247,408B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.35% (247,408B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.35% (247,408B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.35% (247,408B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.05% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (3,684B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,016B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.68% (124,620B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.02% (370,792B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.02% (188,416B) 0x6FA02AC: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (188,416B) in 9 places, all below massif's threshold (01.00%) +| | +| ->00.99% (182,376B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.71% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.71% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.71% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.71% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.71% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.71% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.71% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.71% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.71% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.71% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.71% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.71% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.71% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.61% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.61% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.61% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.61% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.61% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.61% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.61% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.61% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.61% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.61% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.61% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.61% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.61% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.61% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.61% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.61% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.61% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.18% (217,400B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.18% (217,400B) in 109 places, all below massif's threshold (01.00%) +| +->01.01% (185,096B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) + ->01.01% (185,096B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) + ->01.01% (185,096B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + ->01.01% (185,096B) in 3 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 44 3,556,131,391 19,925,752 16,862,395 3,063,357 0 +84.63% (16,862,395B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->25.89% (5,159,211B) in 2491 places, all below massif's threshold (01.00%) +| +->19.69% (3,924,200B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->19.69% (3,924,200B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->19.69% (3,924,200B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->19.69% (3,924,200B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->19.69% (3,924,200B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->19.55% (3,896,216B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->19.25% (3,835,360B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->19.25% (3,835,360B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->19.25% (3,835,360B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->18.79% (3,744,616B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->18.45% (3,675,872B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->18.45% (3,675,872B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->18.45% (3,675,872B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->18.45% (3,675,872B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->18.45% (3,675,872B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->18.45% (3,675,872B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->18.45% (3,675,872B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.35% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.46% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.31% (60,856B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.14% (27,984B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->07.59% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->05.08% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.08% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.08% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.08% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.08% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->05.08% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->05.08% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.41% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.41% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.41% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.41% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.41% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.41% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.41% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->03.41% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.67% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.67% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.67% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.67% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.67% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.67% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.67% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.67% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.58% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.58% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.58% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.58% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.58% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.93% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.10% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->03.03% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.89% (377,128B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.13% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.07% (213,340B) in 76 places, all below massif's threshold (01.00%) +| +->03.95% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.97% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.97% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.97% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.97% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.97% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.97% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.97% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.97% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.97% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.97% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.97% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.97% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.97% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.97% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.97% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.97% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.97% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.98% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.63% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.60% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.60% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.52% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.52% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.28% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.28% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.24% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.48% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.48% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.39% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.39% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.12% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.12% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.27% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.56% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.91% (579,032B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.76% (550,504B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.76% (550,504B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.14% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.90% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.68% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.68% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.30% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.29% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.29% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.20% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.20% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.84% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.13% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.13% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.13% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.13% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.13% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.13% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.13% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.13% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.13% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.13% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.72% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.36% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.09% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.38% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.22% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.58% (513,128B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.58% (513,128B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.75% (348,016B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.75% (348,016B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.75% (348,016B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.75% (348,016B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.73% (344,508B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.71% (339,852B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.71% (339,852B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.71% (339,852B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.69% (336,140B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.64% (327,416B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.64% (327,416B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.64% (327,416B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.64% (327,416B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.64% (327,416B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.64% (327,416B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.64% (327,416B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.04% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (4,656B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,508B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.83% (165,112B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.03% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.03% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->02.02% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->02.02% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.00% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.00% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.00% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.00% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.00% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.00% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.97% (392,408B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.97% (392,408B) in 51 places, all below massif's threshold (01.00%) +| +->01.58% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.58% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.58% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.58% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.58% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.58% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.58% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.58% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.58% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.58% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.58% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.58% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.58% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.58% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.58% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.48% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.48% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.48% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.48% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.48% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.48% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.48% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.48% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.48% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.48% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.48% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.48% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.21% (240,720B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.21% (240,720B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.21% (240,720B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.18% (235,688B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.18% (235,688B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.18% (235,688B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.15% (228,752B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.11% (222,088B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.11% (222,088B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.11% (222,088B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.11% (222,088B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.11% (222,088B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.11% (222,088B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.11% (222,088B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.11% (222,088B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.11% (222,088B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.11% (222,088B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (5,032B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.10% (218,760B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + ->01.10% (218,760B) in 109 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 45 3,609,673,081 20,943,656 17,812,515 3,131,141 0 +85.05% (17,812,515B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->24.07% (5,040,291B) in 2490 places, all below massif's threshold (01.00%) +| +->21.99% (4,604,736B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->21.99% (4,604,736B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->21.99% (4,604,736B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->21.99% (4,604,736B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->21.99% (4,604,736B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->21.84% (4,574,768B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->21.47% (4,497,032B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->21.47% (4,497,032B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->21.47% (4,497,032B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->21.04% (4,406,288B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->20.71% (4,337,544B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->20.71% (4,337,544B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->20.71% (4,337,544B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->20.71% (4,337,544B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->20.71% (4,337,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->20.71% (4,337,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->20.71% (4,337,544B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.33% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.43% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.37% (77,736B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.14% (29,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->07.22% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->04.84% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.84% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.84% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.84% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.84% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.84% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.84% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.25% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.25% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.25% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.25% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.25% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.25% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.25% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->03.25% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.59% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.59% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.59% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.59% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.59% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.59% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.59% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.50% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.89% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.90% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.88% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.80% (377,128B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.08% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->01.02% (213,340B) in 76 places, all below massif's threshold (01.00%) +| +->03.75% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.82% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.82% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.82% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.82% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.82% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.82% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.82% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.82% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.82% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.82% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.82% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.82% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.82% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.82% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.82% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.82% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.82% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.93% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.45% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.52% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.52% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.45% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.45% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.22% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.22% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.23% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.40% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.40% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.33% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.33% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.07% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.07% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.26% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.53% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.92% (612,528B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.79% (584,000B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.79% (584,000B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.14% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.84% (595,204B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->02.84% (595,204B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.95% (407,744B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.95% (407,744B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.95% (407,744B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (407,744B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.93% (404,236B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.91% (399,100B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.91% (399,100B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.91% (399,100B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.89% (395,388B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.85% (386,664B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.85% (386,664B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.85% (386,664B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.85% (386,664B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.85% (386,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.85% (386,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.85% (386,664B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.04% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (5,136B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (3,508B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.90% (187,460B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.76% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.55% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.55% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.18% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.18% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.18% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->02.09% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->02.09% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.75% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.07% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.07% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.07% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.07% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.07% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.07% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.07% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.07% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.07% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.07% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.68% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.34% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.09% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.37% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.21% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.95% (408,996B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.95% (408,996B) in 51 places, all below massif's threshold (01.00%) +| +->01.94% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.94% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.92% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.92% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.92% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.92% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.92% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.92% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.91% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.91% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.91% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.91% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.91% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.91% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.91% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.91% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.91% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.91% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.91% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.50% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.50% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.50% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.50% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.50% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.50% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.50% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.50% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.50% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.50% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.50% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.50% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.50% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.50% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.41% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.41% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.41% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.41% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.41% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.41% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.41% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.41% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.41% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.41% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.41% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.41% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.41% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.41% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.41% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.41% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.41% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.34% (281,112B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.34% (281,112B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.34% (281,112B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.31% (275,264B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (275,264B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (275,264B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.28% (268,328B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (261,664B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (261,664B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (261,664B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (261,664B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (261,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (261,664B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (261,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (261,664B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.25% (261,664B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.25% (261,664B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (5,848B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.05% (219,848B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.05% (219,848B) in 109 places, all below massif's threshold (01.00%) +| +->01.03% (214,864B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) + ->01.03% (214,864B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) + ->01.03% (214,864B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (214,864B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.02% (213,096B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.02% (213,096B) in 3 places, all below massif's threshold (01.00%) + | | | + | | ->00.01% (1,768B) in 1+ places, all below ms_print's threshold (01.00%) + | | + | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 46 3,669,546,213 22,053,496 18,863,463 3,190,033 0 +85.54% (18,863,463B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->23.85% (5,260,608B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->23.85% (5,260,608B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->23.85% (5,260,608B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->23.85% (5,260,608B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->23.85% (5,260,608B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->23.69% (5,225,024B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->23.29% (5,136,056B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->23.29% (5,136,056B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->23.29% (5,136,056B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->22.88% (5,045,312B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->22.57% (4,976,568B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->22.57% (4,976,568B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->22.57% (4,976,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->22.57% (4,976,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->22.57% (4,976,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->22.57% (4,976,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->22.57% (4,976,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.31% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.41% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.40% (88,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.16% (35,584B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->22.66% (4,998,363B) in 2489 places, all below massif's threshold (01.00%) +| +->06.86% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->04.59% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.59% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.59% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.59% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.59% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.59% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.59% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.08% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.08% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.08% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.08% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.08% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.08% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.08% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->03.08% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.51% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.51% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.51% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.51% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.51% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.51% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.51% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.42% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.42% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.42% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.42% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.42% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.84% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.70% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.74% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.71% (377,128B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.03% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->00.97% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.57% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.68% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.68% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.68% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.68% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.68% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.68% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.68% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.68% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.68% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.68% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.68% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.68% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.68% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.68% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.68% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.68% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.68% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.68% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.88% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.28% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.44% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.44% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.37% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.37% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.15% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.15% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.22% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.33% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.33% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.26% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.26% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.02% (224,075B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.02% (224,075B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.24% (53,514B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.51% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.10% (684,316B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->03.10% (684,316B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.15% (474,136B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.15% (474,136B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.15% (474,136B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (474,136B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.13% (469,644B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.10% (463,284B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.10% (463,284B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.10% (463,284B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.08% (459,572B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.04% (450,848B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.04% (450,848B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.04% (450,848B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.04% (450,848B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.04% (450,848B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.04% (450,848B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.04% (450,848B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.04% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (6,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (4,492B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.95% (210,180B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.93% (645,128B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.80% (616,600B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.80% (616,600B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.13% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.62% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.42% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.42% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.07% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.07% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.07% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.99% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.99% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.67% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.02% (224,576B) 0x13EDCF8D: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.02% (224,576B) 0x13FA04E5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.02% (224,576B) 0x13FA08F8: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.02% (224,576B) 0x13F73867: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | | ->01.02% (224,576B) 0xA44D911: KTextEditor::editor(char const*) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.02% (224,576B) 0xA4531E6: KTextEditor::EditorChooser::editor(QString const&, bool) (in /usr/lib/libktexteditor.so.4.3.0) +| | | | | | | | ->01.02% (224,576B) 0x642346A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.02% (224,576B) 0x6416890: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | | | | | | ->01.02% (224,576B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | | | | | | ->01.02% (224,576B) 0x504DABB: (below main) (libc-start.c:220) +| | | | | | | | +| | | | | | | ->00.65% (142,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | | +| | | | | | ->00.32% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.08% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.35% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.20% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.92% (424,480B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.92% (424,480B) in 51 places, all below massif's threshold (01.00%) +| +->01.84% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.84% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.82% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.82% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.82% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.82% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.82% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.82% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.81% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.81% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.81% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.81% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.81% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.81% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.81% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.81% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.81% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.81% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.81% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.45% (320,008B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.45% (320,008B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.45% (320,008B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.42% (313,480B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (313,480B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (313,480B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.39% (306,544B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (299,880B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (299,880B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (299,880B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (299,880B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (299,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (299,880B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (299,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (299,880B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.36% (299,880B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.36% (299,880B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (6,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.43% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.43% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.43% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.43% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.43% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.43% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.43% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.43% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.43% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.43% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.43% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.43% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.43% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.43% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.43% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.34% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.34% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.34% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.34% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.34% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.34% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.34% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.34% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.34% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.34% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.34% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.34% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.11% (244,608B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.11% (244,608B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.11% (244,608B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (244,608B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.10% (242,632B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.08% (237,744B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.08% (237,744B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.08% (237,744B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.05% (232,440B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.03% (227,448B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.03% (227,448B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.03% (227,448B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.03% (227,448B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.03% (227,448B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.03% (227,448B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.03% (227,448B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (4,888B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,976B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.04% (230,352B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.04% (230,352B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.04% (228,312B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.02% (224,496B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.02% (224,496B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.02% (224,496B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.01% (222,768B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.01% (222,768B) in 3 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (3,816B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.01% (2,040B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.00% (220,664B) 0x6F862EC: QHashData::rehash(int) (in /usr/lib/libQtCore.so.4.5.2) + ->01.00% (220,664B) in 109 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 47 3,728,216,667 22,502,648 19,282,827 3,219,821 0 +85.69% (19,282,827B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->25.17% (5,664,304B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->25.17% (5,664,304B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->25.17% (5,664,304B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->25.17% (5,664,304B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->25.17% (5,664,304B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->24.22% (5,450,296B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->23.83% (5,361,328B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->23.83% (5,361,328B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->23.83% (5,361,328B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->23.42% (5,270,584B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->23.12% (5,201,840B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->23.12% (5,201,840B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->23.12% (5,201,840B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->23.12% (5,201,840B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->23.12% (5,201,840B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->23.12% (5,201,840B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->23.12% (5,201,840B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.31% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.40% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.40% (88,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.95% (214,008B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->22.73% (5,113,799B) in 2490 places, all below massif's threshold (01.00%) +| +->06.72% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->04.50% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.50% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.50% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.50% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.50% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.50% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.50% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.02% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.02% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.02% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.02% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.02% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->03.02% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->03.02% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->03.02% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.48% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.48% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.48% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.48% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.48% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.48% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.48% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.40% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.40% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.40% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.40% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.40% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.82% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.63% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.68% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.68% (377,128B) in 22 places, all below massif's threshold (01.00%) +| | | +| | ->01.00% (226,072B) 0x6FAC0FC: QString::fromUtf8(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.00% (226,072B) in 96 places, all below massif's threshold (01.00%) +| | +| ->00.95% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.49% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.63% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.63% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.63% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.63% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.63% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.63% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.63% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.63% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.63% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.63% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.63% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.63% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.63% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.63% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.63% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.63% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.63% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.87% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.26% (734,188B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->03.26% (734,188B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (499,512B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.22% (499,512B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.22% (499,512B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (499,512B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.14% (481,960B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.11% (475,600B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (475,600B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.11% (475,600B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.10% (471,888B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.06% (463,164B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.06% (463,164B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.06% (463,164B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.06% (463,164B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.06% (463,164B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.06% (463,164B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.06% (463,164B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.04% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (6,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (17,552B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.04% (234,676B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.04% (234,676B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.04% (234,676B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (234,676B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.04% (234,676B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.22% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.41% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.41% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.35% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.35% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.13% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.13% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.22% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.31% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.31% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.23% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.23% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.23% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.07% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.50% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.94% (661,800B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.81% (633,272B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.81% (633,272B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.13% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.57% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.37% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.37% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.03% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->02.03% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->02.03% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.95% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.95% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.63% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.63% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.32% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.08% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.34% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.20% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.91% (430,640B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.91% (430,640B) in 51 places, all below massif's threshold (01.00%) +| +->01.80% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.80% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.79% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.79% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.78% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.78% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.78% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.78% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.78% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.78% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.78% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.78% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.78% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.78% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.78% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.78% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.78% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.78% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.78% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.50% (337,824B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.50% (337,824B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.50% (337,824B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.47% (330,888B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.47% (330,888B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.47% (330,888B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.44% (323,952B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.41% (317,288B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (317,288B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (317,288B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (317,288B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (317,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (317,288B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (317,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (317,288B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.41% (317,288B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.41% (317,288B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.40% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.40% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.40% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.40% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.40% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.40% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.40% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.40% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.40% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.40% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.40% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.40% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.40% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.40% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.40% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.31% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) +| ->01.31% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| ->01.31% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| ->01.31% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.31% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.31% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.31% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.31% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.31% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.31% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.31% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.31% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | ->01.31% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.31% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.31% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.31% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.15% (258,232B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.15% (258,232B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.15% (258,232B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (258,232B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.11% (250,744B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.09% (245,752B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.09% (245,752B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.09% (245,752B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.07% (240,448B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (235,456B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.05% (235,456B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.05% (235,456B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.05% (235,456B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.05% (235,456B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.05% (235,456B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.05% (235,456B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (7,488B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.10% (247,104B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) + ->01.10% (247,104B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) + ->01.06% (237,792B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) + | ->01.04% (233,976B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.04% (233,976B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.04% (233,976B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.03% (232,248B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.02% (228,624B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + | | | | ->01.02% (228,624B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + | | | | ->01.02% (228,624B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | | ->01.02% (228,624B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | | ->01.02% (228,624B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | | ->01.02% (228,624B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | | ->01.02% (228,624B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | | ->01.02% (228,624B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | | | | ->01.02% (228,624B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | | | | ->01.02% (228,624B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | | | | + | | | ->00.02% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) + | | | + | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) + | | + | ->00.02% (3,816B) in 1+ places, all below ms_print's threshold (01.00%) + | + ->00.04% (9,312B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 48 3,819,160,780 24,134,856 20,810,087 3,324,769 0 +86.22% (20,810,087B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->27.93% (6,740,984B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->27.93% (6,740,984B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->27.93% (6,740,984B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->27.93% (6,740,984B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->27.93% (6,740,984B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->27.03% (6,523,936B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->26.61% (6,423,160B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->26.61% (6,423,160B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->26.61% (6,423,160B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->26.24% (6,332,416B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->25.95% (6,263,672B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->25.95% (6,263,672B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->25.95% (6,263,672B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->25.95% (6,263,672B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->25.95% (6,263,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->25.95% (6,263,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->25.95% (6,263,672B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.28% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.38% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.42% (100,776B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.90% (217,048B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->21.44% (5,175,447B) in 2490 places, all below massif's threshold (01.00%) +| +->06.27% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->04.20% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.20% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.20% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.20% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.20% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->04.20% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->04.20% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.82% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.82% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.82% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.82% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.38% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.38% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.38% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.38% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.38% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.38% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.38% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.30% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.30% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.30% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.30% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.30% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.77% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.68% (888,268B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->03.68% (888,268B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.44% (589,652B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.44% (589,652B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.44% (589,652B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.44% (589,652B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.37% (571,608B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.34% (564,516B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.34% (564,516B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.34% (564,516B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.32% (560,804B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.29% (552,080B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.29% (552,080B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.29% (552,080B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.29% (552,080B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.29% (552,080B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.29% (552,080B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.29% (552,080B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.04% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,092B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (18,044B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.24% (298,616B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.24% (298,616B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.24% (298,616B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (298,616B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.19% (287,208B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.17% (281,516B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.17% (281,516B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.17% (281,516B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.17% (281,516B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.15% (277,596B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.15% (277,596B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.15% (277,596B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.15% (277,596B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.15% (277,596B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.15% (277,596B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.15% (277,596B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.02% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,692B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.05% (11,408B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.38% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.50% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.50% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.88% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.26% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.45% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.45% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.45% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.45% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.45% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.45% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.45% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.45% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.45% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.45% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.45% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.45% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.45% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.45% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.45% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.45% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.45% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.81% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.00% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.32% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.32% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.26% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.26% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.05% (254,518B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.05% (254,518B) in 11 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.20% (48,495B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.22% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.22% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.15% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.15% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.15% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.07% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.46% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.96% (713,640B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.84% (685,112B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.84% (685,112B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.12% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.40% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.21% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.21% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.90% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.89% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.89% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.82% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.82% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.52% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.52% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.29% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.08% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.32% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.18% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.88% (453,812B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.88% (453,812B) in 51 places, all below massif's threshold (01.00%) +| +->01.68% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.68% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.67% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.67% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.66% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.66% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.66% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.66% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.66% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.66% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.66% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.66% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.66% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.66% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.66% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.66% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.66% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.66% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.66% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.65% (398,616B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.65% (398,616B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.65% (398,616B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.62% (390,456B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.62% (390,456B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.62% (390,456B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.59% (383,520B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.56% (376,856B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.56% (376,856B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.56% (376,856B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.56% (376,856B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.56% (376,856B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.56% (376,856B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.56% (376,856B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.56% (376,856B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.56% (376,856B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.56% (376,856B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (8,160B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.30% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.30% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.30% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.30% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.30% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.30% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.30% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.30% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.30% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.30% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.30% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.30% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.30% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.30% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.30% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.26% (304,720B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.26% (304,720B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.26% (304,720B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (304,720B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.23% (297,128B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.21% (291,200B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.21% (291,200B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.21% (291,200B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.18% (285,896B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.16% (280,904B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.16% (280,904B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.16% (280,904B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.16% (280,904B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.16% (280,904B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.16% (280,904B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.16% (280,904B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.02% (5,928B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (7,592B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.24% (299,664B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.24% (299,664B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.20% (290,208B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.18% (285,792B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.18% (285,792B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.18% (285,792B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.18% (284,064B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.16% (280,440B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.16% (280,440B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.16% (280,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.16% (280,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.16% (280,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.16% (280,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.16% (280,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.16% (280,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.16% (280,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.02% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (4,416B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,456B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.22% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.22% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.22% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.22% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.22% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.22% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.22% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.22% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.22% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.22% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.22% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.22% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.22% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.22% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.22% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.22% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.22% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.22% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 49 3,921,655,551 25,884,992 22,450,447 3,434,545 0 +86.73% (22,450,447B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->30.62% (7,925,640B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->30.62% (7,925,640B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->30.62% (7,925,640B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->30.62% (7,925,640B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->30.62% (7,925,640B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->29.76% (7,704,568B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->29.29% (7,581,272B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.29% (7,581,272B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.29% (7,581,272B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->28.94% (7,490,528B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->28.67% (7,421,784B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->28.67% (7,421,784B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->28.67% (7,421,784B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->28.67% (7,421,784B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->28.67% (7,421,784B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->28.67% (7,421,784B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->28.67% (7,421,784B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.27% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.35% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.48% (123,296B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (221,072B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->20.22% (5,232,743B) in 2490 places, all below massif's threshold (01.00%) +| +->05.84% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.91% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.91% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.91% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.91% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.91% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.91% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.91% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.63% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.63% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.63% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.63% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.63% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.29% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.29% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.29% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.29% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.29% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.29% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.29% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.29% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.21% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.21% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.21% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.21% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.21% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.72% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.00% (1,036,540B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.00% (1,036,540B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.69% (695,032B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.69% (695,032B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.69% (695,032B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.69% (695,032B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.61% (676,496B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.58% (667,940B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.58% (667,940B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.58% (667,940B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.57% (664,228B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.53% (655,504B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.53% (655,504B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.53% (655,504B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.53% (655,504B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.53% (655,504B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.53% (655,504B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.53% (655,504B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,556B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (18,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.32% (341,508B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.32% (341,508B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.32% (341,508B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.32% (341,508B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.28% (330,100B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (323,532B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (323,532B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (323,532B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (323,532B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.23% (319,612B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.23% (319,612B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.23% (319,612B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.23% (319,612B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.23% (319,612B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.23% (319,612B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.23% (319,612B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.02% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,408B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.15% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.33% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.33% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.82% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.04% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.29% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.29% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.29% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.29% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.28% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.28% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.28% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.28% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.28% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.28% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.28% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.28% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.28% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.28% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.28% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.28% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.28% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.75% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.97% (769,824B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.86% (741,296B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.86% (741,296B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.11% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.80% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.23% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.23% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.17% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.17% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.17% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.14% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.14% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.07% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.07% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.07% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.43% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.23% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.06% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.06% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.77% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.77% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.77% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.69% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.69% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.42% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.42% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.27% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.30% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.17% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.85% (478,236B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.85% (478,236B) in 51 places, all below massif's threshold (01.00%) +| +->01.80% (464,712B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.80% (464,712B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.80% (464,712B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.76% (455,192B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.76% (455,192B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.76% (455,192B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.73% (448,256B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.71% (441,592B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.71% (441,592B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.71% (441,592B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.71% (441,592B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.71% (441,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.71% (441,592B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.71% (441,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.71% (441,592B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.71% (441,592B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.71% (441,592B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,520B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.57% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.57% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.55% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.55% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.55% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.55% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.55% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.55% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.54% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.54% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.54% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.54% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.54% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.54% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.54% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.54% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.54% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.54% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.37% (355,160B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.37% (355,160B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.37% (355,160B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.37% (355,160B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.34% (347,256B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (340,288B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (340,288B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (340,288B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.29% (334,984B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.27% (329,992B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.27% (329,992B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.27% (329,992B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.27% (329,992B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.27% (329,992B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.27% (329,992B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.27% (329,992B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (6,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (7,904B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.36% (352,656B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.36% (352,656B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.32% (342,936B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.30% (337,752B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (337,752B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (337,752B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (336,024B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (332,400B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.28% (332,400B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.28% (332,400B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.28% (332,400B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.28% (332,400B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.28% (332,400B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.28% (332,400B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.28% (332,400B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.28% (332,400B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,184B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,720B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.22% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.22% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.22% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.22% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.22% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.22% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.22% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.22% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.22% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.22% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.22% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.14% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.14% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.14% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.14% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.14% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.14% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.14% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.14% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.14% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.14% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.14% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.14% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.14% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.14% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.14% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.14% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.14% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.14% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 50 3,937,060,367 26,144,768 22,694,435 3,450,333 0 +86.80% (22,694,435B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->31.00% (8,105,440B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->31.00% (8,105,440B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.00% (8,105,440B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.00% (8,105,440B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->31.00% (8,105,440B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->30.16% (7,884,368B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->29.68% (7,759,000B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.68% (7,759,000B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.68% (7,759,000B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.33% (7,668,256B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->29.07% (7,599,512B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.07% (7,599,512B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.07% (7,599,512B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.07% (7,599,512B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.07% (7,599,512B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.07% (7,599,512B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.07% (7,599,512B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.26% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.35% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.48% (125,368B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (221,072B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->20.05% (5,240,943B) in 2490 places, all below massif's threshold (01.00%) +| +->05.79% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.88% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.88% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.88% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.88% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.88% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.88% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.88% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.60% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.60% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.60% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.60% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.60% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.60% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.60% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.60% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.27% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.27% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.27% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.27% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.27% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.27% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.27% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.27% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.20% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.71% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.04% (1,055,532B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.04% (1,055,532B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.71% (707,548B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.71% (707,548B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.71% (707,548B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.71% (707,548B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.64% (689,012B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.60% (680,216B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.60% (680,216B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.60% (680,216B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.59% (676,504B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.55% (667,780B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.55% (667,780B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.55% (667,780B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.55% (667,780B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.55% (667,780B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.55% (667,780B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.55% (667,780B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,796B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (18,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.33% (347,984B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (347,984B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (347,984B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.33% (347,984B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.29% (336,576B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.26% (330,008B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (330,008B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (330,008B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (330,008B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.25% (326,088B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (326,088B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (326,088B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (326,088B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (326,088B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (326,088B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (326,088B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,408B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.12% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.31% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.31% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.82% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.01% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.26% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.26% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.26% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.26% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.26% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.26% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.26% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.26% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.26% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.26% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.26% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.26% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.26% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.26% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.26% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.26% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.26% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.75% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.97% (777,544B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.86% (749,016B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.86% (749,016B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.11% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.77% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.22% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.22% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.16% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.16% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.16% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.12% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.12% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.06% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.06% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.06% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.43% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.21% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.04% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.04% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.75% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.75% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.75% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.68% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.68% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.41% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.41% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.27% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.29% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.17% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.85% (482,456B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.85% (482,456B) in 51 places, all below massif's threshold (01.00%) +| +->01.82% (475,048B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.82% (475,048B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.82% (475,048B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.78% (465,392B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.78% (465,392B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.78% (465,392B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.75% (458,456B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.73% (451,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.73% (451,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.73% (451,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.73% (451,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.73% (451,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.73% (451,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.73% (451,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.73% (451,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.73% (451,792B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.73% (451,792B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,656B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.55% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.55% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.54% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.53% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.53% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.53% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.53% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.53% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.53% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.53% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.53% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.53% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.53% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.53% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.53% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.39% (363,064B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (363,064B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (363,064B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.39% (363,064B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (355,160B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.33% (348,088B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.33% (348,088B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.33% (348,088B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (342,784B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.29% (337,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.29% (337,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.29% (337,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.29% (337,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.29% (337,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.29% (337,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.29% (337,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,072B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (7,904B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.37% (359,472B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.37% (359,472B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.34% (349,752B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.32% (344,496B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (344,496B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (344,496B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (342,768B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.30% (339,144B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.30% (339,144B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.30% (339,144B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.30% (339,144B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.30% (339,144B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.30% (339,144B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.30% (339,144B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.30% (339,144B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.30% (339,144B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,256B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,720B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.20% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.20% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.20% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.20% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.20% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.20% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.20% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.20% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.20% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.20% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.13% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.13% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.13% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.13% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.13% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.13% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.13% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.13% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.13% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.13% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.13% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.13% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.13% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.13% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.13% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.13% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.13% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.13% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 51 3,953,979,622 26,406,304 22,938,195 3,468,109 0 +86.87% (22,938,195B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->31.34% (8,276,184B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->31.34% (8,276,184B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.34% (8,276,184B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.34% (8,276,184B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->31.34% (8,276,184B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->30.49% (8,052,576B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->30.01% (7,924,624B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.01% (7,924,624B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.01% (7,924,624B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.67% (7,833,880B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->29.41% (7,765,136B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.41% (7,765,136B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.41% (7,765,136B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.41% (7,765,136B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.41% (7,765,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.41% (7,765,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.41% (7,765,136B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.26% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.34% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.48% (127,952B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (223,608B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.88% (5,248,515B) in 2490 places, all below massif's threshold (01.00%) +| +->05.73% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.84% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.84% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.84% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.84% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.84% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.84% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.84% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.58% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.58% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.58% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.58% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.58% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.58% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.58% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.58% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.26% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.26% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.26% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.26% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.26% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.26% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.26% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.26% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.19% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.70% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.09% (1,081,036B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.09% (1,081,036B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.76% (728,880B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.76% (728,880B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.76% (728,880B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.76% (728,880B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.69% (709,320B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.65% (700,032B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.65% (700,032B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.65% (700,032B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.64% (696,320B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.60% (687,596B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.60% (687,596B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.60% (687,596B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.60% (687,596B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.60% (687,596B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.60% (687,596B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.60% (687,596B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (9,288B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (19,560B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.33% (352,156B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (352,156B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (352,156B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.33% (352,156B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.29% (340,620B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.27% (334,052B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.27% (334,052B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.27% (334,052B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.27% (334,052B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.25% (330,132B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (330,132B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (330,132B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (330,132B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (330,132B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (330,132B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (330,132B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.09% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.28% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.28% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.81% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (786,432B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.87% (757,904B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.87% (757,904B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.11% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.24% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.24% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.24% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.24% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.24% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.24% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.24% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.24% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.24% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.24% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.24% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.24% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.24% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.24% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.24% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.24% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.24% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.74% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.74% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.20% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.20% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.15% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.15% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.15% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.11% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.11% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.05% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.05% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.05% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.42% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.19% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.02% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.02% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.73% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.73% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.73% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.66% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.66% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.39% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.39% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.27% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.29% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.17% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.84% (486,644B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.84% (486,644B) in 51 places, all below massif's threshold (01.00%) +| +->01.84% (485,656B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.84% (485,656B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.84% (485,656B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.80% (475,728B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.80% (475,728B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.80% (475,728B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.78% (468,792B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.75% (462,128B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.75% (462,128B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.75% (462,128B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.75% (462,128B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.75% (462,128B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.75% (462,128B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.75% (462,128B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.75% (462,128B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.75% (462,128B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.75% (462,128B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.03% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (9,928B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.53% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.53% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.52% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.52% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.52% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.51% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.51% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.51% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.51% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.51% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.51% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.51% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.51% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.51% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.51% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.51% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.41% (371,280B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.41% (371,280B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.41% (371,280B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.41% (371,280B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (363,168B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.35% (355,888B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.35% (355,888B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.35% (355,888B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.33% (350,584B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (345,592B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.31% (345,592B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.31% (345,592B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.31% (345,592B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.31% (345,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.31% (345,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.31% (345,592B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,280B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,112B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.39% (367,512B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.39% (367,512B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.35% (357,504B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.33% (352,104B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (352,104B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (352,104B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (350,376B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (346,752B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (346,752B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (346,752B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.31% (346,752B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.31% (346,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.31% (346,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.31% (346,752B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.31% (346,752B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.31% (346,752B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,008B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.19% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.19% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.19% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.19% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.19% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.19% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.19% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.19% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.19% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.19% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.12% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.12% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.12% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.12% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.12% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.12% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.12% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.12% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.12% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.12% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.12% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.12% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.12% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.12% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.12% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.12% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.12% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.12% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 52 3,969,284,092 26,670,408 23,187,283 3,483,125 0 +86.94% (23,187,283B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->31.63% (8,434,936B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->31.63% (8,434,936B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.63% (8,434,936B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.63% (8,434,936B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->31.63% (8,434,936B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->30.78% (8,208,768B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->30.29% (8,078,752B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.29% (8,078,752B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.29% (8,078,752B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->29.95% (7,988,008B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->29.69% (7,919,264B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.69% (7,919,264B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->29.69% (7,919,264B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.69% (7,919,264B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.69% (7,919,264B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->29.69% (7,919,264B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->29.69% (7,919,264B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.26% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.34% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.49% (130,016B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (226,168B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.82% (5,286,095B) in 2490 places, all below massif's threshold (01.00%) +| +->05.67% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.80% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.80% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.80% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.80% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.80% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.80% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.80% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.55% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.55% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.55% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.55% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.55% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.55% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.55% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.55% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.25% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.25% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.25% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.25% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.25% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.25% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.25% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.25% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.18% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.70% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.12% (1,097,812B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.12% (1,097,812B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.79% (743,128B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.79% (743,128B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.79% (743,128B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.79% (743,128B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.71% (723,076B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.68% (713,548B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.68% (713,548B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.68% (713,548B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.66% (709,836B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.63% (701,112B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.63% (701,112B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.63% (701,112B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.63% (701,112B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.63% (701,112B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.63% (701,112B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.63% (701,112B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (9,528B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.08% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.33% (354,684B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (354,684B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (354,684B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.33% (354,684B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.29% (343,148B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.26% (336,580B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (336,580B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (336,580B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (336,580B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.25% (332,660B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (332,660B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (332,660B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (332,660B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (332,660B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (332,660B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (332,660B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.06% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.26% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.26% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.80% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (794,080B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.87% (765,552B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.87% (765,552B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.11% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.95% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.22% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.22% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.22% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.22% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.22% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.22% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.22% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.22% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.22% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.22% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.22% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.22% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.22% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.22% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.22% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.22% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.73% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.71% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.19% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.19% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.14% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.14% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.14% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.10% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.10% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.04% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.04% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.04% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.42% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.17% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.00% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->02.00% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.72% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.71% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.71% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.64% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.64% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.38% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.38% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.27% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.29% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.17% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.86% (496,128B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.86% (496,128B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.86% (496,128B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.82% (486,064B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.82% (486,064B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.82% (486,064B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.80% (479,128B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.77% (472,464B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.77% (472,464B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.77% (472,464B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.77% (472,464B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.77% (472,464B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.77% (472,464B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.77% (472,464B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.77% (472,464B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.77% (472,464B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.77% (472,464B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,064B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.84% (491,000B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.84% (491,000B) in 51 places, all below massif's threshold (01.00%) +| +->01.52% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.52% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.51% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.51% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.50% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.50% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.50% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.50% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.50% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.50% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.50% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.50% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.50% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.50% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.50% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.42% (379,288B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.42% (379,288B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.42% (379,288B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.42% (379,288B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (371,072B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (363,688B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (363,688B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (363,688B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.34% (358,384B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.33% (353,392B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.33% (353,392B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.33% (353,392B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.33% (353,392B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.33% (353,392B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.33% (353,392B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.33% (353,392B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,384B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,216B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.40% (373,008B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.40% (373,008B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.36% (362,856B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (357,384B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.34% (357,384B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.34% (357,384B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (355,656B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (352,032B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.32% (352,032B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.32% (352,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.32% (352,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.32% (352,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.32% (352,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.32% (352,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.32% (352,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.32% (352,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,152B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.18% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.18% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.18% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.18% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.18% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.18% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.18% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.18% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.18% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.18% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.11% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.11% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.11% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.11% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.11% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.11% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.11% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.11% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.11% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.11% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.11% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.11% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.11% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.11% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.11% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.11% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.11% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.11% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 53 3,984,480,775 26,938,824 23,439,371 3,499,453 0 +87.01% (23,439,371B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->31.98% (8,616,288B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->31.98% (8,616,288B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.98% (8,616,288B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->31.98% (8,616,288B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->31.98% (8,616,288B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->31.15% (8,390,120B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->30.65% (8,258,032B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.65% (8,258,032B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.65% (8,258,032B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.32% (8,167,288B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->30.06% (8,098,544B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.06% (8,098,544B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.06% (8,098,544B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.06% (8,098,544B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.06% (8,098,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.06% (8,098,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.06% (8,098,544B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.26% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.34% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.49% (132,088B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.84% (226,168B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.67% (5,299,223B) in 2490 places, all below massif's threshold (01.00%) +| +->05.61% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.76% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.76% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.76% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.76% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.76% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.76% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.76% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.52% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.52% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.52% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.52% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.52% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.52% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.52% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.52% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.24% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.24% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.24% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.24% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.24% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.24% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.24% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.24% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.17% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.69% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.15% (1,116,880B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.15% (1,116,880B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.82% (758,372B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.82% (758,372B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.82% (758,372B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.82% (758,372B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.74% (738,320B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.70% (728,552B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.70% (728,552B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.70% (728,552B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.69% (724,840B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.66% (716,116B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.66% (716,116B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.66% (716,116B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.66% (716,116B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.66% (716,116B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.66% (716,116B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.66% (716,116B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (9,768B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.33% (358,508B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (358,508B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.33% (358,508B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.33% (358,508B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.29% (346,972B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.26% (340,404B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (340,404B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (340,404B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (340,404B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.25% (336,484B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (336,484B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.25% (336,484B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (336,484B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (336,484B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.25% (336,484B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.25% (336,484B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.03% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.24% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.24% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.79% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (802,192B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.87% (773,664B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.87% (773,664B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.11% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.92% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.20% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.20% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.20% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.20% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.19% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.19% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.19% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.19% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.19% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.19% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.19% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.19% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.19% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.19% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.19% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.19% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.19% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.72% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.69% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.18% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.18% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.12% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.12% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.12% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.09% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.09% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.03% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.03% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.03% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.41% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.15% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.98% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.98% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.70% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.70% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.70% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.63% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.63% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.36% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.36% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.26% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.28% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.88% (507,280B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.88% (507,280B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.88% (507,280B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.84% (496,944B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.84% (496,944B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.84% (496,944B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.82% (490,008B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.79% (483,344B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.79% (483,344B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.79% (483,344B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.79% (483,344B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.79% (483,344B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.79% (483,344B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.79% (483,344B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.79% (483,344B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.79% (483,344B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.79% (483,344B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,336B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.84% (495,508B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.84% (495,508B) in 51 places, all below massif's threshold (01.00%) +| +->01.50% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.50% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.49% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.49% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.49% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.49% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.49% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.49% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.48% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.48% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.48% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.48% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.48% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.48% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.48% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.48% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.48% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.48% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.48% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.44% (387,816B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.44% (387,816B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.44% (387,816B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.44% (387,816B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.41% (379,600B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.38% (372,008B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (372,008B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (372,008B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (366,704B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.34% (361,712B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.34% (361,712B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.34% (361,712B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.34% (361,712B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.34% (361,712B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.34% (361,712B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.34% (361,712B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,592B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,216B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.41% (379,248B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.41% (379,248B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.37% (369,096B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.35% (363,552B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (363,552B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (363,552B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.34% (361,824B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.33% (358,200B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.33% (358,200B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.33% (358,200B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.33% (358,200B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.33% (358,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.33% (358,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.33% (358,200B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.33% (358,200B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.33% (358,200B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,152B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.17% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.17% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.17% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.17% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.17% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.17% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.17% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.17% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.17% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.17% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.17% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.17% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.17% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.10% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.10% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.10% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.10% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.10% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.10% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.10% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.10% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.10% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.10% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.10% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.10% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.10% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.10% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.10% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.10% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.10% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.10% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 54 4,001,199,841 27,209,496 23,692,367 3,517,129 0 +87.07% (23,692,367B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->32.36% (8,803,656B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->32.36% (8,803,656B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->32.36% (8,803,656B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->32.36% (8,803,656B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->32.36% (8,803,656B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->31.51% (8,572,872B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->31.01% (8,438,760B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.01% (8,438,760B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.01% (8,438,760B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->30.68% (8,348,016B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->30.43% (8,279,272B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.43% (8,279,272B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.43% (8,279,272B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.43% (8,279,272B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.43% (8,279,272B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.43% (8,279,272B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.43% (8,279,272B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.25% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.33% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.49% (134,112B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (230,784B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.50% (5,306,219B) in 2490 places, all below massif's threshold (01.00%) +| +->05.56% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.72% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.72% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.72% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.50% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.50% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.50% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.50% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.50% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.50% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.50% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.50% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.22% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.22% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.22% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.22% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.22% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.22% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.15% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.68% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.18% (1,136,388B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.18% (1,136,388B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.83% (770,248B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.83% (770,248B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.83% (770,248B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.83% (770,248B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.76% (750,196B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.72% (740,188B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.72% (740,188B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.72% (740,188B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.71% (736,476B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.67% (727,752B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.67% (727,752B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.67% (727,752B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.67% (727,752B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.67% (727,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.67% (727,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.67% (727,752B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (10,008B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.35% (366,140B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.35% (366,140B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.35% (366,140B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.35% (366,140B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.30% (354,476B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.28% (347,908B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (347,908B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (347,908B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (347,908B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.26% (343,988B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.26% (343,988B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.26% (343,988B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.26% (343,988B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.26% (343,988B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.26% (343,988B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.26% (343,988B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (11,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.00% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.22% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.22% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.78% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (810,432B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.87% (781,904B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.87% (781,904B) in 271 places, all below massif's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.89% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.17% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.17% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.17% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.17% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.17% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.17% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.17% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.17% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.17% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.17% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.17% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.17% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.17% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.17% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.17% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.17% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.17% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.72% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.66% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.17% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.17% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.11% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.11% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.11% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.08% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.08% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.02% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.02% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.02% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.41% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.12% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.96% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.96% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.68% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.68% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.68% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.61% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.61% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.35% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.35% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.26% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.28% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.91% (518,568B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.91% (518,568B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.91% (518,568B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.87% (507,960B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.87% (507,960B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.87% (507,960B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.84% (501,024B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.82% (494,360B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.82% (494,360B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.82% (494,360B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.82% (494,360B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.82% (494,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.82% (494,360B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.82% (494,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.82% (494,360B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.82% (494,360B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.82% (494,360B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,608B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.84% (499,928B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.84% (499,928B) in 51 places, all below massif's threshold (01.00%) +| +->01.49% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.49% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.48% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.48% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.47% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.47% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.47% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.47% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.47% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.47% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.47% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.47% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.47% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.47% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.47% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.47% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.47% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.47% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.47% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.46% (396,344B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.46% (396,344B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.46% (396,344B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.46% (396,344B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (388,024B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (380,224B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (380,224B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (380,224B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (374,920B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.36% (369,928B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.36% (369,928B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.36% (369,928B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.36% (369,928B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.36% (369,928B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.36% (369,928B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.36% (369,928B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,800B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,320B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.42% (385,896B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.42% (385,896B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.38% (375,720B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.36% (370,104B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (370,104B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (370,104B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (368,376B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.34% (364,752B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.34% (364,752B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.34% (364,752B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.34% (364,752B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.34% (364,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.34% (364,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.34% (364,752B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.34% (364,752B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.34% (364,752B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,176B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.16% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.16% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.16% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.16% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.16% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.16% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.16% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.16% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.16% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.16% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.16% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.09% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.09% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.09% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.09% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.09% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.09% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.09% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.09% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.09% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.09% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.09% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.09% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.09% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.09% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.09% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.09% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.09% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.09% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 55 4,018,211,687 27,483,552 23,950,931 3,532,621 0 +87.15% (23,950,931B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->32.73% (8,994,688B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->32.73% (8,994,688B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->32.73% (8,994,688B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->32.73% (8,994,688B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->32.73% (8,994,688B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->31.87% (8,759,288B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->31.38% (8,624,688B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.38% (8,624,688B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.38% (8,624,688B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.05% (8,533,944B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->30.80% (8,465,200B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.80% (8,465,200B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->30.80% (8,465,200B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.80% (8,465,200B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.80% (8,465,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->30.80% (8,465,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->30.80% (8,465,200B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.25% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.33% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.49% (134,600B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.86% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.33% (5,313,535B) in 2490 places, all below massif's threshold (01.00%) +| +->05.50% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.69% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.69% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.69% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.69% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.69% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.69% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.69% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.47% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.47% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.47% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.47% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.47% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.47% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.47% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.47% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.21% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.21% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.21% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.21% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.21% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.21% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.21% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.21% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.14% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.68% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.22% (1,161,000B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.22% (1,161,000B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.86% (786,304B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.86% (786,304B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.86% (786,304B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.86% (786,304B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.79% (766,252B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.75% (756,244B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.75% (756,244B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.75% (756,244B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.74% (752,532B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.71% (743,808B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.71% (743,808B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.71% (743,808B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.71% (743,808B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.71% (743,808B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.71% (743,808B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.71% (743,808B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (10,008B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.36% (374,696B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (374,696B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (374,696B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.36% (374,696B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.32% (362,008B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.29% (355,312B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (355,312B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (355,312B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (355,312B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.28% (351,392B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.28% (351,392B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.28% (351,392B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.28% (351,392B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.28% (351,392B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.28% (351,392B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.28% (351,392B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,696B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.05% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (818,440B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.87% (789,912B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.87% (514,664B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.00% (275,248B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (275,248B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (275,248B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.97% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.19% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.19% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.78% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.86% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.15% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.15% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.15% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.15% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.15% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.15% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.15% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.15% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.15% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.15% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.15% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.15% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.15% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.15% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.71% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.63% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.16% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.16% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.10% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.10% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.10% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.07% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.07% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.01% (277,589B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.01% (277,589B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.01% (277,589B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.06% (16,381B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.41% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.10% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.94% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.94% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.66% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.66% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.66% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.60% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.60% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.34% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.34% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.26% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.28% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.92% (527,680B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.92% (527,680B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.92% (527,680B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.88% (516,936B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.88% (516,936B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.88% (516,936B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.86% (510,000B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.83% (503,336B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.83% (503,336B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.83% (503,336B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.83% (503,336B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.83% (503,336B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.83% (503,336B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.83% (503,336B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.83% (503,336B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.83% (503,336B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.83% (503,336B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,744B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.83% (503,324B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.83% (503,324B) in 51 places, all below massif's threshold (01.00%) +| +->01.47% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.47% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.47% (403,416B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.47% (403,416B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.47% (403,416B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.47% (403,416B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.44% (394,992B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (387,088B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (387,088B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (387,088B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.39% (381,784B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.37% (376,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.37% (376,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.37% (376,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.37% (376,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.37% (376,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.37% (376,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.37% (376,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (7,904B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.46% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.46% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.46% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.45% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.45% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.45% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.45% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.45% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.45% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.45% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.43% (393,912B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.43% (393,912B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.40% (383,472B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.37% (377,832B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.37% (377,832B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.37% (377,832B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.37% (376,104B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (372,480B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (372,480B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (372,480B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.36% (372,480B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.36% (372,480B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.36% (372,480B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.36% (372,480B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.36% (372,480B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.36% (372,480B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (5,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.15% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.15% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.15% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.15% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.15% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.15% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.15% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.15% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.15% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.15% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.08% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.08% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.08% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.08% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.08% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.08% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.08% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.08% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.08% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.08% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.08% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.08% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.08% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.08% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.08% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.08% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.08% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.08% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 56 4,035,400,888 27,759,208 24,208,827 3,550,381 0 +87.21% (24,208,827B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->33.07% (9,178,864B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->33.07% (9,178,864B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.07% (9,178,864B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.07% (9,178,864B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->33.07% (9,178,864B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->32.22% (8,943,464B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->31.71% (8,802,176B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.71% (8,802,176B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.71% (8,802,176B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.38% (8,711,432B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->31.13% (8,642,688B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.13% (8,642,688B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.13% (8,642,688B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.13% (8,642,688B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.13% (8,642,688B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.13% (8,642,688B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.13% (8,642,688B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.25% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.33% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.51% (141,288B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.85% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.18% (5,323,839B) in 2490 places, all below massif's threshold (01.00%) +| +->05.45% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.65% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.65% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.65% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.65% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.65% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.65% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.65% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.45% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.45% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.45% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.45% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.45% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.20% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.20% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.20% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.20% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.20% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.20% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.13% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.67% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.26% (1,183,772B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.26% (1,183,772B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.91% (806,680B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.91% (806,680B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.91% (806,680B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.91% (806,680B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.83% (786,628B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.79% (775,636B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.79% (775,636B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.79% (775,636B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.78% (771,924B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.75% (763,200B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.75% (763,200B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.75% (763,200B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.75% (763,200B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.75% (763,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.75% (763,200B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.75% (763,200B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (10,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.36% (377,092B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (377,092B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (377,092B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.36% (377,092B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (364,404B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.29% (357,708B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (357,708B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (357,708B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (357,708B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.27% (353,788B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.27% (353,788B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.27% (353,788B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (353,788B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (353,788B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (353,788B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (353,788B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,696B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.05% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (827,696B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.88% (799,168B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.87% (517,984B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.01% (281,184B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (281,184B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (281,184B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.94% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.17% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.17% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.77% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.83% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.13% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.13% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.13% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.13% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.13% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.13% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.13% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.13% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.13% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.13% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.13% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.13% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.13% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.13% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.13% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.70% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.61% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.15% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.15% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.09% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.09% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.09% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.06% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.06% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.06% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.40% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.08% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.92% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.92% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.65% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.65% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.65% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.58% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.58% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.32% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.32% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.26% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.28% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.94% (538,968B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.94% (538,968B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (538,968B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.90% (527,952B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.90% (527,952B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.90% (527,952B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.88% (521,016B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.85% (514,352B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.85% (514,352B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.85% (514,352B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.85% (514,352B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.85% (514,352B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.85% (514,352B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.85% (514,352B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.85% (514,352B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.85% (514,352B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.85% (514,352B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,016B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.83% (507,616B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.83% (507,616B) in 51 places, all below massif's threshold (01.00%) +| +->01.48% (412,048B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.48% (412,048B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.48% (412,048B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (412,048B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (403,624B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (395,512B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (395,512B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (395,512B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (390,208B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.39% (385,216B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.39% (385,216B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.39% (385,216B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.39% (385,216B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.39% (385,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.39% (385,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.39% (385,216B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,112B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.46% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.46% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.45% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.45% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.45% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.44% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.44% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.44% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.44% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.44% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.44% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.44% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.44% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.44% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.44% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.44% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.44% (401,088B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.44% (401,088B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.41% (390,648B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.39% (384,600B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (384,600B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (384,600B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (382,872B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (379,248B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.37% (379,248B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.37% (379,248B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.37% (379,248B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.37% (379,248B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.37% (379,248B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.37% (379,248B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.37% (379,248B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.37% (379,248B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,048B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.13% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.13% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.13% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.13% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.13% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.13% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.13% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.13% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.13% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.13% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.06% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.06% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.06% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.06% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.06% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.06% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.06% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.06% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.06% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.06% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.06% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.06% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 57 4,052,794,998 28,036,840 24,468,603 3,568,237 0 +87.27% (24,468,603B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->33.40% (9,363,592B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->33.40% (9,363,592B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.40% (9,363,592B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.40% (9,363,592B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->33.40% (9,363,592B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->32.56% (9,128,192B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->32.04% (8,983,848B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.04% (8,983,848B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.04% (8,983,848B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->31.72% (8,893,104B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->31.47% (8,824,360B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.47% (8,824,360B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.47% (8,824,360B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.47% (8,824,360B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.47% (8,824,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.47% (8,824,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.47% (8,824,360B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.25% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.32% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.51% (144,344B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.84% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.02% (5,333,727B) in 2490 places, all below massif's threshold (01.00%) +| +->05.39% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.61% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.61% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.61% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.61% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.61% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.61% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.61% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.43% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.43% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.43% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.43% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.43% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.43% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.43% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.43% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.19% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.19% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.19% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.19% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.19% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.19% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.12% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.66% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.31% (1,208,272B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.31% (1,208,272B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.95% (828,296B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.95% (828,296B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.95% (828,296B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.95% (828,296B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.88% (808,244B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.84% (796,760B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.84% (796,760B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.84% (796,760B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.83% (793,048B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.80% (784,324B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.80% (784,324B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.80% (784,324B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.80% (784,324B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.80% (784,324B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.80% (784,324B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.80% (784,324B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (11,484B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.36% (379,976B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (379,976B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.36% (379,976B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.36% (379,976B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (367,288B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.29% (360,592B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (360,592B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (360,592B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (360,592B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.27% (356,672B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.27% (356,672B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.27% (356,672B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (356,672B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (356,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.27% (356,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.27% (356,672B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,696B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.05% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.99% (837,000B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.88% (808,472B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.86% (521,432B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.02% (287,040B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.02% (287,040B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.02% (287,040B) in 2 places, all below massif's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.91% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.15% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.15% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.76% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.80% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.11% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.11% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.11% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.11% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.11% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.11% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.11% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.11% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.11% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.11% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.11% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.11% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.11% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.11% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.11% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.11% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.11% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.11% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.69% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.58% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.13% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.13% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.08% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.08% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.08% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.05% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.05% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.05% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.40% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.06% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.90% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.90% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.63% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.63% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.63% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.56% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.56% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.31% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.31% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.25% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.27% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.96% (550,120B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.96% (550,120B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.96% (550,120B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.92% (538,968B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.92% (538,968B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.92% (538,968B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.90% (532,032B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.87% (525,368B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.87% (525,368B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.87% (525,368B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.87% (525,368B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.87% (525,368B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.87% (525,368B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.87% (525,368B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.87% (525,368B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.87% (525,368B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.87% (525,368B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,152B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (511,548B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (511,548B) in 51 places, all below massif's threshold (01.00%) +| +->01.50% (420,472B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.50% (420,472B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.50% (420,472B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (420,472B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.47% (412,048B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.44% (403,832B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.44% (403,832B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.44% (403,832B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (398,528B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.40% (393,536B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.40% (393,536B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.40% (393,536B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.40% (393,536B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.40% (393,536B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.40% (393,536B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.40% (393,536B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,216B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.46% (408,936B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.46% (408,936B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.42% (398,496B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.40% (392,280B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (392,280B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (392,280B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (390,552B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.38% (386,928B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (386,928B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (386,928B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.38% (386,928B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.38% (386,928B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.38% (386,928B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.38% (386,928B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.38% (386,928B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.38% (386,928B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,216B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.45% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.45% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.43% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.43% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.43% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.42% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.42% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.42% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.42% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.42% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.42% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.42% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.12% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.12% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.12% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.12% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.12% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.12% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.12% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.12% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.12% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.12% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.05% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.05% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.05% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.05% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.05% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.05% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.05% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.05% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.05% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.05% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.05% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.05% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 58 4,069,798,911 28,319,168 24,734,511 3,584,657 0 +87.34% (24,734,511B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->33.75% (9,558,488B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->33.75% (9,558,488B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.75% (9,558,488B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->33.75% (9,558,488B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->33.75% (9,558,488B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->32.92% (9,323,088B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->32.41% (9,178,256B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.41% (9,178,256B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.41% (9,178,256B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.09% (9,087,512B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->31.85% (9,018,768B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.85% (9,018,768B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->31.85% (9,018,768B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.85% (9,018,768B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.85% (9,018,768B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->31.85% (9,018,768B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->31.85% (9,018,768B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.24% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.32% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.51% (144,832B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.83% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.86% (5,341,807B) in 2490 places, all below massif's threshold (01.00%) +| +->05.34% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.58% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.58% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.58% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.58% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.58% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.58% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.58% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.40% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.40% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.40% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.40% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.40% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.40% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.40% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.40% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.18% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.18% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.18% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.18% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.18% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.18% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.11% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.66% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.36% (1,233,512B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.36% (1,233,512B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.97% (842,328B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.97% (842,328B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.97% (842,328B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.97% (842,328B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.90% (822,276B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.86% (810,792B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.86% (810,792B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.86% (810,792B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.85% (807,080B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.82% (798,356B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.82% (798,356B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.82% (798,356B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.82% (798,356B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.82% (798,356B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.82% (798,356B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.82% (798,356B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (11,484B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.38% (391,184B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (391,184B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (391,184B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (391,184B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (378,496B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (371,800B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (371,800B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (371,800B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (371,800B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.30% (367,880B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (367,880B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (367,880B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (367,880B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (367,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (367,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (367,880B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,696B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.98% (845,232B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.88% (816,704B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.85% (524,104B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.03% (292,600B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.03% (292,600B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (285,296B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.01% (285,296B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.03% (7,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.88% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.13% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.13% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.75% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.78% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.09% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.09% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.09% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.09% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.09% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.09% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.09% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.09% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.09% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.09% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.09% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.09% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.09% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.09% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.09% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.09% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.09% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.09% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.69% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.56% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.12% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.12% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.07% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.07% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.07% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.04% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.04% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.04% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.39% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.04% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.89% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.89% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.62% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.61% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.61% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.55% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.55% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.30% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.30% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.25% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.27% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.16% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.98% (559,776B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->01.98% (559,776B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->01.98% (559,776B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.94% (548,352B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.94% (548,352B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.94% (548,352B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.91% (541,416B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.89% (534,752B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.89% (534,752B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.89% (534,752B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.89% (534,752B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.89% (534,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.89% (534,752B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.89% (534,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.89% (534,752B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.89% (534,752B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.89% (534,752B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,424B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (515,224B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (515,224B) in 51 places, all below massif's threshold (01.00%) +| +->01.51% (427,960B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.51% (427,960B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.51% (427,960B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.51% (427,960B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.48% (419,536B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (411,112B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.45% (411,112B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.45% (411,112B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.43% (405,808B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.42% (400,816B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.42% (400,816B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.42% (400,816B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.42% (400,816B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.42% (400,816B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.42% (400,816B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.42% (400,816B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.47% (417,576B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.47% (417,576B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.44% (407,136B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (400,896B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (400,896B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (400,896B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.41% (399,168B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (395,544B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (395,544B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (395,544B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (395,544B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (395,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (395,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (395,544B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.40% (395,544B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.40% (395,544B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,240B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.43% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.43% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.42% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.42% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.41% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.41% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.41% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.41% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.41% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.11% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.11% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.11% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.11% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.11% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.11% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.11% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.11% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.11% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.11% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.04% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.04% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.04% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.04% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.04% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.04% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.04% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.04% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.04% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.04% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.04% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.04% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.04% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.04% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.04% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.04% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.04% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.04% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 59 4,086,815,318 28,604,112 24,998,943 3,605,169 0 +87.40% (24,998,943B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->34.10% (9,752,576B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->34.10% (9,752,576B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.10% (9,752,576B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.10% (9,752,576B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->34.10% (9,752,576B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->33.27% (9,517,176B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->32.75% (9,367,736B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.75% (9,367,736B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.75% (9,367,736B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.43% (9,276,992B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->32.19% (9,208,248B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.19% (9,208,248B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.19% (9,208,248B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.19% (9,208,248B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.19% (9,208,248B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.19% (9,208,248B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.19% (9,208,248B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.24% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.32% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.52% (149,440B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.82% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.72% (5,353,447B) in 2490 places, all below massif's threshold (01.00%) +| +->05.29% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.54% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.54% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.54% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.54% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.54% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.54% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.54% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.38% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.38% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.38% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.38% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.38% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.38% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.38% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.38% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.16% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.16% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.16% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.16% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.16% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.16% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.10% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.65% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.36% (1,247,676B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.36% (1,247,676B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->02.98% (852,336B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.98% (852,336B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.98% (852,336B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.98% (852,336B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.91% (832,284B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.87% (820,560B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.87% (820,560B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.87% (820,560B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.86% (816,848B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.83% (808,124B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.83% (808,124B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.83% (808,124B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.83% (808,124B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.83% (808,124B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.83% (808,124B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.83% (808,124B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (11,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.38% (395,340B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (395,340B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (395,340B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (395,340B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (382,652B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (375,828B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (375,828B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (375,828B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.31% (375,828B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.30% (371,908B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (371,908B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (371,908B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (371,908B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (371,908B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (371,908B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (371,908B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,824B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.99% (854,248B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.89% (825,720B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.85% (528,192B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.04% (297,528B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.04% (297,528B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (290,224B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.01% (290,224B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.03% (7,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.85% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.11% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.11% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.75% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.75% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.07% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.07% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.07% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.07% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.07% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.07% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.07% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.07% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.07% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.07% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.07% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.07% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.07% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.07% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.07% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.07% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.07% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.07% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.68% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.53% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.11% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.11% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.06% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.06% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.06% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.03% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.03% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.03% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.39% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.02% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.87% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.60% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.60% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.60% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.53% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.53% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.28% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.28% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.25% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.07% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.27% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.00% (573,104B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.00% (573,104B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.00% (573,104B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.96% (561,408B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.96% (561,408B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.96% (561,408B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.94% (554,472B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.92% (547,808B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.92% (547,808B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.92% (547,808B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.92% (547,808B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.92% (547,808B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.92% (547,808B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.92% (547,808B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.92% (547,808B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.92% (547,808B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.92% (547,808B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,696B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (521,596B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (521,596B) in 51 places, all below massif's threshold (01.00%) +| +->01.53% (438,048B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.53% (438,048B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.53% (438,048B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.53% (438,048B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (429,624B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.47% (420,992B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.47% (420,992B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.47% (420,992B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.45% (415,688B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.44% (410,696B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.44% (410,696B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.44% (410,696B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.44% (410,696B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.44% (410,696B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.44% (410,696B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.44% (410,696B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.48% (423,312B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.48% (423,312B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.44% (412,872B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (406,512B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (406,512B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (406,512B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (404,784B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (401,160B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (401,160B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (401,160B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (401,160B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (401,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.40% (401,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.40% (401,160B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.40% (401,160B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.40% (401,160B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.42% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.42% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.41% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.41% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.40% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.40% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.40% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.40% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.40% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.40% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.40% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.40% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.10% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.10% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.10% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.10% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.10% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.10% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.10% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.10% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.10% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.10% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.03% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.03% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.03% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.03% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.03% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.03% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.03% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.03% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.03% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.03% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.03% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.03% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.03% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.03% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.03% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.03% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 60 4,104,273,302 28,890,288 25,266,995 3,623,293 0 +87.46% (25,266,995B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->34.44% (9,950,752B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->34.44% (9,950,752B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.44% (9,950,752B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.44% (9,950,752B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->34.44% (9,950,752B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->33.63% (9,715,352B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->33.09% (9,559,776B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.09% (9,559,776B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.09% (9,559,776B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->32.78% (9,469,032B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->32.54% (9,400,288B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.54% (9,400,288B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.54% (9,400,288B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.54% (9,400,288B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.54% (9,400,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.54% (9,400,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.54% (9,400,288B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.24% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.31% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.54% (155,576B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.81% (235,400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.56% (5,363,198B) in 2490 places, all below massif's threshold (01.00%) +| +->05.24% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.51% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.51% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.51% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.51% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.51% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.51% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.51% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.35% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.35% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.35% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.35% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.35% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.35% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.35% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.35% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.15% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.15% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.15% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.15% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.15% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.15% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.09% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.64% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.38% (1,266,408B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.38% (1,266,408B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.00% (865,500B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.00% (865,500B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.00% (865,500B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.00% (865,500B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.93% (845,448B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.89% (833,724B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.89% (833,724B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.89% (833,724B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.87% (830,012B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.84% (821,288B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.84% (821,288B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.84% (821,288B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.84% (821,288B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.84% (821,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.84% (821,288B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.84% (821,288B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (11,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,052B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.39% (400,908B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (400,908B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (400,908B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.39% (400,908B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (388,220B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (381,268B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (381,268B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (381,268B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (381,268B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (377,348B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (377,348B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (377,348B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (377,348B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (377,348B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (377,348B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (377,348B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,952B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.99% (862,648B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.89% (834,120B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.84% (531,664B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.05% (302,456B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.05% (302,456B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.02% (295,152B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.00% (290,288B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.00% (290,288B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.00% (290,288B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.00% (290,288B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.02% (4,864B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.83% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.09% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.09% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.74% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.72% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.05% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.05% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.05% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.05% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.05% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.05% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.05% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.05% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.05% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.05% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.05% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.05% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.05% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.05% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.05% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.05% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.05% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.05% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.67% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.50% (723,663B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.10% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.10% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.05% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.05% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.05% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.02% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.02% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.02% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.39% (111,838B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.03% (585,208B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.03% (585,208B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.03% (585,208B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->01.98% (573,376B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.98% (573,376B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.98% (573,376B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.96% (566,440B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.94% (559,776B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.94% (559,776B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.94% (559,776B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.94% (559,776B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.94% (559,776B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.94% (559,776B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.94% (559,776B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.94% (559,776B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.94% (559,776B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.94% (559,776B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,832B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.00% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.85% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.85% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.58% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.58% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.58% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.52% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.52% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.27% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.27% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.25% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.26% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (526,664B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (526,664B) in 51 places, all below massif's threshold (01.00%) +| +->01.55% (447,408B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.55% (447,408B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.55% (447,408B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.55% (447,408B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (438,984B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.49% (430,248B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.49% (430,248B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.49% (430,248B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.47% (424,944B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.45% (419,952B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.45% (419,952B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.45% (419,952B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.45% (419,952B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.45% (419,952B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.45% (419,952B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.45% (419,952B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,736B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.49% (429,672B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.49% (429,672B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.45% (419,232B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.43% (412,848B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (412,848B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (412,848B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (411,120B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (407,496B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (407,496B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (407,496B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.41% (407,496B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.41% (407,496B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.41% (407,496B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.41% (407,496B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.41% (407,496B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.41% (407,496B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,384B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,440B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.40% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.40% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.39% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.39% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.39% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.39% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.38% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.38% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.38% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.38% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.38% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.38% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.38% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.38% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.38% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.38% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.09% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.09% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.09% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.09% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.09% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.09% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.09% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.09% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.09% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.09% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.02% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.02% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.02% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.02% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.02% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.02% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.02% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.02% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.02% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.02% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.02% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.02% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 61 4,123,878,664 29,179,888 25,536,899 3,642,989 0 +87.52% (25,536,899B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->34.77% (10,145,384B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->34.77% (10,145,384B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.77% (10,145,384B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->34.77% (10,145,384B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->34.77% (10,145,384B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->33.95% (9,906,384B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->33.41% (9,749,280B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.41% (9,749,280B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.41% (9,749,280B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.10% (9,658,536B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->32.86% (9,589,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.86% (9,589,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->32.86% (9,589,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.86% (9,589,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.86% (9,589,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->32.86% (9,589,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->32.86% (9,589,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.24% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.31% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.54% (157,104B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.82% (239,000B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.42% (5,375,611B) in 2490 places, all below massif's threshold (01.00%) +| +->05.18% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.47% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.47% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.47% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.47% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.47% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.47% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.47% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.33% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.33% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.33% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.33% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.33% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.33% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.33% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.33% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.14% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.14% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.14% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.14% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.14% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.14% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.14% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.14% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.08% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.64% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.40% (1,284,576B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.40% (1,284,576B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.01% (879,648B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.01% (879,648B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.01% (879,648B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.01% (879,648B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.94% (859,104B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.90% (847,140B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.90% (847,140B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.90% (847,140B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.89% (843,428B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.86% (834,704B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.86% (834,704B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.86% (834,704B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.86% (834,704B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.86% (834,704B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.86% (834,704B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.86% (834,704B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (11,964B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.39% (404,928B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (404,928B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (404,928B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.39% (404,928B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (392,240B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (385,288B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (385,288B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (385,288B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (385,288B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (381,368B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (381,368B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (381,368B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (381,368B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (381,368B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (381,368B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (381,368B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,952B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.99% (872,192B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.89% (843,664B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.84% (535,544B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.06% (308,120B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.06% (308,120B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.03% (300,688B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.01% (295,768B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.01% (295,768B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.01% (295,768B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.01% (294,048B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.01% (294,048B) in 3 places, all below massif's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (4,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,432B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.80% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.07% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.07% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.73% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.69% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.03% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.03% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.03% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.03% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.03% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.03% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.03% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.03% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.03% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.03% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.03% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.03% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.03% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.03% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.03% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.67% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.48% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.09% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.09% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.04% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.04% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.04% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | | +| | | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.01% (293,970B) 0x5FFFA90: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.01% (293,970B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.01% (293,970B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.38% (111,737B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.05% (598,264B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.05% (598,264B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.05% (598,264B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.01% (586,160B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (586,160B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (586,160B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.99% (579,224B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.96% (572,560B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.96% (572,560B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.96% (572,560B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.96% (572,560B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.96% (572,560B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.96% (572,560B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.96% (572,560B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.96% (572,560B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.96% (572,560B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.96% (572,560B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (12,104B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.98% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.83% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.83% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.57% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.57% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.57% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.50% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.50% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.26% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.26% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.24% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.26% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (532,400B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (532,400B) in 51 places, all below massif's threshold (01.00%) +| +->01.57% (457,288B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.57% (457,288B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.57% (457,288B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.57% (457,288B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (448,760B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.51% (439,816B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.51% (439,816B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.51% (439,816B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.49% (434,512B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.47% (429,520B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.47% (429,520B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.47% (429,520B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.47% (429,520B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.47% (429,520B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.47% (429,520B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.47% (429,520B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (8,944B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,528B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.50% (436,248B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.50% (436,248B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.46% (425,592B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.44% (419,136B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.44% (419,136B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.44% (419,136B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (417,408B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (413,784B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (413,784B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (413,784B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.42% (413,784B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.42% (413,784B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.42% (413,784B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.42% (413,784B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.42% (413,784B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.42% (413,784B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,456B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,656B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.39% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.39% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.38% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.38% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.38% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.38% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.37% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.37% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.37% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.37% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.37% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.37% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.37% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.37% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.08% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.08% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.08% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.08% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.08% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.08% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.08% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.08% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.08% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.08% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.01% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.01% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.01% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.01% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.01% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.01% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.01% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.01% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.01% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.01% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.01% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.01% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 62 4,143,586,458 29,473,288 25,809,791 3,663,497 0 +87.57% (25,809,791B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->35.07% (10,337,208B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->35.07% (10,337,208B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.07% (10,337,208B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.07% (10,337,208B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->35.07% (10,337,208B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->34.26% (10,098,208B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->33.72% (9,938,520B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.72% (9,938,520B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.72% (9,938,520B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.41% (9,847,776B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->33.18% (9,779,032B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.18% (9,779,032B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.18% (9,779,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.18% (9,779,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.18% (9,779,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.18% (9,779,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.18% (9,779,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.23% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.31% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.54% (159,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.81% (239,000B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.27% (5,385,603B) in 2490 places, all below massif's threshold (01.00%) +| +->05.13% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.44% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.44% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.44% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.31% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.31% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.31% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.31% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.31% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.31% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.31% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.31% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.13% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.13% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.13% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.13% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.13% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.13% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.07% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.07% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.07% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.07% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.07% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.63% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.44% (1,309,452B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.44% (1,309,452B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.06% (901,784B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.06% (901,784B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.06% (901,784B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.06% (901,784B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.99% (881,240B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.95% (869,036B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.95% (869,036B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.95% (869,036B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.94% (865,324B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.91% (856,600B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.91% (856,600B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.91% (856,600B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.91% (856,600B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.91% (856,600B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.91% (856,600B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.91% (856,600B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,204B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.38% (407,668B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (407,668B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.38% (407,668B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.38% (407,668B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.34% (394,980B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (388,028B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (388,028B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (388,028B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (388,028B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.30% (384,108B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (384,108B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.30% (384,108B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (384,108B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (384,108B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.30% (384,108B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.30% (384,108B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (6,952B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.99% (882,376B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.90% (853,848B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.83% (539,184B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.07% (314,664B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.07% (314,664B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.04% (307,232B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.03% (302,256B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.03% (302,256B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.03% (302,256B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.02% (300,536B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.01% (297,896B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.01% (297,896B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.01% (297,896B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.01% (297,896B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.01% (297,896B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.01% (297,896B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.01% (297,896B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (4,976B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,432B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.77% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.05% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.05% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.72% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.67% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->02.01% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.01% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.01% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.01% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.01% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.01% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.01% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.01% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.01% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.01% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.01% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->02.01% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->02.01% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.66% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.45% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.38% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.08% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.08% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.03% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.03% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.03% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | +| | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.07% (611,048B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.07% (611,048B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.07% (611,048B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.03% (598,672B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (598,672B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (598,672B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.01% (591,736B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.99% (585,072B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.99% (585,072B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.99% (585,072B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.99% (585,072B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.99% (585,072B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.99% (585,072B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.99% (585,072B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.99% (585,072B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.99% (585,072B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.99% (585,072B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (12,376B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.96% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.81% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.81% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.55% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.55% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.55% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.49% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.49% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.25% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.25% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.24% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.26% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (537,544B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (537,544B) in 51 places, all below massif's threshold (01.00%) +| +->01.59% (467,168B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.59% (467,168B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.59% (467,168B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.59% (467,168B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.56% (458,640B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (449,488B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (449,488B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (449,488B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.51% (444,184B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.49% (439,192B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.49% (439,192B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.49% (439,192B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.49% (439,192B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.49% (439,192B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.49% (439,192B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.49% (439,192B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (9,152B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,528B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.51% (444,456B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.51% (444,456B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.47% (433,800B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.45% (427,248B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (427,248B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (427,248B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.44% (425,520B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.43% (421,896B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.43% (421,896B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.43% (421,896B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.43% (421,896B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.43% (421,896B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.43% (421,896B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.43% (421,896B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.43% (421,896B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.43% (421,896B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,552B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,656B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.38% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.38% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.36% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.36% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.36% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.36% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.36% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.36% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.36% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.36% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.36% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.07% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.07% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.07% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.07% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.07% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.07% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.07% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.07% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.07% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.07% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.07% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.07% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.07% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.07% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.07% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.00% (295,568B) 0x13EA81EC: ??? (in /usr/lib/kde4/katepart.so) + ->01.00% (295,568B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) + ->01.00% (295,568B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) + ->01.00% (295,568B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) + | ->01.00% (295,568B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) + | ->01.00% (295,568B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.00% (295,568B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.00% (295,568B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.00% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.00% (295,568B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | ->01.00% (295,568B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.00% (295,568B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | ->01.00% (295,568B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | ->01.00% (295,568B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | ->01.00% (295,568B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.00% (295,568B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.00% (295,568B) 0x7049530: QEventLoop::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | ->01.00% (295,568B) 0x7049902: QEventLoop::exec(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 63 4,162,504,496 29,768,816 26,087,919 3,680,897 0 +87.64% (26,087,919B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->35.38% (10,533,512B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->35.38% (10,533,512B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.38% (10,533,512B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.38% (10,533,512B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->35.38% (10,533,512B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->34.58% (10,294,512B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->34.02% (10,128,720B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.02% (10,128,720B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.02% (10,128,720B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->33.72% (10,037,976B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->33.49% (9,969,232B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.49% (9,969,232B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.49% (9,969,232B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.49% (9,969,232B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.49% (9,969,232B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.49% (9,969,232B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.49% (9,969,232B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.23% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.30% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.56% (165,792B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.80% (239,000B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->19.13% (5,695,043B) in 2491 places, all below massif's threshold (01.00%) +| +->05.08% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.40% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.40% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.40% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.40% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.40% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.40% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.40% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.28% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.28% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.28% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.28% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.28% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.12% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.12% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.12% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.12% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.12% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.12% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.05% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.05% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.05% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.05% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.05% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.62% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.48% (1,333,516B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.48% (1,333,516B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.09% (918,584B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.09% (918,584B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.09% (918,584B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.09% (918,584B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.02% (898,040B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.98% (885,836B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.98% (885,836B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.98% (885,836B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.96% (882,124B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.93% (873,400B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.93% (873,400B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.93% (873,400B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.93% (873,400B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.93% (873,400B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.93% (873,400B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.93% (873,400B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,204B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.39% (414,932B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (414,932B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.39% (414,932B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.39% (414,932B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.35% (402,244B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (394,140B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (394,140B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (394,140B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (394,140B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.31% (390,220B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (390,220B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.31% (390,220B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (390,220B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (390,220B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.31% (390,220B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.31% (390,220B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,104B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.00% (891,888B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.90% (863,360B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.82% (542,704B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.08% (320,656B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.08% (320,656B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.05% (313,224B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.03% (307,952B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.03% (307,952B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.03% (307,952B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.03% (306,232B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.02% (303,592B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.02% (303,592B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.02% (303,592B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.02% (303,592B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.02% (303,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.02% (303,592B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.02% (303,592B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,272B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,432B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.10% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.74% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.03% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.03% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.72% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.64% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.99% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.99% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.99% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.99% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.99% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.99% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.99% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.99% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.99% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.99% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.99% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.99% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.99% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.99% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.99% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.99% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.99% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.99% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.65% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.43% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.36% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.07% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.07% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.02% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.02% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.02% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | +| | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.09% (623,016B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.09% (623,016B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.09% (623,016B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.05% (610,368B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.05% (610,368B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.05% (610,368B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.03% (603,432B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.00% (596,768B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.00% (596,768B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.00% (596,768B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (596,768B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (596,768B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (596,768B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.00% (596,768B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.00% (596,768B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.00% (596,768B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.00% (596,768B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (12,648B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.94% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.79% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.79% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.54% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.54% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.54% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.47% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.47% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.23% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.23% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.24% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.26% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (542,472B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (542,472B) in 51 places, all below massif's threshold (01.00%) +| +->01.60% (476,320B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.60% (476,320B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.60% (476,320B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.60% (476,320B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.57% (467,792B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.54% (458,432B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.54% (458,432B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.54% (458,432B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.52% (453,128B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.51% (448,136B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.51% (448,136B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.51% (448,136B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.51% (448,136B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.51% (448,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.51% (448,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.51% (448,136B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (9,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,528B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.52% (452,784B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.52% (452,784B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.49% (442,128B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.46% (435,024B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (435,024B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (435,024B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.46% (433,296B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.44% (429,672B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.44% (429,672B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.44% (429,672B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.44% (429,672B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.44% (429,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.44% (429,672B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.44% (429,672B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.44% (429,672B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.44% (429,672B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,104B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,656B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.36% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.36% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.35% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.35% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.35% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.35% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.34% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.34% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.34% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.34% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.34% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.34% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.34% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.34% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.34% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.34% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.34% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.06% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + ->01.06% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.06% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.06% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.06% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.06% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.06% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.06% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + | ->01.06% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.06% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + | ->01.06% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + | ->01.06% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + | ->01.06% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + | ->01.06% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.06% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 64 4,182,724,357 30,068,240 26,366,343 3,701,897 0 +87.69% (26,366,343B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->35.69% (10,730,456B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->35.69% (10,730,456B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.69% (10,730,456B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.69% (10,730,456B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->35.69% (10,730,456B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->34.89% (10,491,456B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->34.30% (10,314,400B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.30% (10,314,400B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.30% (10,314,400B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.00% (10,223,656B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->33.77% (10,154,912B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.77% (10,154,912B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->33.77% (10,154,912B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.77% (10,154,912B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.77% (10,154,912B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->33.77% (10,154,912B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->33.77% (10,154,912B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.23% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.30% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.59% (177,056B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.79% (239,000B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.96% (5,701,355B) in 2491 places, all below massif's threshold (01.00%) +| +->05.03% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.37% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.37% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.37% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.37% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.37% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.37% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.37% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.26% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.26% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.26% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.26% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.26% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.11% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.11% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.11% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.11% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.11% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.11% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.04% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.62% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.54% (1,363,676B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.54% (1,363,676B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.10% (930,860B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.10% (930,860B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.10% (930,860B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.10% (930,860B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.03% (910,316B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.99% (898,112B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.99% (898,112B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.99% (898,112B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->02.97% (894,400B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.95% (885,676B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.95% (885,676B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.95% (885,676B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.95% (885,676B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.95% (885,676B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.95% (885,676B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.95% (885,676B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,204B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (20,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.44% (432,816B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.44% (432,816B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.44% (432,816B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.44% (432,816B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.40% (420,128B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.37% (411,768B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (411,768B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (411,768B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.37% (411,768B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.36% (407,848B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.36% (407,848B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.36% (407,848B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.36% (407,848B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.36% (407,848B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.36% (407,848B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.36% (407,848B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.00% (901,928B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.90% (873,400B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.82% (546,064B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.09% (327,336B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.09% (327,336B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.06% (319,904B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.05% (314,536B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.05% (314,536B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.05% (314,536B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.04% (312,816B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.03% (310,176B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.03% (310,176B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.03% (310,176B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.03% (310,176B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.03% (310,176B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.03% (310,176B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.03% (310,176B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,368B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,432B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.72% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.01% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->02.01% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.71% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.62% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.97% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.97% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.97% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.97% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.97% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.97% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.97% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.97% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.97% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.97% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.97% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.97% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.97% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.97% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.97% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.97% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.97% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.97% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.65% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.41% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.35% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.06% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.06% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.01% (303,013B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.01% (303,013B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.01% (303,013B) in 5 places, all below massif's threshold (01.00%) +| | | +| | ->00.05% (14,842B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.11% (634,440B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.11% (634,440B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.11% (634,440B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.07% (621,520B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.07% (621,520B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.07% (621,520B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.04% (614,584B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.02% (607,920B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.02% (607,920B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.02% (607,920B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.02% (607,920B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.02% (607,920B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.02% (607,920B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.02% (607,920B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.02% (607,920B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.02% (607,920B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.02% (607,920B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (12,920B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.92% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.78% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.78% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.52% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.52% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.52% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.46% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.46% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.22% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.22% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.24% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.25% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (546,768B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (546,768B) in 51 places, all below massif's threshold (01.00%) +| +->01.61% (485,056B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.61% (485,056B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.61% (485,056B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.61% (485,056B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.58% (476,528B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.55% (466,960B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.55% (466,960B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.55% (466,960B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.54% (461,656B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.52% (456,664B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.52% (456,664B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.52% (456,664B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.52% (456,664B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.52% (456,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.52% (456,664B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.52% (456,664B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (9,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,528B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.54% (463,296B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (463,296B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.51% (452,640B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.48% (445,416B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.48% (445,416B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.48% (445,416B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.48% (443,688B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.46% (440,064B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.46% (440,064B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.46% (440,064B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.46% (440,064B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.46% (440,064B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.46% (440,064B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.46% (440,064B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.46% (440,064B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.46% (440,064B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,224B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (10,656B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.35% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.35% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.34% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.34% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.33% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.33% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.33% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.33% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.33% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.33% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.33% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.33% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.33% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.33% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.33% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.33% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.05% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + ->01.05% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.05% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.05% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.05% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.05% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.05% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.05% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + | ->01.05% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.05% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + | ->01.05% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + | ->01.05% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + | ->01.05% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + | ->01.05% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.05% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 65 4,204,207,700 30,369,136 26,647,603 3,721,533 0 +87.75% (26,647,603B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->35.99% (10,929,752B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->35.99% (10,929,752B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.99% (10,929,752B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->35.99% (10,929,752B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->35.99% (10,929,752B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->35.19% (10,686,632B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->34.60% (10,509,088B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.60% (10,509,088B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.60% (10,509,088B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.31% (10,418,344B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->34.08% (10,349,600B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.08% (10,349,600B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.08% (10,349,600B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.08% (10,349,600B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.08% (10,349,600B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.08% (10,349,600B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.08% (10,349,600B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.23% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.30% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.58% (177,544B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.80% (243,120B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->17.80% (5,407,087B) in 2490 places, all below massif's threshold (01.00%) +| +->04.98% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.34% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.34% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.34% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.34% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.34% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.34% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.34% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.24% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.24% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.24% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.24% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.24% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.10% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.10% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.10% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.10% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.10% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.10% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.03% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.61% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.59% (1,392,676B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.59% (1,392,676B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.12% (947,956B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.12% (947,956B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.12% (947,956B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.12% (947,956B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.05% (926,388B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.01% (914,184B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.01% (914,184B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.01% (914,184B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.00% (910,472B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->02.97% (901,748B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.97% (901,748B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->02.97% (901,748B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.97% (901,748B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.97% (901,748B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->02.97% (901,748B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->02.97% (901,748B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,204B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.46% (444,720B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.46% (444,720B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.46% (444,720B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.46% (444,720B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.42% (432,032B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.40% (423,672B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (423,672B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (423,672B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.40% (423,672B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.38% (419,752B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.38% (419,752B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.38% (419,752B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.38% (419,752B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.38% (419,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.38% (419,752B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.38% (419,752B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,360B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.00% (911,848B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.91% (883,320B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.81% (549,520B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.10% (333,800B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.10% (333,800B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.07% (326,112B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.06% (320,704B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.06% (320,704B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.06% (320,704B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.05% (318,984B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.04% (316,344B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.04% (316,344B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.04% (316,344B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.04% (316,344B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.04% (316,344B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.04% (316,344B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.04% (316,344B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,408B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.69% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.99% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.99% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.70% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.59% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.95% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.95% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.95% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.95% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.95% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.95% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.95% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.95% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.95% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.95% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.95% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.95% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.95% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.95% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.95% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.95% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.95% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.95% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.64% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.38% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.34% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.05% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.05% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.05% (317,855B) in 3 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.13% (645,592B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.13% (645,592B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.13% (645,592B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.08% (632,536B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.08% (632,536B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.08% (632,536B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.06% (625,600B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.04% (618,936B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.04% (618,936B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.04% (618,936B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.04% (618,936B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.04% (618,936B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.04% (618,936B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.04% (618,936B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.04% (618,936B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.04% (618,936B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.04% (618,936B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (13,056B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.90% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.76% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.76% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.51% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.51% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.51% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.44% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.44% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.21% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.21% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.23% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.25% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.15% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.81% (550,952B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.81% (550,952B) in 51 places, all below massif's threshold (01.00%) +| +->01.62% (493,480B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.62% (493,480B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.62% (493,480B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.62% (493,480B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.60% (484,848B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.56% (475,176B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.56% (475,176B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.56% (475,176B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.55% (469,872B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.53% (464,880B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.53% (464,880B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.53% (464,880B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.53% (464,880B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.53% (464,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.53% (464,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.53% (464,880B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (9,672B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.56% (473,040B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.56% (473,040B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.52% (461,952B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.50% (454,704B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (454,704B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.50% (454,704B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.49% (452,976B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.48% (449,352B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.48% (449,352B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.48% (449,352B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.48% (449,352B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.48% (449,352B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.48% (449,352B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.48% (449,352B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.48% (449,352B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.48% (449,352B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,248B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.33% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.33% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.32% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.32% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.32% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.32% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.32% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.32% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.32% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.32% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.32% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.32% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.32% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.32% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.04% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.04% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.04% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.04% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.04% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.04% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.04% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.04% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.04% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.04% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.00% (303,808B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + ->01.00% (303,808B) in 3 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 66 4,225,621,247 30,677,752 26,937,027 3,740,725 0 +87.81% (26,937,027B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->36.29% (11,131,976B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->36.29% (11,131,976B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.29% (11,131,976B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.29% (11,131,976B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->36.29% (11,131,976B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->35.49% (10,888,856B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->34.89% (10,704,648B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.89% (10,704,648B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.89% (10,704,648B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.60% (10,613,904B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->34.37% (10,545,160B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.37% (10,545,160B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.37% (10,545,160B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.37% (10,545,160B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.37% (10,545,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.37% (10,545,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.37% (10,545,160B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.22% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.30% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.60% (184,208B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.79% (243,120B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->17.64% (5,411,911B) in 2490 places, all below massif's threshold (01.00%) +| +->04.93% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.30% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.30% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.30% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.30% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.30% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.30% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.30% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.22% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.22% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.22% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.22% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.22% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.09% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.09% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.09% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.09% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.09% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.09% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.02% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.02% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.02% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.60% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.64% (1,422,432B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.64% (1,422,432B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.16% (968,160B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (968,160B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (968,160B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.16% (968,160B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.09% (946,592B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.05% (934,148B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.05% (934,148B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.05% (934,148B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.03% (930,436B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.00% (921,712B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.00% (921,712B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.00% (921,712B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.00% (921,712B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.00% (921,712B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.00% (921,712B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.00% (921,712B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,444B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.48% (454,272B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.48% (454,272B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.48% (454,272B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.48% (454,272B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.44% (441,584B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.41% (432,200B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (432,200B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (432,200B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.41% (432,200B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (428,280B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.40% (428,280B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.40% (428,280B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (428,280B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (428,280B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (428,280B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (428,280B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (9,384B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.01% (922,024B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.91% (893,496B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.80% (553,064B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.11% (340,432B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.11% (340,432B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.08% (332,744B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.07% (327,152B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.07% (327,152B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.07% (327,152B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.06% (325,432B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.05% (322,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (322,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.05% (322,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.05% (322,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.05% (322,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.05% (322,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.05% (322,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,592B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.66% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.97% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.97% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.70% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.56% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.93% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.93% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.93% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.93% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.93% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.93% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.93% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.93% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.93% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.93% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.93% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.93% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.93% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.93% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.93% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.93% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.93% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.93% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.64% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.36% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.32% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.04% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.04% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.04% (317,855B) in 3 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.15% (658,240B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.15% (658,240B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.15% (658,240B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.10% (644,912B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.10% (644,912B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.10% (644,912B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.08% (637,976B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.06% (631,312B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.06% (631,312B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.06% (631,312B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.06% (631,312B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.06% (631,312B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.06% (631,312B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.06% (631,312B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.06% (631,312B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.06% (631,312B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.06% (631,312B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (13,328B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.88% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.74% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.74% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.49% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.49% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.49% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.43% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.43% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.20% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.20% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.23% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.25% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.14% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.81% (555,828B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.81% (555,828B) in 51 places, all below massif's threshold (01.00%) +| +->01.64% (503,256B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.64% (503,256B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.64% (503,256B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.64% (503,256B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.61% (494,624B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.58% (484,744B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.58% (484,744B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.58% (484,744B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.56% (479,440B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.55% (474,448B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.55% (474,448B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.55% (474,448B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.55% (474,448B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.55% (474,448B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.55% (474,448B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.55% (474,448B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (9,880B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.57% (482,232B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.57% (482,232B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.54% (471,144B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.51% (463,608B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.51% (463,608B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.51% (463,608B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.51% (461,880B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.49% (458,256B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.49% (458,256B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.49% (458,256B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.49% (458,256B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.49% (458,256B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.49% (458,256B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.49% (458,256B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.49% (458,256B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.49% (458,256B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,536B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.32% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.32% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.31% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.31% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.31% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.31% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.30% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.30% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.30% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.30% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.30% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.30% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.30% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.30% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.30% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.30% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.03% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) +| ->01.03% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.03% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) +| ->01.03% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.03% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) +| | ->01.03% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.03% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) +| | ->01.03% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.03% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.03% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.03% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.03% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) +| | ->01.03% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) +| | ->01.03% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | ->01.03% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.01% (309,760B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + ->01.01% (309,760B) in 3 places, all below massif's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 67 4,247,361,722 30,986,936 27,223,319 3,763,617 0 +87.85% (27,223,319B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->36.57% (11,333,056B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->36.57% (11,333,056B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.57% (11,333,056B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.57% (11,333,056B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->36.57% (11,333,056B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->35.79% (11,089,936B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->35.19% (10,903,656B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.19% (10,903,656B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.19% (10,903,656B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->34.90% (10,812,912B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->34.67% (10,744,168B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.67% (10,744,168B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.67% (10,744,168B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.67% (10,744,168B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.67% (10,744,168B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.67% (10,744,168B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.67% (10,744,168B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.22% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.29% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.60% (186,280B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.78% (243,120B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->17.48% (5,416,639B) in 2490 places, all below massif's threshold (01.00%) +| +->04.88% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.27% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.27% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.27% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.27% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.27% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.27% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.27% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.19% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.19% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.19% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.19% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.19% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.08% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.08% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.08% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.08% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.08% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.08% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.01% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.01% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.01% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.01% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.01% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.01% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.60% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.67% (1,446,356B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.67% (1,446,356B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.18% (984,908B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.18% (984,908B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.18% (984,908B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.18% (984,908B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.11% (963,340B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.07% (950,896B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.07% (950,896B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.07% (950,896B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.06% (947,184B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.03% (938,460B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.03% (938,460B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.03% (938,460B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.03% (938,460B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.03% (938,460B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.03% (938,460B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.03% (938,460B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,444B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.49% (461,448B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.49% (461,448B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.49% (461,448B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.49% (461,448B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.45% (448,760B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (439,136B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (439,136B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (439,136B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (439,136B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.40% (435,216B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.40% (435,216B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.40% (435,216B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (435,216B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (435,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.40% (435,216B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.40% (435,216B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (9,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.01% (932,584B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.92% (904,056B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.80% (557,264B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.12% (346,792B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.12% (346,792B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.09% (339,104B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.08% (333,416B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.08% (333,416B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.08% (333,416B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.07% (331,696B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.06% (329,056B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.06% (329,056B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.06% (329,056B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.06% (329,056B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.06% (329,056B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.06% (329,056B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.06% (329,056B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.64% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.95% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.95% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.69% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.54% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.91% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.91% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.91% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.91% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.91% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.91% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.91% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.91% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.91% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.91% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.91% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.91% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.91% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.91% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.91% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.91% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.91% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.91% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.63% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.34% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.31% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.03% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.03% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.03% (317,855B) in 3 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.17% (672,520B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.17% (672,520B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.17% (672,520B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.13% (658,920B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (658,920B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (658,920B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.10% (651,984B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.08% (645,320B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.08% (645,320B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.08% (645,320B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.08% (645,320B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.08% (645,320B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.08% (645,320B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.08% (645,320B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.08% (645,320B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.08% (645,320B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.08% (645,320B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (13,600B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.87% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.72% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.72% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.48% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.48% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.48% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.42% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.42% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.19% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.19% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.23% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.25% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.14% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.81% (561,748B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.81% (561,748B) in 51 places, all below massif's threshold (01.00%) +| +->01.66% (514,176B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.66% (514,176B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.66% (514,176B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.66% (514,176B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.63% (505,544B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.60% (495,456B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.60% (495,456B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.60% (495,456B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.58% (490,152B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.57% (485,160B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.57% (485,160B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.57% (485,160B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.57% (485,160B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.57% (485,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.57% (485,160B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.57% (485,160B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (10,088B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.58% (490,392B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.58% (490,392B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.55% (479,304B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.52% (471,672B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (471,672B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (471,672B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.52% (469,944B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.50% (466,320B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.50% (466,320B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.50% (466,320B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.50% (466,320B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.50% (466,320B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.50% (466,320B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.50% (466,320B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.50% (466,320B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.50% (466,320B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.31% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.31% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.30% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.30% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.30% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.30% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.29% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.29% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.29% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.29% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.29% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.29% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.29% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.29% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.29% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.02% (316,480B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) +| ->01.00% (310,080B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (310,080B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (310,080B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (310,080B) in 5 places, all below massif's threshold (01.00%) +| | +| ->00.02% (6,400B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.02% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + ->01.02% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.02% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.02% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.02% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.02% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.02% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.02% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + | ->01.02% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.02% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + | ->01.02% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + | ->01.02% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + | ->01.02% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + | ->01.02% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.02% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 68 4,269,399,638 31,297,392 27,512,631 3,784,761 0 +87.91% (27,512,631B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->36.85% (11,533,768B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->36.85% (11,533,768B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.85% (11,533,768B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->36.85% (11,533,768B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->36.85% (11,533,768B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->36.08% (11,290,648B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->35.48% (11,102,848B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.48% (11,102,848B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.48% (11,102,848B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.19% (11,012,104B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->34.97% (10,943,360B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.97% (10,943,360B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->34.97% (10,943,360B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.97% (10,943,360B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.97% (10,943,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->34.97% (10,943,360B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->34.97% (10,943,360B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.22% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.29% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.60% (187,800B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.78% (243,120B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->17.33% (5,422,607B) in 2490 places, all below massif's threshold (01.00%) +| +->04.83% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.24% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.24% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.24% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.24% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.24% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.24% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.24% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.17% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.17% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.17% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.17% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.17% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.06% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.06% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.06% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.06% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.06% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.06% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.06% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.06% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.00% (313,920B) 0x6FC811E: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.00% (313,920B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.00% (313,920B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.00% (313,920B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.00% (313,920B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.00% (313,920B) in 4 places, all below massif's threshold (01.00%) +| | +| ->00.59% (185,530B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.70% (1,472,100B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.70% (1,472,100B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.21% (1,005,324B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,005,324B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,005,324B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.21% (1,005,324B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.14% (983,756B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.10% (970,820B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.10% (970,820B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.10% (970,820B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.09% (967,108B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.06% (958,384B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.06% (958,384B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.06% (958,384B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.06% (958,384B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.06% (958,384B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.06% (958,384B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.06% (958,384B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (12,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.49% (466,776B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.49% (466,776B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.49% (466,776B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.49% (466,776B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.45% (454,088B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.42% (444,464B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (444,464B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (444,464B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.42% (444,464B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.41% (440,544B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.41% (440,544B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.41% (440,544B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.41% (440,544B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.41% (440,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.41% (440,544B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.41% (440,544B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (9,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.01% (943,528B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.92% (915,000B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.79% (561,344B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.13% (353,656B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.13% (353,656B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.11% (345,968B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.09% (340,216B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.09% (340,216B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.09% (340,216B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.08% (338,496B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.07% (335,856B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.07% (335,856B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.07% (335,856B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.07% (335,856B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.07% (335,856B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.07% (335,856B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.07% (335,856B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,752B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.61% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.93% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.93% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.68% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.51% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.89% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.89% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.89% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.89% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.89% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.89% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.89% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.89% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.89% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.89% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.89% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.89% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.89% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.89% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.89% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.89% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.89% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.89% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.62% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.31% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.30% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.02% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.02% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.02% (317,855B) in 3 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.19% (686,392B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.19% (686,392B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.19% (686,392B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.15% (672,520B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (672,520B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (672,520B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.13% (665,584B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.11% (658,920B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.11% (658,920B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.11% (658,920B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.11% (658,920B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.11% (658,920B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.11% (658,920B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.11% (658,920B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.11% (658,920B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.11% (658,920B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.11% (658,920B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (13,872B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.85% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.71% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.71% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.46% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.46% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.46% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.40% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.40% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.17% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.17% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.23% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.24% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.14% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.81% (567,612B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.81% (567,612B) in 51 places, all below massif's threshold (01.00%) +| +->01.68% (524,784B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.68% (524,784B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.68% (524,784B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.68% (524,784B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.65% (516,152B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.62% (505,856B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.62% (505,856B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.62% (505,856B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.60% (500,552B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.58% (495,560B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.58% (495,560B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.58% (495,560B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.58% (495,560B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.58% (495,560B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.58% (495,560B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.58% (495,560B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (10,296B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,632B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.60% (499,464B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.60% (499,464B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.56% (488,376B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.54% (480,624B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (480,624B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (480,624B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.53% (478,896B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.52% (475,272B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.52% (475,272B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.52% (475,272B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.52% (475,272B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.52% (475,272B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.52% (475,272B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.52% (475,272B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.52% (475,272B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.52% (475,272B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,088B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.30% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.30% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.28% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.28% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.28% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.28% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.28% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.28% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.28% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.28% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.28% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.28% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.28% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.28% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.28% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.28% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.28% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.03% (323,008B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) +| ->01.01% (316,480B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (316,480B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.01% (316,480B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.00% (313,216B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.00% (313,216B) in 3 places, all below massif's threshold (01.00%) +| | | +| | ->00.01% (3,264B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.02% (6,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.01% (314,928B) 0x913335E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + ->01.01% (314,928B) 0x9131333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.01% (314,928B) 0x912FBB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + ->01.01% (314,928B) 0x5ABDB28: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x912F938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.01% (314,928B) 0x91148BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + | ->01.01% (314,928B) 0x5ABCF48: ??? (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x5ABC0B6: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x15990E41: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.01% (314,928B) 0x159916D3: ??? (in /usr/lib/qt4/plugins/inputmethods/libqimsw-multi.so) + | ->01.01% (314,928B) 0x5ABC0EC: QInputContextFactory::create(QString const&, QObject*) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x553EBFD: QApplication::inputContext() const (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x55C4A7B: QWidget::destroy(bool, bool) (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x55899AB: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x5A1E52F: QHeaderView::~QHeaderView() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x7058E5A: QObjectPrivate::deleteChildren() (in /usr/lib/libQtCore.so.4.5.2) + | ->01.01% (314,928B) 0x5589991: QWidget::~QWidget() (in /usr/lib/libQtGui.so.4.5.2) + | ->01.01% (314,928B) 0x152106DF: ??? (in /usr/lib/libkfile.so.4.3.0) + | ->01.01% (314,928B) 0x1520404E: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) + | ->01.01% (314,928B) 0x152056DD: KDirOperator::setView(KFile::FileView) (in /usr/lib/libkfile.so.4.3.0) + | ->01.01% (314,928B) 0x14FBF116: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + | ->01.01% (314,928B) 0x6431846: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x64326B4: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x642F05A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) + | ->01.01% (314,928B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) + | + ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 69 4,292,878,998 31,610,472 27,801,887 3,808,585 0 +87.95% (27,801,887B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->37.12% (11,735,128B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->37.12% (11,735,128B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->37.12% (11,735,128B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->37.12% (11,735,128B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->37.12% (11,735,128B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->36.35% (11,491,048B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->35.74% (11,296,624B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.74% (11,296,624B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.74% (11,296,624B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.45% (11,205,880B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->35.23% (11,137,136B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->35.23% (11,137,136B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->35.23% (11,137,136B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.23% (11,137,136B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.23% (11,137,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.23% (11,137,136B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.23% (11,137,136B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.22% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.29% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.62% (194,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.77% (244,080B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.17% (5,743,571B) in 2491 places, all below massif's threshold (01.00%) +| +->04.79% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.21% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.21% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.21% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.21% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.21% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.21% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.21% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.15% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.15% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.15% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.15% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.15% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.05% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.05% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.05% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.05% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.05% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.05% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.05% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.05% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.58% (499,450B) in 43 places, all below massif's threshold (01.00%) +| +->04.73% (1,494,192B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.73% (1,494,192B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.23% (1,020,244B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.23% (1,020,244B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.23% (1,020,244B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.23% (1,020,244B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.16% (998,676B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.12% (985,248B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.12% (985,248B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.12% (985,248B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.11% (981,536B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.08% (972,812B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.08% (972,812B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.08% (972,812B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.08% (972,812B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.08% (972,812B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.08% (972,812B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.08% (972,812B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (13,428B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.50% (473,948B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.50% (473,948B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.50% (473,948B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.50% (473,948B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.46% (461,260B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.43% (451,636B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.43% (451,636B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.43% (451,636B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.43% (451,636B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.42% (447,716B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.42% (447,716B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.42% (447,716B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.42% (447,716B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.42% (447,716B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.42% (447,716B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.42% (447,716B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (9,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->03.02% (954,392B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.93% (925,864B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.79% (565,984B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.14% (359,880B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.14% (359,880B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.11% (352,112B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.10% (346,152B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.10% (346,152B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.10% (346,152B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.09% (344,432B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.08% (341,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (341,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.08% (341,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.08% (341,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.08% (341,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.08% (341,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.08% (341,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,768B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.58% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.91% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.91% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.67% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.49% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.87% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.87% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.87% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.87% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.87% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.87% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.87% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.87% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.87% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.87% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.87% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.87% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.87% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.87% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.87% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.87% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.87% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.87% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.62% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.29% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.28% (405,707B) in 11 places, all below massif's threshold (01.00%) +| | +| ->01.01% (317,855B) 0x5FFFAB6: ??? (in /usr/lib/libkdecore.so.5.3.0) +| ->01.01% (317,855B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.01% (317,855B) in 3 places, all below massif's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.22% (701,760B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.22% (701,760B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.22% (701,760B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.17% (687,480B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.17% (687,480B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.17% (687,480B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.15% (680,544B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.13% (673,880B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.13% (673,880B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.13% (673,880B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.13% (673,880B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.13% (673,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.13% (673,880B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.13% (673,880B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.13% (673,880B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.13% (673,880B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.13% (673,880B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.05% (14,280B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.83% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.69% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.69% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.45% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.45% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.45% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.39% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.39% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.16% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.16% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.22% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.24% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.14% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (574,252B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (574,252B) in 51 places, all below massif's threshold (01.00%) +| +->01.70% (536,432B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.70% (536,432B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.70% (536,432B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.70% (536,432B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.67% (527,592B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.64% (516,984B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.64% (516,984B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.64% (516,984B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.62% (511,680B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.60% (506,688B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.60% (506,688B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.60% (506,688B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.60% (506,688B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.60% (506,688B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.60% (506,688B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.60% (506,688B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (10,608B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,840B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.61% (507,480B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.61% (507,480B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.57% (496,344B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.54% (488,376B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (488,376B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (488,376B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (486,648B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (483,024B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (483,024B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (483,024B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (483,024B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (483,024B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (483,024B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (483,024B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.53% (483,024B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.53% (483,024B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.03% (7,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.04% (11,136B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.28% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.28% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.27% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.27% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.27% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.27% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.27% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.27% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.26% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.26% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.26% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.26% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.26% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.26% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.26% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.26% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.26% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.04% (330,240B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + ->01.02% (323,520B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + | ->01.02% (323,520B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + | ->01.02% (323,520B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + | ->01.01% (320,256B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.00% (317,120B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.00% (317,120B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.00% (317,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.00% (317,120B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.00% (317,120B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.00% (317,120B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.00% (317,120B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.00% (317,120B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.00% (317,120B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.00% (317,120B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.00% (317,120B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.00% (317,120B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.00% (317,120B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.00% (317,120B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | + | | ->00.01% (3,136B) in 1+ places, all below ms_print's threshold (01.00%) + | | + | ->00.01% (3,264B) in 1+ places, all below ms_print's threshold (01.00%) + | + ->00.02% (6,720B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 70 4,320,676,562 32,018,456 28,196,463 3,821,993 0 +88.06% (28,196,463B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->37.22% (11,918,720B) 0x574481A: QTextEngine::LayoutData::reallocate(int) (in /usr/lib/libQtGui.so.4.5.2) +| ->37.22% (11,918,720B) 0x574821B: QTextEngine::attributes() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->37.22% (11,918,720B) 0x574EF6A: QTextLine::layout_helper(int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->37.22% (11,918,720B) 0x57508CE: QTextLayout::createLine() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->37.22% (11,918,720B) 0x13EC76B5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->36.46% (11,674,640B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->35.85% (11,480,216B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.85% (11,480,216B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.85% (11,480,216B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->35.57% (11,389,472B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->35.36% (11,320,728B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->35.36% (11,320,728B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->35.36% (11,320,728B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.36% (11,320,728B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.36% (11,320,728B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->35.36% (11,320,728B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->35.36% (11,320,728B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.21% (68,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.28% (90,744B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.61% (194,424B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.76% (244,080B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->18.33% (5,870,015B) in 2491 places, all below massif's threshold (01.00%) +| +->04.74% (1,516,112B) 0x5660C2B: ??? (in /usr/lib/libQtGui.so.4.5.2) +| ->04.74% (1,516,112B) 0x5746808: QTextEngine::splitItem(int, int) const (in /usr/lib/libQtGui.so.4.5.2) +| ->03.22% (1,030,576B) 0x5746C62: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.22% (1,030,576B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.22% (1,030,576B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->03.22% (1,030,576B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->03.15% (1,009,008B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->03.11% (995,580B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.11% (995,580B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.11% (995,580B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->03.10% (991,868B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->03.07% (983,144B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.07% (983,144B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->03.07% (983,144B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.07% (983,144B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.07% (983,144B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->03.07% (983,144B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->03.07% (983,144B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | +| | | | | | ->00.03% (8,724B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.01% (3,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.04% (13,428B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.07% (21,568B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->01.52% (485,536B) 0x5746C54: QTextEngine::addRequiredBoundaries() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.52% (485,536B) 0x574712B: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.52% (485,536B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.52% (485,536B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.48% (472,848B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.45% (463,224B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (463,224B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (463,224B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.45% (463,224B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.43% (459,304B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.43% (459,304B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.43% (459,304B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.43% (459,304B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.43% (459,304B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.43% (459,304B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.43% (459,304B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | +| | | | | ->00.01% (3,920B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (9,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.04% (12,688B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->04.72% (1,512,570B) 0x6FC8808: ??? (in /usr/lib/libQtCore.so.4.5.2) +| ->03.16% (1,013,120B) 0x6FC498C: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.16% (1,013,120B) 0x6FC776B: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.16% (1,013,120B) 0x6FCA6A1: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.16% (1,013,120B) 0x6FC8719: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.16% (1,013,120B) 0x6FCC664: ??? (in /usr/lib/libQtCore.so.4.5.2) +| | ->03.16% (1,013,120B) 0x57D9AE2: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x57D9F72: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x57D492C: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x572B76D: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x57309CB: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x57327B4: QFontDatabase::load(QFontPrivate const*, int) (in /usr/lib/libQtGui.so.4.5.2) +| | ->03.16% (1,013,120B) 0x570C57F: QFontPrivate::engineForScript(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->02.12% (680,000B) 0x5724EA6: QFontMetrics::height() const (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.12% (680,000B) 0x594DF8A: QStatusBar::reformat() (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.12% (680,000B) 0x594EA23: QStatusBar::setSizeGripEnabled(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.12% (680,000B) 0x594EEF6: QStatusBar::QStatusBar(QWidget*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->02.12% (680,000B) 0x69854E2: KStatusBar::KStatusBar(QWidget*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->02.12% (680,000B) 0x643A7DE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x643AF2A: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x6435B4F: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x642CB80: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x642EEBE: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x6414C91: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x64447B8: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x644A51C: ??? (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x6415AA3: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x641660E: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.3.0) +| | | ->02.12% (680,000B) 0x4E2B9CD: kdemain (in /usr/lib/libkdeinit4_kate.so) +| | | ->02.12% (680,000B) 0x504DABB: (below main) (libc-start.c:220) +| | | +| | ->01.04% (333,120B) 0x5724AEC: QFontMetricsF::leading() const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5656CC6: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x565753F: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5725E76: QFontMetrics::boundingRect(QRect const&, int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5725EF9: QFontMetrics::size(int, QString const&, int, int*) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x68A8F20: KStyle::sizeFromContents(QStyle::ContentsType, QStyleOption const*, QSize const&, QWidget const*) const (in /usr/lib/libkdeui.so.5.3.0) +| | ->01.04% (333,120B) 0x13A4486C: ??? (in /usr/lib/kde4/plugins/styles/oxygen.so) +| | ->01.04% (333,120B) 0x5A206AA: QHeaderView::sectionSizeFromContents(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5A1F92F: QHeaderView::sectionSizeHint(int) const (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5A248E9: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x1521024B: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (333,120B) 0x151FF732: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (333,120B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.04% (333,120B) 0x5A99291: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x5A4A905: QTreeView::setModel(QAbstractItemModel*) (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.04% (333,120B) 0x1521061F: ??? (in /usr/lib/libkfile.so.4.3.0) +| | ->01.04% (333,120B) 0x1520406D: KDirOperator::setView(QAbstractItemView*) (in /usr/lib/libkfile.so.4.3.0) +| | +| ->01.56% (499,450B) in 43 places, all below massif's threshold (01.00%) +| +->03.02% (965,536B) 0x6F880D9: QListData::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.93% (937,008B) 0x6F8830B: QListData::append() (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.78% (570,664B) in 270 places, all below massif's threshold (01.00%) +| | | +| | ->01.14% (366,344B) 0x13EC6E01: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.14% (366,344B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.12% (358,576B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.10% (352,616B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.10% (352,616B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.10% (352,616B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.10% (350,896B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.09% (348,256B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.09% (348,256B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.09% (348,256B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.09% (348,256B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.09% (348,256B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | ->01.09% (348,256B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | ->01.09% (348,256B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | +| | | | | ->00.01% (2,640B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.01% (1,720B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.02% (5,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,768B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.09% (28,528B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.55% (816,540B) 0x6FA78C7: QString::realloc(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.88% (603,200B) 0x6FA7F93: QString::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| | ->01.88% (603,200B) in 23 places, all below massif's threshold (01.00%) +| | +| ->00.67% (213,340B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.46% (786,308B) 0x6FA5492: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.85% (591,478B) 0x13EACF41: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.85% (591,478B) 0x13EA81FD: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.85% (591,478B) 0x13E8FDC8: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.85% (591,478B) 0xA6890C5: KParts::ReadOnlyPart::openUrl(KUrl const&) (in /usr/lib/libkparts.so.4.3.0) +| | ->01.85% (591,032B) 0x13E8773F: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.85% (591,032B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.85% (591,032B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.85% (591,032B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.85% (591,032B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.85% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.85% (591,032B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | ->01.85% (591,032B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.85% (591,032B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | ->01.85% (591,032B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.85% (591,032B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.85% (591,032B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | ->01.85% (591,032B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) +| | | ->01.85% (591,032B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | +| | ->00.00% (446B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.61% (194,830B) in 1+ places, all below ms_print's threshold (01.00%) +| +->02.26% (723,562B) 0x6F667F4: QByteArray::QByteArray(char const*, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->02.26% (723,562B) in 12 places, all below massif's threshold (01.00%) +| +->02.24% (717,808B) 0x574DA82: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (in /usr/lib/libQtGui.so.4.5.2) +| ->02.24% (717,808B) 0x13EC78A3: ??? (in /usr/lib/kde4/katepart.so) +| ->02.24% (717,808B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| ->02.20% (703,392B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.20% (703,392B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.20% (703,392B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | ->02.18% (696,456B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | ->02.15% (689,792B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.15% (689,792B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->02.15% (689,792B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.15% (689,792B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.15% (689,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.15% (689,792B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->02.15% (689,792B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->02.15% (689,792B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.15% (689,792B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->02.15% (689,792B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.02% (6,664B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (6,936B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.05% (14,416B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.82% (581,952B) 0x6FB5A95: QVectorData::malloc(int, int, int, QVectorData*) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.82% (581,952B) in 51 places, all below massif's threshold (01.00%) +| +->01.81% (578,088B) 0x6F94BB2: QMapData::node_create(QMapData::Node**, int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.67% (533,992B) 0x5FEED5A: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.67% (533,992B) 0x5FF0112: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | ->01.43% (457,520B) 0x5FF12FC: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | ->01.43% (457,120B) 0x5FFFAD5: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | ->01.43% (457,120B) 0x6000BF2: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | ->01.37% (438,504B) 0x5FEA5B1: ??? (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.37% (438,504B) 0x5FEAAEF: KConfig::reparseConfiguration() (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | ->01.15% (367,544B) 0x5FEBF71: KConfig::KConfig(QString const&, QFlags, char const*) (in /usr/lib/libkdecore.so.5.3.0) +| | | | | | | ->01.15% (367,544B) in 11 places, all below massif's threshold (01.00%) +| | | | | | | +| | | | | | ->00.22% (70,960B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.06% (18,616B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.00% (400B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.24% (76,472B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.14% (44,096B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.71% (548,808B) 0x5743D00: QTextEngine::validate() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.71% (548,808B) 0x5746CBC: QTextEngine::itemize() const (in /usr/lib/libQtGui.so.4.5.2) +| ->01.71% (548,808B) 0x574D68A: QTextLayout::beginLayout() (in /usr/lib/libQtGui.so.4.5.2) +| | ->01.71% (548,808B) 0x13EC763C: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.69% (539,968B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.65% (529,256B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.65% (529,256B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.65% (529,256B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.64% (523,952B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | ->01.62% (518,960B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.62% (518,960B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | | | ->01.62% (518,960B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.62% (518,960B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.62% (518,960B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | | | ->01.62% (518,960B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | | | ->01.62% (518,960B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | | | +| | | | | | ->00.02% (4,992B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | | +| | | | | ->00.02% (5,304B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | | +| | | | ->00.03% (10,712B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.03% (8,840B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.61% (515,280B) 0x13EC6E0F: ??? (in /usr/lib/kde4/katepart.so) +| ->01.61% (515,280B) 0x13EC7621: ??? (in /usr/lib/kde4/katepart.so) +| ->01.57% (504,144B) 0x13ECDB2E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.55% (496,176B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.55% (496,176B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.55% (496,176B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.54% (494,448B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.53% (490,824B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (490,824B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) +| | | | | ->01.53% (490,824B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (490,824B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (490,824B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | | ->01.53% (490,824B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | | ->01.53% (490,824B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.53% (490,824B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | | ->01.53% (490,824B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | | +| | | | ->00.01% (3,624B) in 1+ places, all below ms_print's threshold (01.00%) +| | | | +| | | ->00.01% (1,728B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.02% (7,968B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.03% (11,136B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.27% (405,308B) 0x6F675AB: QByteArray::resize(int) (in /usr/lib/libQtCore.so.4.5.2) +| ->01.27% (405,308B) in 32 places, all below massif's threshold (01.00%) +| +->01.26% (402,064B) 0x13EA3C6B: ??? (in /usr/lib/kde4/katepart.so) +| ->01.26% (402,064B) 0x13EAD18E: ??? (in /usr/lib/kde4/katepart.so) +| | ->01.25% (401,312B) 0x13EECF18: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (401,312B) 0x13EA93DD: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (401,312B) 0x13EAAFCA: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (401,312B) 0x13E93EF6: ??? (in /usr/lib/kde4/katepart.so) +| | | ->01.25% (399,440B) 0x13F0A73B: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (399,440B) 0x13E87889: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (399,440B) 0x13F0E6FB: ??? (in /usr/lib/kde4/katepart.so) +| | | | ->01.25% (399,440B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (399,440B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (399,440B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) +| | | | ->01.25% (399,440B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) +| | | | ->01.25% (399,440B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.25% (399,440B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) +| | | | ->01.25% (399,440B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) +| | | | +| | | ->00.01% (1,872B) in 1+ places, all below ms_print's threshold (01.00%) +| | | +| | ->00.00% (752B) in 1+ places, all below ms_print's threshold (01.00%) +| | +| ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) +| +->01.05% (337,792B) 0x13ECDAB6: ??? (in /usr/lib/kde4/katepart.so) + ->01.03% (331,008B) 0x13ECEDC3: ??? (in /usr/lib/kde4/katepart.so) + | ->01.03% (331,008B) 0x13F1EF20: ??? (in /usr/lib/kde4/katepart.so) + | ->01.03% (331,008B) 0x13F1F69A: ??? (in /usr/lib/kde4/katepart.so) + | ->01.02% (327,744B) 0x13F207D5: ??? (in /usr/lib/kde4/katepart.so) + | | ->01.01% (324,608B) 0x13F230FD: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.01% (324,608B) 0x13F0E4BB: ??? (in /usr/lib/kde4/katepart.so) + | | | ->01.01% (324,608B) 0x705FDDA: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.01% (324,608B) 0x55390A5: QAction::triggered(bool) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x553A4ED: QAction::activate(QAction::ActionEvent) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x553CFA5: QAction::event(QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x67C723B: KAction::event(QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.01% (324,608B) 0x553EEFA: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x55461CC: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.01% (324,608B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.01% (324,608B) 0x5573664: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x55754F5: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x5546E6C: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x6898F44: KApplication::notify(QObject*, QEvent*) (in /usr/lib/libkdeui.so.5.3.0) + | | | ->01.01% (324,608B) 0x704AC2A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.01% (324,608B) 0x55CFDF8: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x55D236E: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x55AA491: QApplication::x11ProcessEvent(_XEvent*) (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x55D3D0A: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | ->01.01% (324,608B) 0x85CFBCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.01% (324,608B) 0x85D3596: ??? (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.01% (324,608B) 0x85D36BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + | | | ->01.01% (324,608B) 0x70731A4: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib/libQtCore.so.4.5.2) + | | | ->01.01% (324,608B) 0x55D34BC: ??? (in /usr/lib/libQtGui.so.4.5.2) + | | | + | | ->00.01% (3,136B) in 1+ places, all below ms_print's threshold (01.00%) + | | + | ->00.01% (3,264B) in 1+ places, all below ms_print's threshold (01.00%) + | + ->00.02% (6,784B) in 1+ places, all below ms_print's threshold (01.00%) + +-------------------------------------------------------------------------------- + n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 71 4,358,467,245 18,453,464 15,532,481 2,920,983 0 + 72 4,396,261,063 12,284,232 9,944,581 2,339,651 0 + 73 4,434,054,474 11,961,264 9,690,657 2,270,607 0 diff --git a/massif-visualizer/test/data/massif.out.kate2 b/massif-visualizer/test/data/massif.out.kate2 new file mode 100644 index 00000000..64c452bd --- /dev/null +++ b/massif-visualizer/test/data/massif.out.kate2 @@ -0,0 +1,5830 @@ +desc: --massif-out-file=/home/milian/projects/kde4/massif-visualizer/test/data/massif.out.kate2 +cmd: kate --line 5307 test_duchain.cpp +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=138507377 +mem_heap_B=1754169 +mem_heap_extra_B=410735 +mem_stacks_B=0 +heap_tree=detailed +n11: 1754169 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 492341 in 661 places, all below massif's threshold (01.00%) + n5: 344714 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 126593 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 126593 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 110621 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 110621 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n3: 99601 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 71671 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 71671 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 71671 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 71671 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 71671 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 71671 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 71671 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 71671 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 71671 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 71671 0x5050ABB: (below main) (libc-start.c:220) + n1: 27930 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 27930 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 27930 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 27930 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 27930 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 27930 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 27930 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 27930 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 27930 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 27930 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 27930 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 27930 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 27930 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 27930 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 11020 in 3 places, all below massif's threshold (01.00%) + n0: 15972 in 2 places, all below massif's threshold (01.00%) + n1: 101765 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 101765 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 86147 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 86147 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n3: 75545 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 53596 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 53596 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 53596 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 53596 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 53596 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 53596 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 53596 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 53596 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 53596 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 53596 0x5050ABB: (below main) (libc-start.c:220) + n1: 21949 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 21949 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 21949 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 21949 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 21949 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 21949 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 21949 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 21949 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 21949 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 21949 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 21949 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 21949 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 21949 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 21949 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 10602 in 3 places, all below massif's threshold (01.00%) + n0: 15618 in 2 places, all below massif's threshold (01.00%) + n3: 70184 0x70B8C40: QByteArray::mid(int, int) const (qbytearray.cpp:2592) + n1: 41134 0x7170FE1: QConfFileSettingsPrivate::readIniFile(QByteArray const&, QMap*) (qsettings.cpp:1755) + n1: 41134 0x717668A: QConfFileSettingsPrivate::syncConfFile(int) (qsettings.cpp:1530) + n1: 41134 0x717697C: QConfFileSettingsPrivate::sync() (qsettings.cpp:1382) + n2: 41134 0x71694C4: QConfFileSettingsPrivate::initAccess() (qsettings.cpp:1037) + n1: 41134 0x71742AC: QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:1205) + n1: 41134 0x7174656: QSettingsPrivate::create(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:366) + n1: 41134 0x7174DE9: QSettings::QSettings(QSettings::Scope, QString const&, QString const&, QObject*) (qsettings.cpp:2601) + n1: 41134 0x55DB68F: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:827) + n1: 41134 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 41134 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 41134 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 41134 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 41134 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 41134 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 41134 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 41134 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 28494 0x61262C8: KDebugPrivate::loadAreaNames() (kdebug.cpp:302) + n1: 28494 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 28494 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 28494 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 28494 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 28494 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 28494 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 28494 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 28494 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 28494 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 28494 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 28494 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 28494 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 28494 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 28494 0x5050ABB: (below main) (libc-start.c:220) + n0: 556 in 11 places, all below massif's threshold (01.00%) + n1: 46134 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 46134 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 41004 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 41004 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 38914 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 24700 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 24700 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 24700 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 24700 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 24700 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 24700 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 24700 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 24700 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 24700 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 24700 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 24700 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 24700 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 24700 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 24700 0x5050ABB: (below main) (libc-start.c:220) + n0: 14214 in 4 places, all below massif's threshold (01.00%) + n0: 2090 in 3 places, all below massif's threshold (01.00%) + n0: 5130 in 2 places, all below massif's threshold (01.00%) + n0: 38 in 5 places, all below massif's threshold (01.00%) + n2: 257760 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 236128 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 236128 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 174984 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 174984 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 174984 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 155264 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 155264 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n3: 142336 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 104368 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 104368 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 104368 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 104368 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 104368 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 104368 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 104368 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 104368 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 104368 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 104368 0x5050ABB: (below main) (libc-start.c:220) + n1: 37968 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 37968 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 37968 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 37968 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 37968 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 37968 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 37968 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 37968 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 37968 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 37968 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 37968 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37968 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37968 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 37968 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 12928 in 3 places, all below massif's threshold (01.00%) + n0: 19720 in 2 places, all below massif's threshold (01.00%) + n1: 55424 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 55424 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 55424 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 48792 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 48792 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 46856 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 38112 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 38112 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 38112 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 38112 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 38112 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 38112 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 38112 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 38112 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 38112 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 38112 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 38112 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38112 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38112 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 38112 0x5050ABB: (below main) (libc-start.c:220) + n0: 8744 in 4 places, all below massif's threshold (01.00%) + n0: 1936 in 3 places, all below massif's threshold (01.00%) + n0: 6632 in 2 places, all below massif's threshold (01.00%) + n0: 5720 in 1 place, below massif's threshold (01.00%) + n0: 21632 in 12 places, all below massif's threshold (01.00%) + n2: 196490 0x70B9A3B: QByteArray::resize(int) (qbytearray.cpp:1370) + n2: 195446 0x71437F0: QIODevice::readAll() (qiodevice.cpp:989) + n1: 195446 0x60E6686: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:97) + n2: 195446 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 195446 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 195446 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 195446 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 195446 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 195446 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 195446 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 195446 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 195446 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 195446 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 195446 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 195446 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1044 in 4 places, all below massif's threshold (01.00%) + n3: 161228 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 92048 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n1: 87848 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n1: 87848 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n1: 87848 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 87848 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 87848 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 80840 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 80840 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 80840 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 80840 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 80840 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 80840 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 80840 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 80840 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 80840 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 80840 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 80840 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 80840 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 80840 0x5050ABB: (below main) (libc-start.c:220) + n0: 7008 in 3 places, all below massif's threshold (01.00%) + n0: 4200 in 8 places, all below massif's threshold (01.00%) + n2: 56558 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 56380 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n1: 56380 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56380 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56380 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9392 in 3 places, all below massif's threshold (01.00%) + n0: 178 in 1 place, below massif's threshold (01.00%) + n0: 12622 in 29 places, all below massif's threshold (01.00%) + n2: 68686 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 58066 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 56156 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n1: 56156 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56156 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56156 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9168 in 3 places, all below massif's threshold (01.00%) + n0: 1910 in 45 places, all below massif's threshold (01.00%) + n0: 10620 in 4 places, all below massif's threshold (01.00%) + n1: 65280 0x505168F: __gconv_open (gconv_open.c:284) + n1: 65280 0x5051000: iconv_open (iconv_open.c:72) + n2: 65280 0x71DF106: QIconvCodec::createIconv_t(char const*, char const*) (qiconvcodec.cpp:453) + n1: 32640 0x71DF954: QIconvCodec::convertToUnicode(char const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:205) + n1: 32640 0x70FE96C: QString::fromLocal8Bit(char const*, int) (qtextcodec.h:119) + n1: 32640 0x7135223: locale_decode(QByteArray const&) (qfile.cpp:76) + n1: 32640 0x71350C8: QFile::decodeName(QByteArray const&) (qfile.cpp:500) + n1: 32640 0x71831DE: QFSFileEngine::currentPath(QString const&) (qfsfileengine_unix.cpp:564) + n1: 32640 0x712B5B8: QDir::currentPath() (qdir.cpp:1881) + n1: 32640 0x614DCA5: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n1: 32640 0x71E003A: QIconvCodec::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:327) + n1: 32640 0x71D9E25: QTextCodec::fromUnicode(QString const&) const (qtextcodec.cpp:1195) + n1: 32640 0x70FB0BF: QString::toLocal8Bit() const (qstring.cpp:3511) + n1: 32640 0x614DCB0: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n2: 60024 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n1: 42912 0x612647D: KDebugPrivate::loadAreaNames() (qhash.h:542) + n1: 42912 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 42912 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 42912 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 42912 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 42912 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 42912 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 42912 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 42912 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 42912 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 42912 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 42912 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 42912 0x5050ABB: (below main) (libc-start.c:220) + n0: 17112 in 91 places, all below massif's threshold (01.00%) + n2: 44622 0x70B9536: QByteArray::realloc(int) (qbytearray.cpp:1412) + n2: 32768 0x70B99A7: QByteArray::resize(int) (qbytearray.cpp:1380) + n2: 32768 0x7142A47: QIODevice::read(char*, long long) (qringbuffer_p.h:158) + n2: 32768 0x71298BB: QDataStream::operator>>(int&) (qdatastream.cpp:730) + n1: 32768 0x622524C: KSycoca::findEntry(int, KSycocaType&) (ksycoca.cpp:370) + n1: 32768 0x6185BDF: KServiceFactory::createEntry(int) const (kservicefactory.cpp:196) + n2: 32768 0x6184A2A: KServiceFactory::findServiceByDesktopName(QString const&) (kservicefactory.cpp:117) + n1: 32768 0x617D9CA: KService::serviceByDesktopName(QString const&) (kservice.cpp:598) + n1: 32768 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 32768 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32768 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 6 places, all below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11854 in 7 places, all below massif's threshold (01.00%) + n1: 31840 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 31840 in 29 places, all below massif's threshold (01.00%) + n2: 31184 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 27480 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 27480 in 43 places, all below massif's threshold (01.00%) + n0: 3704 in 3 places, all below massif's threshold (01.00%) +#----------- +snapshot=2 +#----------- +time=229676396 +mem_heap_B=2323902 +mem_heap_extra_B=598146 +mem_stacks_B=0 +heap_tree=detailed +n11: 2323902 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n5: 661539 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 284930 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 284930 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 268958 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 268958 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 257938 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 230008 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 230008 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 230008 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 230008 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 230008 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 230008 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 230008 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 230008 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 230008 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 230008 0x5050ABB: (below main) (libc-start.c:220) + n0: 27930 in 4 places, all below massif's threshold (01.00%) + n0: 11020 in 3 places, all below massif's threshold (01.00%) + n0: 15972 in 2 places, all below massif's threshold (01.00%) + n1: 224118 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 224118 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 208500 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 208500 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 197898 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 175949 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 175949 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 175949 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 175949 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 175949 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 175949 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 175949 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 175949 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 175949 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 175949 0x5050ABB: (below main) (libc-start.c:220) + n0: 21949 in 4 places, all below massif's threshold (01.00%) + n0: 10602 in 3 places, all below massif's threshold (01.00%) + n0: 15618 in 2 places, all below massif's threshold (01.00%) + n1: 82271 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 82271 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 77141 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 77141 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 75051 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 50351 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 50351 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 50351 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 50351 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 50351 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 50351 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 50351 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 50351 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 50351 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 50351 0x5050ABB: (below main) (libc-start.c:220) + n0: 24700 in 4 places, all below massif's threshold (01.00%) + n0: 2090 in 3 places, all below massif's threshold (01.00%) + n0: 5130 in 2 places, all below massif's threshold (01.00%) + n2: 70184 0x70B8C40: QByteArray::mid(int, int) const (qbytearray.cpp:2592) + n1: 41134 0x7170FE1: QConfFileSettingsPrivate::readIniFile(QByteArray const&, QMap*) (qsettings.cpp:1755) + n1: 41134 0x717668A: QConfFileSettingsPrivate::syncConfFile(int) (qsettings.cpp:1530) + n1: 41134 0x717697C: QConfFileSettingsPrivate::sync() (qsettings.cpp:1382) + n2: 41134 0x71694C4: QConfFileSettingsPrivate::initAccess() (qsettings.cpp:1037) + n1: 41134 0x71742AC: QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:1205) + n1: 41134 0x7174656: QSettingsPrivate::create(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:366) + n1: 41134 0x7174DE9: QSettings::QSettings(QSettings::Scope, QString const&, QString const&, QObject*) (qsettings.cpp:2601) + n1: 41134 0x55DB68F: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:827) + n1: 41134 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 41134 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 41134 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 41134 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 41134 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 41134 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 41134 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 41134 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 29050 in 12 places, all below massif's threshold (01.00%) + n0: 36 in 5 places, all below massif's threshold (01.00%) + n2: 508624 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 486992 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 486992 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 405800 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 405800 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 405800 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 386080 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 386080 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n3: 373152 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 335184 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 335184 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 335184 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 335184 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 335184 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 335184 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 335184 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 335184 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 335184 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 335184 0x5050ABB: (below main) (libc-start.c:220) + n1: 37968 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 37968 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 37968 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 37968 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 37968 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 37968 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 37968 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 37968 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 37968 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 37968 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 37968 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37968 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37968 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 37968 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 12928 in 3 places, all below massif's threshold (01.00%) + n0: 19720 in 2 places, all below massif's threshold (01.00%) + n1: 75472 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 75472 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 75472 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 68840 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 68840 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 66904 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 38112 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 38112 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 38112 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 38112 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 38112 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 38112 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 38112 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 38112 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 38112 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 38112 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 38112 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38112 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38112 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 38112 0x5050ABB: (below main) (libc-start.c:220) + n0: 28792 in 4 places, all below massif's threshold (01.00%) + n0: 1936 in 3 places, all below massif's threshold (01.00%) + n0: 6632 in 2 places, all below massif's threshold (01.00%) + n0: 5720 in 1 place, below massif's threshold (01.00%) + n0: 21632 in 12 places, all below massif's threshold (01.00%) + n0: 492337 in 661 places, all below massif's threshold (01.00%) + n2: 196490 0x70B9A3B: QByteArray::resize(int) (qbytearray.cpp:1370) + n2: 195446 0x71437F0: QIODevice::readAll() (qiodevice.cpp:989) + n1: 195446 0x60E6686: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:97) + n2: 195446 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 195446 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 195446 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 195446 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 195446 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 195446 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 195446 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 195446 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 195446 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 195446 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 195446 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 195446 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1044 in 4 places, all below massif's threshold (01.00%) + n3: 161228 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 92048 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n1: 87848 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n1: 87848 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n1: 87848 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 87848 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 87848 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 80840 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 80840 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 80840 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 80840 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 80840 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 80840 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 80840 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 80840 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 80840 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 80840 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 80840 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 80840 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 80840 0x5050ABB: (below main) (libc-start.c:220) + n0: 7008 in 3 places, all below massif's threshold (01.00%) + n0: 4200 in 8 places, all below massif's threshold (01.00%) + n2: 56558 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 56380 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n1: 56380 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56380 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56380 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9392 in 3 places, all below massif's threshold (01.00%) + n0: 178 in 1 place, below massif's threshold (01.00%) + n0: 12622 in 29 places, all below massif's threshold (01.00%) + n2: 68686 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 58066 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 56156 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n1: 56156 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56156 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56156 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9168 in 3 places, all below massif's threshold (01.00%) + n0: 1910 in 45 places, all below massif's threshold (01.00%) + n0: 10620 in 4 places, all below massif's threshold (01.00%) + n1: 65280 0x505168F: __gconv_open (gconv_open.c:284) + n1: 65280 0x5051000: iconv_open (iconv_open.c:72) + n2: 65280 0x71DF106: QIconvCodec::createIconv_t(char const*, char const*) (qiconvcodec.cpp:453) + n1: 32640 0x71DF954: QIconvCodec::convertToUnicode(char const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:205) + n1: 32640 0x70FE96C: QString::fromLocal8Bit(char const*, int) (qtextcodec.h:119) + n1: 32640 0x7135223: locale_decode(QByteArray const&) (qfile.cpp:76) + n1: 32640 0x71350C8: QFile::decodeName(QByteArray const&) (qfile.cpp:500) + n1: 32640 0x71831DE: QFSFileEngine::currentPath(QString const&) (qfsfileengine_unix.cpp:564) + n1: 32640 0x712B5B8: QDir::currentPath() (qdir.cpp:1881) + n1: 32640 0x614DCA5: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n1: 32640 0x71E003A: QIconvCodec::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:327) + n1: 32640 0x71D9E25: QTextCodec::fromUnicode(QString const&) const (qtextcodec.cpp:1195) + n1: 32640 0x70FB0BF: QString::toLocal8Bit() const (qstring.cpp:3511) + n1: 32640 0x614DCB0: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n2: 60024 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n1: 42912 0x612647D: KDebugPrivate::loadAreaNames() (qhash.h:542) + n1: 42912 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 42912 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 42912 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 42912 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 42912 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 42912 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 42912 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 42912 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 42912 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 42912 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 42912 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 42912 0x5050ABB: (below main) (libc-start.c:220) + n0: 17112 in 91 places, all below massif's threshold (01.00%) + n2: 44622 0x70B9536: QByteArray::realloc(int) (qbytearray.cpp:1412) + n2: 32768 0x70B99A7: QByteArray::resize(int) (qbytearray.cpp:1380) + n2: 32768 0x7142A47: QIODevice::read(char*, long long) (qringbuffer_p.h:158) + n2: 32768 0x71298BB: QDataStream::operator>>(int&) (qdatastream.cpp:730) + n1: 32768 0x622524C: KSycoca::findEntry(int, KSycocaType&) (ksycoca.cpp:370) + n1: 32768 0x6185BDF: KServiceFactory::createEntry(int) const (kservicefactory.cpp:196) + n2: 32768 0x6184A2A: KServiceFactory::findServiceByDesktopName(QString const&) (kservicefactory.cpp:117) + n1: 32768 0x617D9CA: KService::serviceByDesktopName(QString const&) (kservice.cpp:598) + n1: 32768 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 32768 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32768 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 6 places, all below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11854 in 7 places, all below massif's threshold (01.00%) + n2: 33232 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 29528 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 29528 in 43 places, all below massif's threshold (01.00%) + n0: 3704 in 3 places, all below massif's threshold (01.00%) + n1: 31840 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 31840 in 29 places, all below massif's threshold (01.00%) +#----------- +snapshot=3 +#----------- +time=365649258 +mem_heap_B=2801009 +mem_heap_extra_B=770383 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=4 +#----------- +time=457724859 +mem_heap_B=4642778 +mem_heap_extra_B=952870 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=5 +#----------- +time=522436381 +mem_heap_B=5761054 +mem_heap_extra_B=1065530 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=6 +#----------- +time=614123105 +mem_heap_B=8157586 +mem_heap_extra_B=1398414 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=7 +#----------- +time=686586974 +mem_heap_B=8328032 +mem_heap_extra_B=1540248 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=8 +#----------- +time=770821732 +mem_heap_B=8731409 +mem_heap_extra_B=1617271 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=9 +#----------- +time=843158668 +mem_heap_B=8821403 +mem_heap_extra_B=1628325 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=10 +#----------- +time=934765523 +mem_heap_B=9030575 +mem_heap_extra_B=1644529 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=11 +#----------- +time=1069981867 +mem_heap_B=9181543 +mem_heap_extra_B=1666257 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=12 +#----------- +time=1145279295 +mem_heap_B=9264775 +mem_heap_extra_B=1675265 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=13 +#----------- +time=1236306490 +mem_heap_B=9360763 +mem_heap_extra_B=1687325 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=14 +#----------- +time=1380112743 +mem_heap_B=9513859 +mem_heap_extra_B=1710933 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=15 +#----------- +time=1477958083 +mem_heap_B=10365510 +mem_heap_extra_B=1711298 +mem_stacks_B=0 +heap_tree=detailed +n16: 10365510 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 3479466 in 2225 places, all below massif's threshold (01.00%) + n3: 1514434 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 187394 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 11 places, all below massif's threshold (01.00%) + n0: 22191 in 4 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n1: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 11 places, all below massif's threshold (01.00%) + n0: 19750 in 4 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 735872 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676416 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676416 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 575928 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 11 places, all below massif's threshold (01.00%) + n0: 25328 in 4 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 100488 in 2 places, all below massif's threshold (01.00%) + n0: 59456 in 78 places, all below massif's threshold (01.00%) + n2: 657378 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 70334 in 7 places, all below massif's threshold (01.00%) + n1: 495688 0x92B4E23: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x92B18EA: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 495688 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 495688 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 495688 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 495688 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 495688 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 495688 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 495688 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 495688 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 495688 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 495688 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 495688 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 495688 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 495688 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 495688 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 495688 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 495688 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 495688 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 495688 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 495688 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 495688 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 495688 0x5050ABB: (below main) (libc-start.c:220) + n2: 492772 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 301592 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 301592 in 15 places, all below massif's threshold (01.00%) + n0: 191180 in 68 places, all below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 276550 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 217330 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 210240 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 210240 in 95 places, all below massif's threshold (01.00%) + n0: 7090 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 231064 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 202808 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 202808 in 203 places, all below massif's threshold (01.00%) + n0: 28256 in 3 places, all below massif's threshold (01.00%) + n1: 229304 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 229304 in 163 places, all below massif's threshold (01.00%) + n2: 200144 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 199696 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 199696 in 632 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 158296 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 158296 in 71 places, all below massif's threshold (01.00%) + n1: 139968 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 139968 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 139968 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 139968 0x92B18EA: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 139968 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 139968 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 139968 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 139968 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 139968 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 139968 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 139968 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 139968 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 139968 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 139968 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 139968 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 139968 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 139968 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 139968 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 139968 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 139968 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 139968 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 139968 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 139968 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 139968 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 139968 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 139968 0x5050ABB: (below main) (libc-start.c:220) + n1: 129073 0x854A97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 129073 0x854C371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 129073 in 20 places, all below massif's threshold (01.00%) +#----------- +snapshot=16 +#----------- +time=1606886836 +mem_heap_B=10154545 +mem_heap_extra_B=1716727 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=17 +#----------- +time=1686841766 +mem_heap_B=10619765 +mem_heap_extra_B=1807795 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=18 +#----------- +time=1835623418 +mem_heap_B=10613687 +mem_heap_extra_B=1811833 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=19 +#----------- +time=1970185566 +mem_heap_B=10756723 +mem_heap_extra_B=1815101 +mem_stacks_B=0 +heap_tree=detailed +n16: 10756723 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 3745567 in 2370 places, all below massif's threshold (01.00%) + n3: 1512762 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185722 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563830 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219198 in 72 places, all below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 291400 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 291400 in 174 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 240736 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 212376 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 212376 in 220 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 198856 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198408 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198408 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n2: 195384 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 193816 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 193816 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 193816 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 193816 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 191256 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 191256 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n1: 191256 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 1568 in 1 place, below massif's threshold (01.00%) + n1: 187880 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 187880 in 80 places, all below massif's threshold (01.00%) + n1: 128917 0x854A97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 128917 0x854C371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 128917 in 20 places, all below massif's threshold (01.00%) +#----------- +snapshot=20 +#----------- +time=2059968847 +mem_heap_B=10758627 +mem_heap_extra_B=1815229 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=21 +#----------- +time=2119771642 +mem_heap_B=10875091 +mem_heap_extra_B=1846573 +mem_stacks_B=0 +heap_tree=detailed +n16: 10875091 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 3832931 in 2376 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563830 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219198 in 72 places, all below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 292128 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 292128 in 174 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 258088 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 229728 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 229728 in 222 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 207512 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 201880 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 201880 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 201880 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 201400 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 197336 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 197336 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n1: 197336 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n0: 197336 in 5 places, all below massif's threshold (01.00%) + n0: 4064 in 4 places, all below massif's threshold (01.00%) + n0: 480 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 5632 in 1 place, below massif's threshold (01.00%) + n2: 198856 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198408 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198408 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 188800 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 188800 in 80 places, all below massif's threshold (01.00%) + n1: 128985 0x854A97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 128985 0x854C371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 128985 in 20 places, all below massif's threshold (01.00%) +#----------- +snapshot=22 +#----------- +time=2209289374 +mem_heap_B=11231955 +mem_heap_extra_B=1923045 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=23 +#----------- +time=2287998368 +mem_heap_B=11473879 +mem_heap_extra_B=1985321 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=24 +#----------- +time=2426972313 +mem_heap_B=11963587 +mem_heap_extra_B=2070173 +mem_stacks_B=0 +heap_tree=detailed +n16: 11963587 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4405132 in 2377 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563830 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219198 in 72 places, all below massif's threshold (01.00%) + n2: 543936 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 461928 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 461928 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 461928 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 269912 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 261200 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 261200 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n1: 261200 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n0: 261200 in 5 places, all below massif's threshold (01.00%) + n0: 8712 in 4 places, all below massif's threshold (01.00%) + n2: 192016 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 190088 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 190088 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 190088 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 190088 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 190088 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 190088 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 190088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 190088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 190088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 190088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 190088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 190088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 190088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 190088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 190088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 190088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 190088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 190088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 190088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 190088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 190088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 190088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 190088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 190088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 190088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1928 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 82008 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 374744 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 346384 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 346384 in 222 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 292872 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 292872 in 174 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 198856 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198408 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198408 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 191760 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 191760 in 80 places, all below massif's threshold (01.00%) + n1: 188496 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 188496 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 188496 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 166192 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 166192 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 166192 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 166192 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 166192 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 166192 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 166192 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 166192 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 166192 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 166192 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 166192 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 166192 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 166192 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 166192 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 166192 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 166192 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 166192 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 166192 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 166192 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 166192 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 166192 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 166192 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 166192 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 166192 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 166192 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 166192 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 166192 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 22304 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=25 +#----------- +time=2558695212 +mem_heap_B=12388191 +mem_heap_extra_B=2196673 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=26 +#----------- +time=2647486659 +mem_heap_B=12661623 +mem_heap_extra_B=2260969 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=27 +#----------- +time=2788263973 +mem_heap_B=13122919 +mem_heap_extra_B=2386545 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=28 +#----------- +time=2871432343 +mem_heap_B=13408675 +mem_heap_extra_B=2431557 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=29 +#----------- +time=2937403065 +mem_heap_B=13643699 +mem_heap_extra_B=2490709 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=30 +#----------- +time=3035897432 +mem_heap_B=13965155 +mem_heap_extra_B=2541613 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=31 +#----------- +time=3133829554 +mem_heap_B=14269547 +mem_heap_extra_B=2628093 +mem_stacks_B=0 +heap_tree=detailed +n20: 14269547 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4412412 in 2376 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 1012680 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 792976 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 792976 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 792976 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 474128 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 462344 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 462344 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 462344 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 271088 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 271088 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 271088 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 271088 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 271088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 271088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 271088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 271088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 271088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 271088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 271088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 271088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 271088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 271088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 271088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 271088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 271088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 271088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 271088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 271088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 271088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 271088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 11784 in 4 places, all below massif's threshold (01.00%) + n2: 318848 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 315960 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 315960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 219704 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 219704 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 219704 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n0: 219704 in 3 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 687880 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 659520 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 368528 in 221 places, all below massif's threshold (01.00%) + n1: 290992 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 290992 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 290992 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 265440 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 252528 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 252528 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 252528 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 252528 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 252528 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 252528 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 252528 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 252528 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 252528 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 252528 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 252528 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 252528 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 252528 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 252528 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 252528 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 252528 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 252528 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 252528 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 252528 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 252528 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 252528 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 252528 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 252528 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 252528 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 12912 in 4 places, all below massif's threshold (01.00%) + n0: 25552 in 1 place, below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n1: 564672 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 564672 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 564672 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 529312 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 529312 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 529312 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 529312 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 529312 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 529312 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 529312 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 529312 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 529312 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 529312 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 529312 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 529312 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 529312 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 529312 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 529312 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 529312 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 529312 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 529312 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 529312 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 529312 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 529312 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 529312 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 529312 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 529312 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 529312 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 529312 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 529312 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 35360 in 4 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 416280 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 416280 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 416280 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 416280 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 376440 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 359304 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 359304 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 359304 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 359304 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 359304 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 359304 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 359304 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 359304 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 359304 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 359304 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 359304 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 359304 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 359304 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 359304 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 359304 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 359304 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 359304 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 359304 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 359304 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 359304 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 359304 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 359304 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 359304 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 359304 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 359304 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 17136 in 4 places, all below massif's threshold (01.00%) + n0: 39840 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 294296 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 294296 in 174 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 265728 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 249088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 249088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 249088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 249088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 249088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 249088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 249088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 249088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 249088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 249088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 249088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 249088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 249088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 249088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 249088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 249088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 249088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 249088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 249088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 249088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 249088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 249088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 249088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 249088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 249088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 249088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 249088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 249088 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 249088 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 16640 in 4 places, all below massif's threshold (01.00%) + n1: 230776 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 230776 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 230440 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 216552 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 202832 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 202832 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 202832 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 202832 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 202832 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 202832 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 202832 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 202832 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 202832 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 202832 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 202832 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 202832 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 202832 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 202832 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 202832 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 202832 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 202832 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 202832 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 202832 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 202832 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 202832 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 202832 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 202832 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 202832 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 202832 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 202832 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 13720 in 4 places, all below massif's threshold (01.00%) + n0: 13888 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1213ED85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x12140D9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x12139EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x12144FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x12145080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x12144D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n1: 208960 0x121B3235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x121B288D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n2: 198912 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198464 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198464 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 198288 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 198288 in 80 places, all below massif's threshold (01.00%) +#----------- +snapshot=32 +#----------- +time=3217205611 +mem_heap_B=14529895 +mem_heap_extra_B=2709041 +mem_stacks_B=0 +heap_tree=detailed +n20: 14529895 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4440048 in 2376 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 1049408 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 819584 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 819584 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 819584 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 500736 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 498176 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 498176 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 498176 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 306920 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 306920 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 306920 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 306920 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 306920 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 306920 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 306920 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 306920 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 306920 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 306920 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 306920 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 306920 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 306920 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 306920 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 306920 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 306920 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 306920 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 306920 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 306920 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 306920 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 306920 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 306920 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n2: 318848 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 315960 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 315960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 229824 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 229824 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 229824 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n0: 229824 in 3 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n2: 733040 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 704680 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 319016 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 319016 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 319016 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 293464 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 279584 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 279584 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 279584 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 279584 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 279584 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 279584 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 279584 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 279584 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 279584 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 279584 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 279584 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 279584 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 279584 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 279584 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 279584 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 279584 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 279584 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 279584 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 279584 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 279584 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 279584 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 279584 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 279584 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 279584 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 13880 in 4 places, all below massif's threshold (01.00%) + n0: 25552 in 1 place, below massif's threshold (01.00%) + n0: 202520 in 220 places, all below massif's threshold (01.00%) + n1: 183144 0x1214A18E: QList::append(bool const&) (qlist.h:479) + n1: 183144 0x12149994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 183144 0x1213CABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n1: 173088 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n0: 173088 in 5 places, all below massif's threshold (01.00%) + n0: 10056 in 1 place, below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n1: 622608 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 622608 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 622608 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 585072 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 585072 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 585072 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 585072 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 585072 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 585072 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 585072 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 585072 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 585072 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 585072 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 585072 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 585072 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 585072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 585072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 585072 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 585072 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 585072 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 585072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 585072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 585072 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 585072 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 585072 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 585072 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 585072 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 585072 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 585072 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 585072 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 37536 in 4 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 457080 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 457080 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 457080 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 457080 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 417240 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 398904 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 398904 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 398904 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 398904 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 398904 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 398904 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 398904 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 398904 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 398904 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 398904 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 398904 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 398904 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 398904 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 398904 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 398904 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 398904 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 398904 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 398904 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 398904 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 398904 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 398904 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 398904 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 398904 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 398904 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 398904 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 18336 in 4 places, all below massif's threshold (01.00%) + n0: 39840 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 294344 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 294344 in 174 places, all below massif's threshold (01.00%) + n2: 292992 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 275328 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 275328 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 275328 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 275328 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 275328 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 275328 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 275328 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 275328 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 275328 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 275328 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 275328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 275328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 275328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 275328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 275328 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 275328 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 275328 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 275328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 275328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 275328 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 275328 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 275328 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 275328 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 275328 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 275328 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 275328 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 275328 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 275328 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 275328 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 17664 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n1: 254464 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 254464 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 254128 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 240240 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 225680 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 225680 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 225680 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 225680 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 225680 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 225680 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 225680 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 225680 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 225680 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 225680 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 225680 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 225680 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 225680 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 225680 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 225680 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 225680 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 225680 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 225680 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 225680 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 225680 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 225680 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 225680 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 225680 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 225680 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 225680 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 225680 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 14560 in 4 places, all below massif's threshold (01.00%) + n0: 13888 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1213ED85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x12140D9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x12139EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x12144FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x12145080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x12144D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n1: 208960 0x121B3235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x121B288D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n1: 199376 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 199376 in 80 places, all below massif's threshold (01.00%) + n2: 198912 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198464 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198464 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=33 +#----------- +time=3329289784 +mem_heap_B=14890433 +mem_heap_extra_B=2815287 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=34 +#----------- +time=3452159417 +mem_heap_B=15152167 +mem_heap_extra_B=2842449 +mem_stacks_B=0 +heap_tree=detailed +n21: 15152167 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4426960 in 2375 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 1166008 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 874872 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 874872 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 874872 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 556024 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 553464 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 553464 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 553464 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 362208 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 362208 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 362208 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 362208 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 362208 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 362208 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 362208 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 362208 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 362208 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 362208 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 362208 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 362208 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 362208 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 362208 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 362208 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 362208 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 362208 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 362208 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 362208 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 362208 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 362208 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 362208 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n2: 318848 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 315960 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 315960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 291136 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 291136 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 291136 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n0: 291136 in 3 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 811704 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 783344 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 368496 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 342944 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 327488 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 327488 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 327488 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 327488 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 327488 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 327488 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 327488 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 327488 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 327488 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 327488 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 327488 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 327488 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 327488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 327488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 327488 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 327488 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 327488 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 327488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 327488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 327488 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 327488 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 327488 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 327488 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 327488 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 15456 in 4 places, all below massif's threshold (01.00%) + n0: 25552 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1214A18E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x12149994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 212384 0x1213CABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n2: 202328 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 190872 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 190872 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 190872 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 190872 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 190872 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 190872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 190872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 190872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 190872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 190872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 190872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 190872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 190872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 190872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 190872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 190872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 190872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 190872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 190872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 190872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 190872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 190872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 190872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 190872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11456 in 4 places, all below massif's threshold (01.00%) + n0: 10056 in 1 place, below massif's threshold (01.00%) + n0: 202464 in 220 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 681088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 681088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 681088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 681088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 681088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 681088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 681088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 681088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 681088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 681088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 681088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 681088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 681088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 681088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 681088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 681088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 681088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 681088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 681088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 40800 in 4 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 527472 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 487632 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 466680 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 466680 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 466680 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 466680 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 466680 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 466680 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 466680 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 466680 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 466680 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 466680 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 466680 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 466680 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 466680 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 466680 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 466680 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 466680 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 466680 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 466680 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 466680 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 466680 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 466680 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 466680 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 466680 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 466680 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 466680 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 20952 in 4 places, all below massif's threshold (01.00%) + n0: 39840 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 320512 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320512 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320512 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 320512 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 320512 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 320512 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320512 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320512 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320512 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320512 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320512 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320512 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320512 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320512 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320512 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320512 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320512 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320512 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 320512 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 320512 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 19200 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295496 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 295496 in 174 places, all below massif's threshold (01.00%) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 280784 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 264880 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 264880 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 264880 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 264880 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 264880 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 264880 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 264880 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 264880 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 264880 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 264880 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 264880 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 264880 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 264880 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 264880 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 264880 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 264880 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 264880 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 264880 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 264880 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 264880 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 264880 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 264880 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 264880 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 264880 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 264880 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 264880 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 15904 in 4 places, all below massif's threshold (01.00%) + n0: 13888 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1213ED85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x12140D9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x12139EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x12144FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x12145080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x12144D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n1: 208960 0x121B3235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x121B288D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n1: 201008 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 201008 in 80 places, all below massif's threshold (01.00%) + n2: 198856 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198408 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198408 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 180432 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n1: 180432 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n0: 180432 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=35 +#----------- +time=3525452764 +mem_heap_B=15163431 +mem_heap_extra_B=2844993 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=36 +#----------- +time=3603434694 +mem_heap_B=15398855 +mem_heap_extra_B=2850793 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=37 +#----------- +time=3722462030 +mem_heap_B=15751885 +mem_heap_extra_B=2859883 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=38 +#----------- +time=3859978591 +mem_heap_B=16201407 +mem_heap_extra_B=2878001 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=39 +#----------- +time=3933897343 +mem_heap_B=16448363 +mem_heap_extra_B=2889317 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=40 +#----------- +time=4013340650 +mem_heap_B=16765335 +mem_heap_extra_B=2878345 +mem_stacks_B=0 +heap_tree=detailed +n21: 16765335 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4524648 in 2375 places, all below massif's threshold (01.00%) + n2: 2298088 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 1149448 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 1149448 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 1149448 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 602064 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 596120 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 596120 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 596120 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 596120 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 596120 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 596120 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 280160 0x121B0D8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 280160 0x121A5F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 280160 0x12192EF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 280160 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 280160 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 280160 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 280160 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 280160 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 280160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 280160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 280160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 280160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 280160 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 280160 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 280160 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 280160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 280160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 280160 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 280160 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5944 in 4 places, all below massif's threshold (01.00%) + n2: 547384 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 544824 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 544824 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 544824 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 353568 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 353568 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 353568 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 353568 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 353568 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 353568 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 353568 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 353568 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 353568 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 353568 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 353568 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 353568 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 353568 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 353568 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 353568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 353568 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 353568 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 353568 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 353568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 353568 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 1148640 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 1148640 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 1148640 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 1050744 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 1037736 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 1037736 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 1037736 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 1037736 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1037736 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1037736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1037736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 1037736 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 1037736 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 1037736 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 1037736 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 1037736 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 1037736 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 1037736 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1037736 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1037736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1037736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 1037736 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 1037736 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 1037736 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1037736 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1037736 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 1037736 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 1037736 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 1037736 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 13008 in 1 place, below massif's threshold (01.00%) + n0: 97896 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 811664 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 783304 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 368496 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 332432 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 317240 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 317240 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 317240 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 317240 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 317240 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 317240 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 317240 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 317240 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 317240 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 317240 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 317240 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 317240 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 317240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 317240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 317240 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 317240 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 317240 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 317240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 317240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 317240 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 317240 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 317240 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 317240 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 317240 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 15192 in 4 places, all below massif's threshold (01.00%) + n0: 36064 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1214A18E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x12149994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n1: 212384 0x1213CABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n0: 212384 in 2 places, all below massif's threshold (01.00%) + n0: 202424 in 220 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 681088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 681088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 681088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 681088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 681088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 681088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 681088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 681088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 681088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 681088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 681088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 681088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 681088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 681088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 681088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 681088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 681088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 681088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 681088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 40800 in 4 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 563600 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 563600 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 430320 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 430320 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 325696 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 314064 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 314064 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 314064 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 314064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 314064 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 314064 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 314064 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 314064 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 314064 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 314064 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 314064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314064 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 314064 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 314064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314064 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314064 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314064 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314064 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 314064 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11632 in 1 place, below massif's threshold (01.00%) + n0: 104624 in 2 places, all below massif's threshold (01.00%) + n0: 133280 in 1 place, below massif's threshold (01.00%) + n1: 527472 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 472800 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 452160 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 452160 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 452160 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 452160 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 452160 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 452160 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 452160 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 452160 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 452160 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 452160 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 452160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 452160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 452160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 452160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 452160 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 452160 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 452160 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 452160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 452160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 452160 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 452160 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 452160 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 452160 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 452160 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 452160 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 20640 in 4 places, all below massif's threshold (01.00%) + n0: 54672 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 320512 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320512 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320512 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 320512 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 320512 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 320512 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320512 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320512 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320512 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320512 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320512 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320512 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320512 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320512 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320512 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320512 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320512 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320512 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 320512 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 320512 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 19200 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295496 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 295496 in 174 places, all below massif's threshold (01.00%) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 272496 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 256816 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 256816 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 256816 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 256816 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 256816 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 256816 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 256816 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 256816 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 256816 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 256816 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 256816 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 256816 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 256816 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 256816 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 256816 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 256816 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 256816 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 256816 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 256816 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 256816 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 256816 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 256816 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 256816 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 256816 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 256816 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 256816 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 15680 in 4 places, all below massif's threshold (01.00%) + n0: 22176 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1213ED85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x12140D9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x12139EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x12144FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x12145080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x12144D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n2: 208960 0x121B3235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x121B288D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 2 places, all below massif's threshold (01.00%) + n1: 201280 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 201280 in 80 places, all below massif's threshold (01.00%) + n2: 198856 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198408 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198408 in 641 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=41 +#----------- +time=4146279789 +mem_heap_B=17042271 +mem_heap_extra_B=2886617 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=42 +#----------- +time=4252156220 +mem_heap_B=17423311 +mem_heap_extra_B=2896609 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=43 +#----------- +time=4315987612 +mem_heap_B=17648559 +mem_heap_extra_B=2901881 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=44 +#----------- +time=4414446965 +mem_heap_B=17835319 +mem_heap_extra_B=2879081 +mem_stacks_B=0 +heap_tree=detailed +n19: 17835319 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4752040 in 2377 places, all below massif's threshold (01.00%) + n2: 3147208 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 1868304 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 1868304 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 1868304 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 1801680 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 1789720 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 1789720 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 1789720 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 1789720 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1789720 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1789720 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1789720 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 1789720 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 1789720 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 1789720 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 1789720 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 1789720 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 1789720 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 1789720 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1789720 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1789720 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1789720 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 1789720 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 1789720 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 1789720 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1789720 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1789720 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 1789720 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 1789720 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 1789720 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11960 in 1 place, below massif's threshold (01.00%) + n0: 66624 in 2 places, all below massif's threshold (01.00%) + n1: 1278904 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 1278904 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 1278904 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 732000 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 726056 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 726056 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 726056 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 623200 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 623200 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 623200 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 307240 0x121B0D8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 307240 0x121A5F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 307240 0x12192EF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 307240 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 307240 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 307240 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 307240 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 307240 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 307240 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 307240 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 307240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307240 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 307240 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 307240 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 307240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307240 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 307240 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 102856 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5944 in 4 places, all below massif's threshold (01.00%) + n2: 546904 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 544344 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 544344 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 544344 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 353088 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 353088 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 353088 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 353088 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 353088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 353088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 353088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 353088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 353088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 353088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 353088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 353088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 353088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 353088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 353088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 353088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 353088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 353088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n1: 909472 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 909472 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 694672 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 694672 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 575648 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 567200 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 567200 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 567200 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 567200 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 567200 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 567200 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 567200 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 567200 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 567200 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 567200 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 567200 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 567200 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 567200 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 567200 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 567200 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 567200 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 567200 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 567200 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 567200 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 567200 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 567200 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 567200 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 567200 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 567200 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 567200 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8448 in 1 place, below massif's threshold (01.00%) + n0: 119024 in 2 places, all below massif's threshold (01.00%) + n1: 214800 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n1: 214800 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n0: 214800 in 3 places, all below massif's threshold (01.00%) + n2: 807208 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 778848 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 364080 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 364080 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 364080 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 328504 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 313352 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 313352 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 313352 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 313352 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 313352 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 313352 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 313352 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 313352 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 313352 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 313352 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 313352 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 313352 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 313352 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313352 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313352 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 313352 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 313352 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 313352 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313352 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313352 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 313352 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 313352 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 313352 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 313352 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 15152 in 4 places, all below massif's threshold (01.00%) + n0: 35576 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1214A18E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x12149994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n1: 212384 0x1213CABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n0: 212384 in 2 places, all below massif's threshold (01.00%) + n0: 202384 in 220 places, all below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 681088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 681088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 681088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 681088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 681088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 681088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 681088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 681088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 681088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 681088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 681088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 681088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 681088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 681088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 681088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 681088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 681088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 681088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 681088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 40800 in 4 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 520728 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 520728 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 520728 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 520728 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 467568 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 446952 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 446952 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 446952 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 446952 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 446952 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 446952 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 446952 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 446952 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 446952 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 446952 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 446952 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 446952 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 446952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446952 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 446952 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 446952 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 446952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446952 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 446952 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 446952 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 446952 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 446952 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 446952 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 20616 in 4 places, all below massif's threshold (01.00%) + n0: 53160 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 320512 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320512 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320512 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 320512 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 320512 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 320512 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320512 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320512 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320512 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320512 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320512 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320512 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320512 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320512 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320512 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320512 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320512 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320512 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 320512 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 320512 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 19200 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295528 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 295528 in 174 places, all below massif's threshold (01.00%) + n1: 295064 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295064 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294728 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 269416 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 253792 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 253792 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 253792 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 253792 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 253792 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 253792 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 253792 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 253792 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 253792 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 253792 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 253792 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 253792 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 253792 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253792 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253792 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 253792 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 253792 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 253792 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253792 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253792 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 253792 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 253792 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 253792 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 253792 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 253792 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 253792 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 15624 in 4 places, all below massif's threshold (01.00%) + n0: 25312 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214272 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214272 in 99 places, all below massif's threshold (01.00%) + n0: 8948 in 2 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) + n1: 278616 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 278616 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 219856 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 214552 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 214552 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 214552 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 214552 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 214552 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 214552 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 214552 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 214552 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 214552 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 214552 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 214552 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 214552 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 214552 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 214552 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 214552 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 214552 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 214552 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 214552 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 214552 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 214552 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 214552 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 214552 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 214552 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 214552 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 214552 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 214552 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 214552 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5304 in 1 place, below massif's threshold (01.00%) + n0: 58760 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=45 +#----------- +time=4562064255 +mem_heap_B=18384519 +mem_heap_extra_B=2895193 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=46 +#----------- +time=4695389950 +mem_heap_B=18784879 +mem_heap_extra_B=2905457 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=47 +#----------- +time=4781036242 +mem_heap_B=18946463 +mem_heap_extra_B=2890033 +mem_stacks_B=0 +heap_tree=detailed +n19: 18946463 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4640048 in 2377 places, all below massif's threshold (01.00%) + n2: 3981648 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2702744 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2702744 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2702744 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2648664 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2640248 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2640248 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2640248 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2640248 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2640248 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2640248 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2640248 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2640248 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 2640248 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2640248 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2640248 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2640248 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2640248 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2640248 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2640248 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2640248 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2640248 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2640248 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2640248 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2640248 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2640248 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2640248 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2640248 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2640248 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2640248 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8416 in 1 place, below massif's threshold (01.00%) + n0: 54080 in 2 places, all below massif's threshold (01.00%) + n1: 1278904 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 1278904 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 1278904 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 732000 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 726056 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 726056 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 726056 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 726056 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 726056 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 726056 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 410096 0x121B0D8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 410096 0x121A5F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 410096 0x12192EF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 410096 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 410096 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 410096 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 410096 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 410096 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 410096 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 410096 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 410096 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 410096 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 410096 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5944 in 4 places, all below massif's threshold (01.00%) + n2: 546904 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 544344 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 544344 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 544344 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 353088 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 353088 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 353088 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 353088 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 353088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 353088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 353088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 353088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 353088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 353088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 353088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 353088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 353088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 353088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 353088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 353088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 353088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 353088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1208048 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1208048 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 921712 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 921712 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 802688 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 795824 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 795824 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 795824 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 795824 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 795824 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 795824 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 795824 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 795824 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 795824 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 795824 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 795824 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 795824 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 795824 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 795824 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 795824 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 795824 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 795824 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 795824 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 795824 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 795824 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 795824 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 795824 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 795824 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 795824 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 795824 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6864 in 1 place, below massif's threshold (01.00%) + n0: 119024 in 2 places, all below massif's threshold (01.00%) + n1: 286336 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 286336 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 251040 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 249568 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 249568 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 249568 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 249568 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 249568 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 249568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 249568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 249568 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 249568 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 249568 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 249568 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 249568 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 249568 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 249568 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 249568 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 249568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 249568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 249568 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 249568 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 249568 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 249568 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 249568 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 249568 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 249568 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 249568 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1472 in 1 place, below massif's threshold (01.00%) + n0: 35296 in 2 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 805304 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 776944 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 414928 in 221 places, all below massif's threshold (01.00%) + n1: 362016 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 362016 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 362016 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 328224 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 313072 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 313072 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 313072 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 313072 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 313072 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 313072 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 313072 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 313072 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 313072 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 313072 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 313072 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 313072 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 313072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313072 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 313072 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 313072 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 313072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313072 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 313072 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 313072 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 313072 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 313072 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 15152 in 4 places, all below massif's threshold (01.00%) + n0: 33792 in 1 place, below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 681088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 681088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 681088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 681088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 681088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 681088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 681088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 681088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 681088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 681088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 681088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 681088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 681088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 681088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 681088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 681088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 681088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 681088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 681088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 40800 in 4 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563894 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219262 in 72 places, all below massif's threshold (01.00%) + n1: 514248 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 514248 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 514248 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 514248 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 467280 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 446664 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 446664 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 446664 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 446664 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 446664 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 446664 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 446664 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 446664 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 446664 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 446664 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 446664 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 446664 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 446664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446664 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 446664 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 446664 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 446664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446664 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 446664 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 446664 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 446664 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 446664 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 446664 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 20616 in 4 places, all below massif's threshold (01.00%) + n0: 46968 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 377208 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 377208 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 318448 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 313872 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 313872 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 313872 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 313872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 313872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 313872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 313872 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 313872 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 313872 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 313872 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 313872 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 313872 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 313872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 313872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 313872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313872 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 313872 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 313872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 313872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 313872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 313872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 313872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 313872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 313872 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 313872 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4576 in 1 place, below massif's threshold (01.00%) + n0: 58760 in 4 places, all below massif's threshold (01.00%) + n2: 339712 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 320512 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320512 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320512 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 320512 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 320512 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 320512 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320512 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320512 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320512 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320512 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320512 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320512 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320512 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320512 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320512 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320512 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320512 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320512 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 320512 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 320512 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 19200 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295496 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 295496 in 174 places, all below massif's threshold (01.00%) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 268912 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 253288 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 253288 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 253288 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 253288 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 253288 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 253288 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 253288 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 253288 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 253288 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 253288 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 253288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 253288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 253288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253288 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 253288 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 253288 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 253288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253288 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 253288 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 253288 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 253288 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 253288 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 253288 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 253288 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 15624 in 4 places, all below massif's threshold (01.00%) + n0: 25760 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n1: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n0: 223220 in 3 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=48 +#----------- +time=4888893299 +mem_heap_B=19406715 +mem_heap_extra_B=2901493 +mem_stacks_B=0 +heap_tree=peak +n19: 19406715 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4699372 in 2377 places, all below massif's threshold (01.00%) + n2: 4251496 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2972592 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2972592 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2972592 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2920536 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2915216 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2915216 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2915216 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2915216 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2915216 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2915216 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2915216 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2915216 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 2915216 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2915216 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2915216 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2915216 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2915216 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2915216 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2915216 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2915216 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2915216 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2915216 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2915216 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2915216 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2915216 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2915216 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2915216 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2915216 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2915216 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5320 in 1 place, below massif's threshold (01.00%) + n0: 52056 in 2 places, all below massif's threshold (01.00%) + n1: 1278904 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 1278904 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 1278904 0x1213CB06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 732000 0x12144335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 726056 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 726056 0x121B3614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 726056 0x121B3AF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 726056 0x121B2EEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 726056 0x121B2857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 726056 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 410096 0x121B0D8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 410096 0x121A5F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 410096 0x12192EF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 410096 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 410096 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 410096 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 410096 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 410096 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 410096 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 410096 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 410096 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 410096 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 410096 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 315960 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5944 in 4 places, all below massif's threshold (01.00%) + n2: 546904 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 544344 0x12144061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 544344 0x121AC54D: KateViewInternal::doUpdateView(bool, int) (kateviewinternal.cpp:599) + n2: 544344 0x121AC3F9: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:575) + n1: 353088 0x121AC0BA: KateViewInternal::scrollPos(KTextEditor::Cursor&, bool, bool) (kateviewinternal.cpp:518) + n1: 353088 0x121ACADD: KateViewInternal::makeVisible(KTextEditor::Cursor const&, int, bool, bool, bool) (kateviewinternal.cpp:671) + n1: 353088 0x121B2848: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1916) + n1: 353088 0x121B08B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 353088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 353088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 353088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 353088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 353088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 353088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 353088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 353088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 353088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 353088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 353088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 353088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 353088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 353088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 353088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n0: 353088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191256 in 4 places, all below massif's threshold (01.00%) + n0: 2560 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x13BCD6BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC8673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x13BC86BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1304320 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1304320 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 995664 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 995664 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 876640 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 870384 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 870384 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 870384 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 870384 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 870384 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 870384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 870384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 870384 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 870384 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 870384 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 870384 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 870384 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 870384 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 870384 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 870384 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 870384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 870384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 870384 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 870384 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 870384 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 870384 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 870384 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 870384 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 870384 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 870384 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6256 in 1 place, below massif's threshold (01.00%) + n0: 119024 in 2 places, all below massif's threshold (01.00%) + n1: 308656 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 308656 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 273360 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 272128 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 272128 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 272128 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 272128 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 272128 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 272128 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 272128 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 272128 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 272128 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 272128 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 272128 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 272128 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 272128 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 272128 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 272128 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 272128 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 272128 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 272128 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 272128 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 272128 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 272128 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 272128 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 272128 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 272128 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 272128 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1232 in 1 place, below massif's threshold (01.00%) + n0: 35296 in 2 places, all below massif's threshold (01.00%) + n3: 924501 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 412779 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 412779 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 377538 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 377538 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 22191 in 5 places, all below massif's threshold (01.00%) + n0: 35241 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 338000 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 338000 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 302402 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 302402 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282652 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26748 in 12 places, all below massif's threshold (01.00%) + n0: 19750 in 5 places, all below massif's threshold (01.00%) + n0: 35598 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 173722 in 11 places, all below massif's threshold (01.00%) + n2: 805184 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 776824 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 414808 in 221 places, all below massif's threshold (01.00%) + n1: 362016 0x120C552E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 362016 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 362016 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 328224 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 313072 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 313072 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 313072 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 313072 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 313072 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 313072 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 313072 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 313072 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 313072 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 313072 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 313072 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 313072 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 313072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313072 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 313072 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 313072 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 313072 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 313072 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 313072 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 313072 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 313072 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 313072 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 313072 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 15152 in 4 places, all below massif's threshold (01.00%) + n0: 33792 in 1 place, below massif's threshold (01.00%) + n0: 28360 in 3 places, all below massif's threshold (01.00%) + n2: 754648 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 676696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 676696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 576152 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 575928 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 575928 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 532952 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 532952 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507624 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 462080 0x1216A7A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 462080 0x1223E1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 462080 0x1223FBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 462080 0x1220F1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 462080 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 462080 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 462080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 462080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 462080 0x5050ABB: (below main) (libc-start.c:220) + n0: 45544 in 12 places, all below massif's threshold (01.00%) + n0: 25328 in 5 places, all below massif's threshold (01.00%) + n0: 42976 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 100544 in 2 places, all below massif's threshold (01.00%) + n0: 77952 in 82 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x1213C7BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 681088 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 681088 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 681088 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 681088 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 681088 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 681088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 681088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 681088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 681088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 681088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 681088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 681088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 681088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 681088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 681088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 681088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 681088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 681088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 681088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 681088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 681088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 681088 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 681088 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 40800 in 4 places, all below massif's threshold (01.00%) + n2: 713874 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x1211AEDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1211494C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 126830 in 8 places, all below massif's threshold (01.00%) + n2: 563766 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 344632 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 344632 in 15 places, all below massif's threshold (01.00%) + n0: 219134 in 72 places, all below massif's threshold (01.00%) + n1: 514248 0x120C588B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 514248 0x120C5549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 514248 0x1213A315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 514248 0x1213C9CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 467280 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 446664 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 446664 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 446664 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 446664 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 446664 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 446664 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 446664 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 446664 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 446664 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 446664 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 446664 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 446664 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 446664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446664 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 446664 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 446664 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 446664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 446664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 446664 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 446664 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 446664 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 446664 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 446664 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 446664 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 20616 in 4 places, all below massif's threshold (01.00%) + n0: 46968 in 1 place, below massif's threshold (01.00%) + n1: 412360 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 412360 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 353600 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 349440 0x1213B163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 349440 0x121B7AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 349440 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 349440 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 349440 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 349440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 349440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 349440 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n1: 349440 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 349440 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 349440 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 349440 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 349440 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 349440 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 349440 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 349440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 349440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 349440 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 349440 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 349440 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 349440 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 349440 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 349440 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 349440 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 349440 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 349440 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 349440 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4160 in 1 place, below massif's threshold (01.00%) + n0: 58760 in 4 places, all below massif's threshold (01.00%) + n1: 403752 0x120AEFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1210E4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x1211B851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x12170C9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1211634F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x121157A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x12104157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x1219FF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x121A4B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x12144442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 320512 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320512 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320512 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 320512 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 320512 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 320512 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320512 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320512 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320512 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320512 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320512 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320512 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320512 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320512 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320512 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320512 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320512 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320512 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320512 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320512 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320512 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 320512 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 320512 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 320512 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 19200 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x15059591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x1505A913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 297248 0x12114934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x120F2D75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x120F164B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295400 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 295400 in 174 places, all below massif's threshold (01.00%) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x1213CA4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 268912 0x12144514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 253288 0x121AF989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 253288 0x121B0847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 253288 0x121B1129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 253288 0x121A5F66: KateView::pageDown() (kateview.cpp:2468) + n1: 253288 0x12192F1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 253288 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 253288 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 253288 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 253288 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 253288 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 253288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 253288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 253288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253288 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 253288 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 253288 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 253288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 253288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 253288 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 253288 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 253288 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 253288 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 253288 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 253288 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 253288 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 15624 in 4 places, all below massif's threshold (01.00%) + n0: 25760 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 282440 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n1: 223220 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n0: 223220 in 3 places, all below massif's threshold (01.00%) + n0: 59220 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=49 +#----------- +time=4925539133 +mem_heap_B=19460795 +mem_heap_extra_B=2902045 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=50 +#----------- +time=4985351313 +mem_heap_B=19472515 +mem_heap_extra_B=2904797 +mem_stacks_B=0 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.kate3 b/massif-visualizer/test/data/massif.out.kate3 new file mode 100644 index 00000000..d82d847b --- /dev/null +++ b/massif-visualizer/test/data/massif.out.kate3 @@ -0,0 +1,9904 @@ +desc: --massif-out-file=/home/milian/projects/kde4/massif-visualizer/test/data/massif.out.kate3 +cmd: kate --line 5307 test_duchain.cpp +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=121696798 +mem_heap_B=1049767 +mem_heap_extra_B=258161 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=2 +#----------- +time=312716347 +mem_heap_B=1013199 +mem_heap_extra_B=247089 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=3 +#----------- +time=435127079 +mem_heap_B=1041596 +mem_heap_extra_B=257436 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=4 +#----------- +time=586207972 +mem_heap_B=1030523 +mem_heap_extra_B=255685 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=5 +#----------- +time=702226074 +mem_heap_B=1563540 +mem_heap_extra_B=372436 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=6 +#----------- +time=961528025 +mem_heap_B=1761589 +mem_heap_extra_B=429507 +mem_stacks_B=0 +heap_tree=detailed +n13: 1761589 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 489260 in 735 places, all below massif's threshold (01.00%) + n5: 343952 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 111330 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n3: 111330 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 82392 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 82392 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n1: 49841 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 49841 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 49841 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 49841 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n2: 49841 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n1: 39393 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 39393 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 39393 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 39393 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 39393 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 39393 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 39393 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 39393 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 39393 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 39393 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 39393 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 39393 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 39393 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 39393 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 39393 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 39393 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 39393 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 39393 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 39393 0x5050ABB: (below main) (libc-start.c:220) + n0: 10448 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 21949 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 21949 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 21949 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 21949 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 21949 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 21949 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 21949 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 21949 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 21949 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 21949 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 21949 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 21949 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 21949 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 21949 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 21949 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 10602 in 2 places, all below massif's threshold (01.00%) + n1: 26396 0x60D2158: KConfigPrivate::parseGlobalFiles() (kconfig.cpp:484) + n1: 26396 0x60D33F7: KConfig::reparseConfiguration() (kconfig.cpp:451) + n0: 26396 in 4 places, all below massif's threshold (01.00%) + n0: 2542 in 1 place, below massif's threshold (01.00%) + n1: 110896 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n3: 110896 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 82078 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 82078 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n1: 43128 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 43128 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 43128 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 43128 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n2: 43128 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n1: 33996 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 33996 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 33996 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 33996 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 33996 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 33996 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 33996 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 33996 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 33996 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 33996 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 33996 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 33996 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 33996 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 33996 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 33996 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 33996 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 33996 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 33996 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 33996 0x5050ABB: (below main) (libc-start.c:220) + n0: 9132 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 27930 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 27930 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 27930 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 27930 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 27930 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 27930 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 27930 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 27930 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 27930 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 27930 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 27930 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 27930 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 27930 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 27930 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 27930 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 11020 in 2 places, all below massif's threshold (01.00%) + n1: 25692 0x60D2158: KConfigPrivate::parseGlobalFiles() (kconfig.cpp:484) + n1: 25692 0x60D33F7: KConfig::reparseConfiguration() (kconfig.cpp:451) + n0: 25692 in 4 places, all below massif's threshold (01.00%) + n0: 3126 in 1 place, below massif's threshold (01.00%) + n3: 70184 0x70B8C40: QByteArray::mid(int, int) const (qbytearray.cpp:2592) + n1: 41134 0x7170FE1: QConfFileSettingsPrivate::readIniFile(QByteArray const&, QMap*) (qsettings.cpp:1755) + n1: 41134 0x717668A: QConfFileSettingsPrivate::syncConfFile(int) (qsettings.cpp:1530) + n1: 41134 0x717697C: QConfFileSettingsPrivate::sync() (qsettings.cpp:1382) + n2: 41134 0x71694C4: QConfFileSettingsPrivate::initAccess() (qsettings.cpp:1037) + n1: 41134 0x71742AC: QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:1205) + n1: 41134 0x7174656: QSettingsPrivate::create(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:366) + n1: 41134 0x7174DE9: QSettings::QSettings(QSettings::Scope, QString const&, QString const&, QObject*) (qsettings.cpp:2601) + n1: 41134 0x55DB68F: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:827) + n1: 41134 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 41134 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 41134 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 41134 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 41134 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 41134 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 41134 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 41134 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 28494 0x61262C8: KDebugPrivate::loadAreaNames() (kdebug.cpp:302) + n1: 28494 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 28494 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 28494 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 28494 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 28494 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 28494 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 28494 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 28494 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 28494 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 28494 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 28494 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 28494 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 28494 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 28494 0x5050ABB: (below main) (libc-start.c:220) + n0: 556 in 11 places, all below massif's threshold (01.00%) + n1: 51542 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 51542 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 43936 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 43936 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 24700 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 24700 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 24700 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 24700 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 24700 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 24700 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 24700 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 24700 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 24700 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 24700 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 24700 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 24700 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 24700 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 24700 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 24700 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 19236 in 3 places, all below massif's threshold (01.00%) + n0: 7606 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n2: 253296 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 229696 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 229696 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 152808 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 152808 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n3: 152808 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 117584 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 117584 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n1: 66696 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 66696 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 66696 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 66696 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n2: 66696 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n1: 52728 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 52728 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 52728 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 52728 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 52728 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 52728 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 52728 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 52728 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 52728 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 52728 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 52728 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 52728 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 52728 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 52728 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 52728 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 52728 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n0: 52728 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 13968 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 37960 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 37960 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 37960 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 37960 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 37960 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 37960 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 37960 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 37960 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 37960 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 37960 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 37960 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 37960 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37960 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37960 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 37960 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 12928 in 2 places, all below massif's threshold (01.00%) + n1: 31008 0x60D2158: KConfigPrivate::parseGlobalFiles() (kconfig.cpp:484) + n1: 31008 0x60D33F7: KConfig::reparseConfiguration() (kconfig.cpp:451) + n0: 31008 in 4 places, all below massif's threshold (01.00%) + n0: 4216 in 1 place, below massif's threshold (01.00%) + n1: 69664 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 69664 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 69664 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 60408 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 60408 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 38080 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 38080 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 38080 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 38080 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 38080 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 38080 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 38080 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 38080 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 38080 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 38080 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 38080 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 38080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 38080 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 22328 in 3 places, all below massif's threshold (01.00%) + n0: 9256 in 2 places, all below massif's threshold (01.00%) + n0: 7224 in 1 place, below massif's threshold (01.00%) + n0: 23600 in 14 places, all below massif's threshold (01.00%) + n4: 236744 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 92048 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n1: 87848 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n1: 87848 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n1: 87848 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 87848 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 87848 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 80840 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 80840 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 80840 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 80840 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 80840 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 80840 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 80840 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 80840 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 80840 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 80840 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 80840 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 80840 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 80840 0x5050ABB: (below main) (libc-start.c:220) + n0: 7008 in 3 places, all below massif's threshold (01.00%) + n0: 4200 in 8 places, all below massif's threshold (01.00%) + n2: 79056 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n1: 71680 0x69788DB: KIconThemeDir::KIconThemeDir(QString const&, QString const&, KConfigGroup const&) (qstring.h:269) + n2: 71680 0x697A488: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:208) + n2: 56320 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 40960 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 40960 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 40960 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 40960 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 40960 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 40960 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 40960 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 40960 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 40960 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 40960 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 40960 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 40960 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 40960 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 40960 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 40960 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 40960 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 40960 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 40960 0x5050ABB: (below main) (libc-start.c:220) + n0: 15360 in 1 place, below massif's threshold (01.00%) + n0: 15360 in 1 place, below massif's threshold (01.00%) + n0: 7376 in 77 places, all below massif's threshold (01.00%) + n2: 56558 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 56380 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n1: 56380 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56380 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56380 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9392 in 3 places, all below massif's threshold (01.00%) + n0: 178 in 1 place, below massif's threshold (01.00%) + n0: 9082 in 33 places, all below massif's threshold (01.00%) + n2: 66724 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 58066 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 56156 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n1: 56156 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56156 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56156 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9168 in 3 places, all below massif's threshold (01.00%) + n0: 1910 in 45 places, all below massif's threshold (01.00%) + n0: 8658 in 5 places, all below massif's threshold (01.00%) + n1: 65536 0x5627710: QImageData::create(QSize const&, QImage::Format, int) (qimage.cpp:242) + n2: 65536 0x5627C49: QImage::QImage(int, int, QImage::Format) (qimage.cpp:837) + n1: 65536 0x5629E89: QImage::copy(QRect const&) const (qimage.cpp:1403) + n1: 65536 0x697455F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1201) + n1: 65536 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 65536 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 65536 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 65536 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 65536 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 65536 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 65536 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 65536 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 65536 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 65536 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 65536 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 65536 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 65536 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 65536 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 65536 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 65280 0x505168F: __gconv_open (gconv_open.c:284) + n1: 65280 0x5051000: iconv_open (iconv_open.c:72) + n2: 65280 0x71DF106: QIconvCodec::createIconv_t(char const*, char const*) (qiconvcodec.cpp:453) + n1: 32640 0x71DF954: QIconvCodec::convertToUnicode(char const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:205) + n1: 32640 0x70FE96C: QString::fromLocal8Bit(char const*, int) (qtextcodec.h:119) + n1: 32640 0x7135223: locale_decode(QByteArray const&) (qfile.cpp:76) + n1: 32640 0x71350C8: QFile::decodeName(QByteArray const&) (qfile.cpp:500) + n1: 32640 0x71831DE: QFSFileEngine::currentPath(QString const&) (qfsfileengine_unix.cpp:564) + n1: 32640 0x712B5B8: QDir::currentPath() (qdir.cpp:1881) + n1: 32640 0x614DCA5: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n1: 32640 0x71E003A: QIconvCodec::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) const (qiconvcodec.cpp:327) + n1: 32640 0x71D9E25: QTextCodec::fromUnicode(QString const&) const (qtextcodec.cpp:1195) + n1: 32640 0x70FB0BF: QString::toLocal8Bit() const (qstring.cpp:3511) + n1: 32640 0x614DCB0: KCmdLineArgs::init(int, char**, KAboutData const*, QFlags) (kcmdlineargs.cpp:475) + n1: 32640 0x4E2BC86: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32640 0x5050ABB: (below main) (libc-start.c:220) + n2: 60952 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n1: 42912 0x612647D: KDebugPrivate::loadAreaNames() (qhash.h:542) + n1: 42912 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 42912 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 42912 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 42912 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 42912 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 42912 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 42912 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 42912 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 42912 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 42912 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 42912 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 42912 0x5050ABB: (below main) (libc-start.c:220) + n0: 18040 in 93 places, all below massif's threshold (01.00%) + n1: 44033 0x400AF2D: _dl_new_object (dl-object.c:52) + n1: 44033 0x400647A: _dl_map_object_from_fd (dl-load.c:966) + n2: 44033 0x40083A6: _dl_map_object (dl-load.c:2235) + n1: 28770 0x4012D47: dl_open_worker (dl-open.c:289) + n1: 28770 0x400E384: _dl_catch_error (dl-error.c:178) + n2: 28770 0x40126C5: _dl_open (dl-open.c:615) + n1: 25230 0xBEB3F64: dlopen_doit (dlopen.c:67) + n1: 25230 0x400E384: _dl_catch_error (dl-error.c:178) + n1: 25230 0xBEB42AA: _dlerror_run (dlerror.c:164) + n1: 25230 0xBEB3EDF: dlopen@@GLIBC_2.2.5 (dlopen.c:88) + n1: 25230 0x719C1F1: QLibraryPrivate::load_sys() (qlibrary_unix.cpp:205) + n0: 25230 in 4 places, all below massif's threshold (01.00%) + n0: 3540 in 1 place, below massif's threshold (01.00%) + n0: 15263 in 1 place, below massif's threshold (01.00%) + n2: 40772 0x70B9536: QByteArray::realloc(int) (qbytearray.cpp:1412) + n2: 32768 0x70B99A7: QByteArray::resize(int) (qbytearray.cpp:1380) + n2: 32768 0x7142A47: QIODevice::read(char*, long long) (qringbuffer_p.h:158) + n2: 32768 0x71298BB: QDataStream::operator>>(int&) (qdatastream.cpp:730) + n1: 32768 0x622524C: KSycoca::findEntry(int, KSycocaType&) (ksycoca.cpp:370) + n1: 32768 0x6185BDF: KServiceFactory::createEntry(int) const (kservicefactory.cpp:196) + n2: 32768 0x6184A2A: KServiceFactory::findServiceByDesktopName(QString const&) (kservicefactory.cpp:117) + n1: 32768 0x617D9CA: KService::serviceByDesktopName(QString const&) (kservice.cpp:598) + n1: 32768 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 32768 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 32768 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 32768 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 7 places, all below massif's threshold (01.00%) + n0: 0 in 8 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 8004 in 7 places, all below massif's threshold (01.00%) + n2: 36760 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 32968 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 32968 in 49 places, all below massif's threshold (01.00%) + n0: 3792 in 3 places, all below massif's threshold (01.00%) + n1: 32272 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 32272 in 31 places, all below massif's threshold (01.00%) + n1: 26008 0x70FB989: QString::realloc(int) (qstring.cpp:1242) + n0: 26008 in 8 places, all below massif's threshold (01.00%) +#----------- +snapshot=7 +#----------- +time=1119312370 +mem_heap_B=2960421 +mem_heap_extra_B=752795 +mem_stacks_B=0 +heap_tree=detailed +n12: 2960421 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n5: 875827 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 378806 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 378806 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 349988 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 349988 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 295840 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 267910 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 267910 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 267910 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 267910 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 267910 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 267910 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 267910 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 267910 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 267910 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 267910 0x5050ABB: (below main) (libc-start.c:220) + n0: 27930 in 4 places, all below massif's threshold (01.00%) + n1: 43128 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 43128 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 43128 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 43128 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n1: 43128 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n0: 43128 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11020 in 2 places, all below massif's threshold (01.00%) + n0: 28818 in 2 places, all below massif's threshold (01.00%) + n1: 317542 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 317542 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 288604 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 288604 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 228161 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 206212 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 206212 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 206212 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 206212 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 206212 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 206212 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 206212 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 206212 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 206212 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 206212 0x5050ABB: (below main) (libc-start.c:220) + n0: 21949 in 4 places, all below massif's threshold (01.00%) + n1: 49841 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 49841 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 49841 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 49841 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n2: 49841 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n1: 39393 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 39393 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 39393 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 39393 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 39393 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 39393 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 39393 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 39393 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 39393 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 39393 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 39393 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 39393 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 39393 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 39393 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 39393 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 39393 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 39393 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 39393 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 39393 0x5050ABB: (below main) (libc-start.c:220) + n0: 10448 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 10602 in 2 places, all below massif's threshold (01.00%) + n0: 28938 in 2 places, all below massif's threshold (01.00%) + n1: 109255 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 109255 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 101649 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 101649 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 82413 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 57713 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 57713 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 57713 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 57713 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 57713 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 57713 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 57713 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 57713 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 57713 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 57713 0x5050ABB: (below main) (libc-start.c:220) + n0: 24700 in 4 places, all below massif's threshold (01.00%) + n0: 19236 in 3 places, all below massif's threshold (01.00%) + n0: 7606 in 2 places, all below massif's threshold (01.00%) + n2: 70184 0x70B8C40: QByteArray::mid(int, int) const (qbytearray.cpp:2592) + n1: 41134 0x7170FE1: QConfFileSettingsPrivate::readIniFile(QByteArray const&, QMap*) (qsettings.cpp:1755) + n1: 41134 0x717668A: QConfFileSettingsPrivate::syncConfFile(int) (qsettings.cpp:1530) + n1: 41134 0x717697C: QConfFileSettingsPrivate::sync() (qsettings.cpp:1382) + n2: 41134 0x71694C4: QConfFileSettingsPrivate::initAccess() (qsettings.cpp:1037) + n1: 41134 0x71742AC: QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:1205) + n1: 41134 0x7174656: QSettingsPrivate::create(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:366) + n1: 41134 0x7174DE9: QSettings::QSettings(QSettings::Scope, QString const&, QString const&, QObject*) (qsettings.cpp:2601) + n1: 41134 0x55DB68F: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:827) + n1: 41134 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 41134 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 41134 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 41134 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 41134 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 41134 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 41134 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 41134 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 29050 in 12 places, all below massif's threshold (01.00%) + n0: 40 in 9 places, all below massif's threshold (01.00%) + n2: 677504 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 653880 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 653880 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 543080 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 543080 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 543080 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 507856 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n3: 507856 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n3: 428232 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 390272 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 390272 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 390272 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 390272 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 390272 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 390272 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 390272 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 390272 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 390272 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 390272 0x5050ABB: (below main) (libc-start.c:220) + n1: 37960 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 37960 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 37960 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 37960 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 37960 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 37960 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 37960 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 37960 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 37960 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 37960 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 37960 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37960 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 37960 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 37960 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 66696 0x60D416B: KConfig::KConfig(KComponentData const&, QString const&, QFlags, char const*) (kconfig.cpp:171) + n1: 66696 0x60EBF86: KSharedConfig::KSharedConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:64) + n2: 66696 0x60EC1B0: KSharedConfig::openConfig(KComponentData const&, QString const&, QFlags, char const*) (ksharedconfig.cpp:56) + n1: 66696 0x60EC348: KSharedConfig::openConfig(QString const&, QFlags, char const*) (ksharedconfig.cpp:35) + n2: 66696 0x6979B4D: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:184) + n1: 52728 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 52728 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 52728 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 52728 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 52728 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 52728 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 52728 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 52728 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 52728 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 52728 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 52728 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 52728 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 52728 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 52728 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 52728 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 52728 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n0: 52728 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 13968 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 12928 in 2 places, all below massif's threshold (01.00%) + n0: 35224 in 2 places, all below massif's threshold (01.00%) + n1: 103576 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 103576 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 103576 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 94320 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 94320 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 71992 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 38080 0x61275A9: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:384) + n1: 38080 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 38080 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 38080 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 38080 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 38080 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 38080 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 38080 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 38080 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 38080 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 38080 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38080 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 38080 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 38080 0x5050ABB: (below main) (libc-start.c:220) + n0: 33912 in 4 places, all below massif's threshold (01.00%) + n0: 22328 in 3 places, all below massif's threshold (01.00%) + n0: 9256 in 2 places, all below massif's threshold (01.00%) + n0: 7224 in 1 place, below massif's threshold (01.00%) + n0: 23624 in 15 places, all below massif's threshold (01.00%) + n0: 572960 in 756 places, all below massif's threshold (01.00%) + n4: 237324 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 92048 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n1: 87848 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n1: 87848 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n1: 87848 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 87848 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 87848 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 80840 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 80840 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 80840 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 80840 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 80840 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 80840 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 80840 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 80840 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 80840 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 80840 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 80840 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 80840 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 80840 0x5050ABB: (below main) (libc-start.c:220) + n0: 7008 in 3 places, all below massif's threshold (01.00%) + n0: 4200 in 8 places, all below massif's threshold (01.00%) + n2: 79440 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n1: 71680 0x69788DB: KIconThemeDir::KIconThemeDir(QString const&, QString const&, KConfigGroup const&) (qstring.h:269) + n2: 71680 0x697A488: KIconTheme::KIconTheme(QString const&, QString const&) (kicontheme.cpp:208) + n2: 56320 0x696D7F1: KIconLoaderPrivate::addThemeByName(QString const&, QString const&) (kiconloader.cpp:581) + n1: 40960 0x696DA33: KIconLoaderPrivate::addBaseThemes(KIconThemeNode*, QString const&) (kiconloader.cpp:558) + n1: 40960 0x696E903: KIconLoaderPrivate::initIconThemes() (kiconloader.cpp:477) + n1: 40960 0x6973C8F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1101) + n1: 40960 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 40960 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 40960 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 40960 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 40960 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 40960 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 40960 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 40960 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 40960 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 40960 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 40960 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 40960 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 40960 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 40960 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 40960 0x5050ABB: (below main) (libc-start.c:220) + n0: 15360 in 1 place, below massif's threshold (01.00%) + n0: 15360 in 1 place, below massif's threshold (01.00%) + n0: 7760 in 77 places, all below massif's threshold (01.00%) + n2: 56558 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 56380 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n1: 56380 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56380 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56380 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9392 in 3 places, all below massif's threshold (01.00%) + n0: 178 in 1 place, below massif's threshold (01.00%) + n0: 9278 in 33 places, all below massif's threshold (01.00%) + n2: 196490 0x70B9A3B: QByteArray::resize(int) (qbytearray.cpp:1370) + n2: 195446 0x71437F0: QIODevice::readAll() (qiodevice.cpp:989) + n1: 195446 0x60E6686: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:97) + n2: 195446 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 195446 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 195446 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 195446 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 195446 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 195446 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 195446 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 195446 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 195446 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 195446 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 195446 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 195446 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 195446 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1044 in 6 places, all below massif's threshold (01.00%) + n2: 69296 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 58260 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 56156 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n1: 56156 0x7171A33: QConfFileSettingsPrivate::ensureSectionParsed(QConfFile*, QSettingsKey const&) const (qsettings.cpp:2005) + n1: 56156 0x7171B62: QConfFileSettingsPrivate::get(QString const&, QVariant*) const (qsettings.cpp:1303) + n2: 56156 0x7169D15: QSettings::value(QString const&, QVariant const&) const (qsettings.cpp:3352) + n1: 46988 0x71989FA: QLibraryPrivate::isPlugin(QSettings*) (qlibrary.cpp:641) + n1: 46988 0x71922D0: QFactoryLoader::update() (qfactoryloader.cpp:130) + n1: 46988 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 46988 0x55D2608: qt_guiPlatformPlugin() (qguiplatformplugin.cpp:101) + n1: 46988 0x55DD5B8: QApplicationPrivate::x11_apply_settings() (qapplication_x11.cpp:923) + n1: 46988 0x55DFDD4: qt_set_x11_resources(char const*, char const*, char const*, char const*) (qapplication_x11.cpp:1098) + n1: 46988 0x55E70F7: qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2308) + n1: 46988 0x5569C41: QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) (qapplication.cpp:771) + n1: 46988 0x556A976: QApplication::QApplication(int&, char**, bool, int) (qapplication.cpp:727) + n1: 46988 0x69AEE55: KApplication::KApplication(bool) (kapplication.cpp:337) + n1: 46988 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 46988 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 46988 0x5050ABB: (below main) (libc-start.c:220) + n0: 9168 in 3 places, all below massif's threshold (01.00%) + n0: 2104 in 46 places, all below massif's threshold (01.00%) + n0: 11036 in 5 places, all below massif's threshold (01.00%) + n1: 65536 0x5627710: QImageData::create(QSize const&, QImage::Format, int) (qimage.cpp:242) + n2: 65536 0x5627C49: QImage::QImage(int, int, QImage::Format) (qimage.cpp:837) + n1: 65536 0x5629E89: QImage::copy(QRect const&) const (qimage.cpp:1403) + n1: 65536 0x697455F: KIconLoader::loadIcon(QString const&, KIconLoader::Group, int, int, QStringList const&, QString*, bool) const (kiconloader.cpp:1201) + n1: 65536 0x696B5DB: KIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) (kiconengine.cpp:119) + n1: 65536 0x56110B3: QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (qicon.cpp:669) + n1: 65536 0x55FDA82: QWidgetPrivate::setWindowIcon_sys(bool) (qwidget_x11.cpp:1458) + n1: 65536 0x55B67A6: QWidget::create(unsigned long, bool, bool) (qwidget.cpp:1351) + n1: 65536 0x55EE165: setupOwner() (qclipboard_x11.cpp:131) + n1: 65536 0x55EEB8F: QClipboard::QClipboard(QObject*) (qclipboard_x11.cpp:458) + n1: 65536 0x555F355: QApplication::clipboard() (qapplication.cpp:3090) + n1: 65536 0x69B244C: KClipboardSynchronizer::Private::setupSignals() (kclipboard.cpp:94) + n1: 65536 0x69B2800: KClipboardSynchronizer::KClipboardSynchronizer(QObject*) (kclipboard.cpp:84) + n1: 65536 0x69B2992: KClipboardSynchronizer::self() (kclipboard.cpp:73) + n1: 65536 0x69AD77F: KApplicationPrivate::init(bool) (kapplication.cpp:463) + n1: 65536 0x69AEF77: KApplication::KApplication(bool) (kapplication.cpp:343) + n1: 65536 0x6515594: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 65536 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 65536 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 65280 0x505168F: __gconv_open (gconv_open.c:284) + n1: 65280 0x5051000: iconv_open (iconv_open.c:72) + n1: 65280 0x71DF106: QIconvCodec::createIconv_t(char const*, char const*) (qiconvcodec.cpp:453) + n0: 65280 in 2 places, all below massif's threshold (01.00%) + n2: 61008 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n1: 42912 0x612647D: KDebugPrivate::loadAreaNames() (qhash.h:542) + n1: 42912 0x612709B: KDebugPrivate::areaData(QtMsgType, unsigned int, bool) (kdebug.cpp:401) + n1: 42912 0x6125403: KDebug::hasNullOutput(QtMsgType, bool, int, bool) (kdebug.cpp:773) + n1: 42912 0x622530C: KSycocaPrivate::openDatabase(bool) (kdebug.h:258) + n1: 42912 0x6224E2C: KSycocaPrivate::checkDatabase(QFlags) (ksycoca.cpp:415) + n1: 42912 0x6225933: KSycoca::findFactory(KSycocaFactoryId) (ksycoca.cpp:455) + n1: 42912 0x6229075: KSycocaFactory::KSycocaFactory(KSycocaFactoryId) (ksycocafactory.cpp:53) + n1: 42912 0x6185383: KServiceFactory::KServiceFactory() (kservicefactory.cpp:38) + n1: 42912 0x6185718: KServiceFactory::self() (ksycocafactory.h:200) + n1: 42912 0x617D8F3: KService::serviceByDesktopName(QString const&) (kservice.cpp:596) + n1: 42912 0xA5F4A90: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:129) + n1: 42912 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 42912 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 42912 0x5050ABB: (below main) (libc-start.c:220) + n0: 18096 in 94 places, all below massif's threshold (01.00%) + n1: 48774 0x400AF2D: _dl_new_object (dl-object.c:52) + n1: 48774 0x400647A: _dl_map_object_from_fd (dl-load.c:966) + n1: 48774 0x40083A6: _dl_map_object (dl-load.c:2235) + n0: 48774 in 2 places, all below massif's threshold (01.00%) + n2: 45720 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 41848 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 41848 in 52 places, all below massif's threshold (01.00%) + n0: 3872 in 3 places, all below massif's threshold (01.00%) + n1: 44702 0x70B9536: QByteArray::realloc(int) (qbytearray.cpp:1412) + n0: 44702 in 8 places, all below massif's threshold (01.00%) +#----------- +snapshot=8 +#----------- +time=1323280300 +mem_heap_B=3893463 +mem_heap_extra_B=984465 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=9 +#----------- +time=1469574730 +mem_heap_B=7530667 +mem_heap_extra_B=1452021 +mem_stacks_B=0 +heap_tree=detailed +n15: 7530667 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 2116413 in 1898 places, all below massif's threshold (01.00%) + n3: 1464954 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 280080 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 280080 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 280080 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 280080 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 280080 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 280080 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 280080 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 280080 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 280080 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 280080 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n3: 280080 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 102432 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 102432 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 102432 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 102432 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 102432 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 102432 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 102432 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 102432 0x5050ABB: (below main) (libc-start.c:220) + n1: 98976 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 98976 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 98976 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 98976 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 98976 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 98976 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 98976 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 98976 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 98976 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 98976 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 98976 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 98976 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 98976 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 98976 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 98976 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 98976 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 98976 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 98976 0x6530EC4: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 78672 in 1 place, below massif's threshold (01.00%) + n0: 171754 in 42 places, all below massif's threshold (01.00%) + n4: 1022024 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 11 places, all below massif's threshold (01.00%) + n0: 65319 in 4 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n1: 401163 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401163 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352245 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352245 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 11 places, all below massif's threshold (01.00%) + n0: 69591 in 4 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n1: 123058 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 123058 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 111738 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 111738 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n1: 91901 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n0: 91901 in 12 places, all below massif's threshold (01.00%) + n0: 19837 in 4 places, all below massif's threshold (01.00%) + n0: 11320 in 2 places, all below massif's threshold (01.00%) + n0: 29050 in 14 places, all below massif's threshold (01.00%) + n2: 853880 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783112 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 783112 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 657960 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 11 places, all below massif's threshold (01.00%) + n0: 92024 in 4 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n1: 115672 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 115672 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 115672 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 102480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n1: 102480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n0: 102480 in 5 places, all below massif's threshold (01.00%) + n0: 13192 in 2 places, all below massif's threshold (01.00%) + n0: 9480 in 1 place, below massif's threshold (01.00%) + n0: 70768 in 64 places, all below massif's threshold (01.00%) + n4: 628130 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 303640 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n1: 187024 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n2: 187024 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n1: 100360 0x716DD3E: QConfFileSettingsPrivate::ensureAllSectionsParsed(QConfFile*) const (qsettings.cpp:1977) + n1: 100360 0x7175C5C: QConfFileSettingsPrivate::syncConfFile(int) (qsettings.cpp:1564) + n1: 100360 0x717697C: QConfFileSettingsPrivate::sync() (qsettings.cpp:1382) + n1: 100360 0x71694C4: QConfFileSettingsPrivate::initAccess() (qsettings.cpp:1037) + n1: 100360 0x71742AC: QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:1205) + n1: 100360 0x7174656: QSettingsPrivate::create(QSettings::Format, QSettings::Scope, QString const&, QString const&) (qsettings.cpp:366) + n1: 100360 0x7174DE9: QSettings::QSettings(QSettings::Scope, QString const&, QString const&, QObject*) (qsettings.cpp:2601) + n1: 100360 0x7191BE3: QFactoryLoader::update() (qfactoryloader.cpp:110) + n1: 100360 0x7194764: QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) (qfactoryloader.cpp:99) + n1: 100360 0x71DA630: loader() (qtextcodec.cpp:101) + n1: 100360 0x71DC2AA: QTextCodec::codecForName(QByteArray const&) (qtextcodec.cpp:144) + n1: 100360 0x61CF426: KCharsets::codecForNameOrNull(QByteArray const&) const (kcharsets.cpp:766) + n1: 100360 0x61CF7F7: KCharsets::codecForName(QString const&) const (kcharsets.cpp:723) + n1: 100360 0x15916640: KateViewEncodingAction::setCurrentCodec(QTextCodec*) (kateviewhelpers.cpp:1876) + n1: 100360 0x15916872: KateViewEncodingAction::setCurrentCodec(QString const&) (kateviewhelpers.cpp:1896) + n1: 100360 0x15915979: KateViewEncodingAction::KateViewEncodingAction(KateDocument*, KateView*, QString const&, QObject*) (kateviewhelpers.cpp:1729) + n1: 100360 0x158E61AB: KateView::setupActions() (kateview.cpp:564) + n1: 100360 0x158E1725: KateView::KateView(KateDocument*, QWidget*) (kateview.cpp:226) + n1: 100360 0x158369C0: KateDocument::createView(QWidget*) (katedocument.cpp:341) + n1: 100360 0x6535757: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 100360 0x6537808: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 100360 0x6532962: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 100360 0x65352E0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 100360 0x652DB42: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 100360 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 100360 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n0: 86664 in 1 place, below massif's threshold (01.00%) + n0: 116616 in 13 places, all below massif's threshold (01.00%) + n1: 135672 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 135672 in 119 places, all below massif's threshold (01.00%) + n2: 126730 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 126730 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n0: 126730 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 62088 in 62 places, all below massif's threshold (01.00%) + n3: 316364 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 187206 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 181424 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 181424 in 89 places, all below massif's threshold (01.00%) + n0: 5782 in 2 places, all below massif's threshold (01.00%) + n2: 128830 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 126330 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n0: 126330 in 2 places, all below massif's threshold (01.00%) + n0: 2500 in 60 places, all below massif's threshold (01.00%) + n0: 328 in 4 places, all below massif's threshold (01.00%) + n2: 203672 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 182616 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 182616 in 170 places, all below massif's threshold (01.00%) + n0: 21056 in 3 places, all below massif's threshold (01.00%) + n2: 173712 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 173320 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 173320 in 585 places, all below massif's threshold (01.00%) + n0: 392 in 2 places, all below massif's threshold (01.00%) + n1: 146512 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 146512 in 142 places, all below massif's threshold (01.00%) + n1: 107680 0x71C1EF5: QVector::realloc(int, int) (qvector.h:391) + n1: 107680 0x71BAE3E: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (qvector.h:330) + n1: 107680 0x71BC563: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2934) + n1: 107680 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 107680 in 226 places, all below massif's threshold (01.00%) + n1: 105840 0x55C0DD1: QWidgetAction::QWidgetAction(QObject*) (qwidgetaction.cpp:112) + n0: 105840 in 5 places, all below massif's threshold (01.00%) + n1: 105336 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 105336 in 58 places, all below massif's threshold (01.00%) + n1: 103732 0x854A97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 103732 0x854C371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 103732 in 20 places, all below massif's threshold (01.00%) + n1: 92178 0x70FE83D: QString::fromLatin1_helper(char const*, int) (qstring.cpp:3603) + n0: 92178 in 208 places, all below massif's threshold (01.00%) + n1: 90240 0x57976A3: QtFontStyle::pixelSize(unsigned short, bool) (qfontdatabase.cpp:290) + n0: 90240 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=10 +#----------- +time=1556319361 +mem_heap_B=9391778 +mem_heap_extra_B=1670134 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=11 +#----------- +time=1739883889 +mem_heap_B=9496773 +mem_heap_extra_B=1810027 +mem_stacks_B=0 +heap_tree=detailed +n14: 9496773 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 3085234 in 2134 places, all below massif's threshold (01.00%) + n3: 1469320 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 282672 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 282672 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 282672 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 282672 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 282672 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 282672 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 282672 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 282672 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 282672 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 282672 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 282672 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 282672 in 4 places, all below massif's threshold (01.00%) + n0: 173528 in 42 places, all below massif's threshold (01.00%) + n4: 1022126 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n1: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 11 places, all below massif's threshold (01.00%) + n0: 65319 in 4 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n1: 401163 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401163 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352245 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352245 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 11 places, all below massif's threshold (01.00%) + n0: 69591 in 4 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n1: 123058 0x60E7D05: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n1: 123058 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n0: 123058 in 3 places, all below massif's threshold (01.00%) + n0: 29152 in 14 places, all below massif's threshold (01.00%) + n2: 854696 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783112 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n3: 783112 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n1: 657960 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n1: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 11 places, all below massif's threshold (01.00%) + n0: 92024 in 4 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n1: 115672 0x60D9B27: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:251) + n1: 115672 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n1: 115672 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n0: 115672 in 3 places, all below massif's threshold (01.00%) + n0: 9480 in 1 place, below massif's threshold (01.00%) + n0: 71584 in 71 places, all below massif's threshold (01.00%) + n4: 733208 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n2: 401024 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 214000 in 14 places, all below massif's threshold (01.00%) + n1: 187024 0x716D22B: QSettingsPrivate::iniUnescapedStringList(QByteArray const&, int, int, QString&, QStringList&, QTextCodec*) (qsettings.cpp:896) + n1: 187024 0x716D840: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1827) + n0: 187024 in 2 places, all below massif's threshold (01.00%) + n1: 139520 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 139520 in 124 places, all below massif's threshold (01.00%) + n2: 126730 0x716B7C4: QSettingsPrivate::iniUnescapedKey(QByteArray const&, int, int, QString&) (qstring.h:870) + n1: 126730 0x716D7AF: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings.cpp:1822) + n0: 126730 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 65934 in 66 places, all below massif's threshold (01.00%) + n2: 657420 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 70376 in 7 places, all below massif's threshold (01.00%) + n3: 317038 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 187854 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 181782 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 181782 in 91 places, all below massif's threshold (01.00%) + n0: 6072 in 2 places, all below massif's threshold (01.00%) + n2: 128910 0x7102165: QString::toLower() const (qstring.cpp:4791) + n1: 126330 0x716DA10: QConfFileSettingsPrivate::readIniSection(QSettingsKey const&, QByteArray const&, QMap*, QTextCodec*) (qsettings_p.h:102) + n0: 126330 in 2 places, all below massif's threshold (01.00%) + n0: 2580 in 64 places, all below massif's threshold (01.00%) + n0: 274 in 4 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 265432 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 237672 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 237672 in 190 places, all below massif's threshold (01.00%) + n0: 27760 in 3 places, all below massif's threshold (01.00%) + n1: 203248 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 203248 in 154 places, all below massif's threshold (01.00%) + n2: 197848 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 197456 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 197456 in 602 places, all below massif's threshold (01.00%) + n0: 392 in 2 places, all below massif's threshold (01.00%) + n1: 156488 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 156488 in 63 places, all below massif's threshold (01.00%) + n1: 120144 0x71C1EF5: QVector::realloc(int, int) (qvector.h:391) + n1: 120144 0x71BAE3E: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (qvector.h:330) + n1: 120144 0x71BC563: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2934) + n1: 120144 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 120144 in 232 places, all below massif's threshold (01.00%) + n1: 117323 0x854A97E: ft_mem_qalloc (in /usr/lib/libfreetype.so.6.3.20) + n1: 117323 0x854C371: ft_mem_alloc (in /usr/lib/libfreetype.so.6.3.20) + n0: 117323 in 20 places, all below massif's threshold (01.00%) +#----------- +snapshot=12 +#----------- +time=1883852525 +mem_heap_B=9763761 +mem_heap_extra_B=1835383 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=13 +#----------- +time=1990253661 +mem_heap_B=9873017 +mem_heap_extra_B=1850063 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=14 +#----------- +time=2154369994 +mem_heap_B=10047917 +mem_heap_extra_B=1871099 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=15 +#----------- +time=2267656588 +mem_heap_B=10181549 +mem_heap_extra_B=1891555 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=16 +#----------- +time=2405729790 +mem_heap_B=10608097 +mem_heap_extra_B=1763911 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=17 +#----------- +time=2617103498 +mem_heap_B=10815864 +mem_heap_extra_B=1858640 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=18 +#----------- +time=2777162691 +mem_heap_B=11142686 +mem_heap_extra_B=1907130 +mem_stacks_B=0 +heap_tree=detailed +n15: 11142686 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4093301 in 2403 places, all below massif's threshold (01.00%) + n3: 1512762 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185722 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n3: 503818 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n1: 167144 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 167144 in 148 places, all below massif's threshold (01.00%) + n0: 73242 in 76 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 300896 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 300896 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 252144 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 223616 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 223616 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 199416 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198968 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198968 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 193208 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 193208 in 80 places, all below massif's threshold (01.00%) + n1: 142360 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n0: 142360 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=19 +#----------- +time=2975780832 +mem_heap_B=11457166 +mem_heap_extra_B=2044434 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=20 +#----------- +time=3186507759 +mem_heap_B=11836426 +mem_heap_extra_B=2162534 +mem_stacks_B=0 +heap_tree=detailed +n17: 11836426 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4206681 in 2401 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n3: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n1: 166888 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 166888 in 148 places, all below massif's threshold (01.00%) + n0: 73242 in 76 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 399288 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n1: 370760 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 370760 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301480 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301480 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 225896 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 225896 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 225896 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 217736 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 217736 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 217736 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 217736 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 217736 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 217736 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 217736 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 217736 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 217736 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 217736 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 217736 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 217736 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 217736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 217736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 217736 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 217736 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 217736 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 217736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 217736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 217736 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 217736 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 217736 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 217736 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 217736 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 217736 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 217736 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 217736 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 196472 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 196472 in 80 places, all below massif's threshold (01.00%) + n1: 185832 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n0: 185832 in 2 places, all below massif's threshold (01.00%) + n1: 160560 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 160560 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 160560 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 160560 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 160560 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 156096 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 156096 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 156096 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 156096 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 156096 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 156096 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 156096 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 156096 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 156096 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 156096 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 156096 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 156096 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 156096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 156096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 156096 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 156096 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 156096 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 156096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 156096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 156096 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 156096 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 156096 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 156096 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 156096 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 156096 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=21 +#----------- +time=3368485600 +mem_heap_B=12098338 +mem_heap_extra_B=2251718 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=22 +#----------- +time=3501268821 +mem_heap_B=12328150 +mem_heap_extra_B=2313634 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=23 +#----------- +time=3608301789 +mem_heap_B=12478122 +mem_heap_extra_B=2355982 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=24 +#----------- +time=3762699106 +mem_heap_B=12681674 +mem_heap_extra_B=2421606 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=25 +#----------- +time=3855352532 +mem_heap_B=12818774 +mem_heap_extra_B=2459226 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=26 +#----------- +time=4007173468 +mem_heap_B=13150062 +mem_heap_extra_B=2501802 +mem_stacks_B=0 +heap_tree=detailed +n19: 13150062 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4295301 in 2405 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n2: 584672 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 556144 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 322640 in 226 places, all below massif's threshold (01.00%) + n1: 233504 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 233504 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 233504 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 222344 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 219112 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 219112 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 219112 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 219112 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 219112 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 219112 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 219112 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 219112 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 219112 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 219112 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 219112 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 219112 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 219112 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 219112 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 219112 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 219112 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 219112 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 219112 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 219112 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 219112 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 219112 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 219112 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 219112 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 219112 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 11160 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n3: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n1: 166888 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 166888 in 148 places, all below massif's threshold (01.00%) + n0: 73242 in 76 places, all below massif's threshold (01.00%) + n1: 442544 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 442544 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 442544 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 434384 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 434384 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 434384 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 434384 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 434384 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 434384 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 434384 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 434384 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 434384 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 434384 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 434384 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 434384 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 434384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 434384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 434384 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 434384 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 434384 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 434384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 434384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 434384 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 434384 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 434384 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 434384 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 434384 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 434384 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 434384 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 434384 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n2: 432560 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 279832 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 279832 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 279832 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 189056 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 186512 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 186512 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 186512 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 184960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 184960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 184960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 184960 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 184960 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 184960 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 184960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 184960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 184960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 184960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 184960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 184960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 184960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 184960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 184960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 184960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 184960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 184960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 184960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 184960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 184960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 184960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 1552 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2544 in 4 places, all below massif's threshold (01.00%) + n0: 90776 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 152728 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 343728 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 343728 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 343728 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 343728 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 325008 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 320544 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 320544 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 320544 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 320544 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 320544 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 320544 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 320544 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 320544 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 320544 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 320544 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 320544 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 320544 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 320544 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320544 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320544 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 320544 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 320544 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 320544 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 320544 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 320544 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 320544 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 320544 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 320544 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 320544 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 320544 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 18720 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301720 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301720 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 208256 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 204416 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 204416 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 204416 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 204416 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 204416 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 204416 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 204416 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 204416 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 204416 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 204416 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 204416 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 204416 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 204416 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 204416 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 204416 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 204416 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 204416 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 204416 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 204416 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 204416 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 204416 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 204416 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 204416 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 204416 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 204416 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 204416 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 204416 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 204416 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 204416 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 200520 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 200520 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 180544 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 180544 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 180208 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 173936 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 170576 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 170576 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 170576 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 170576 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 170576 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 170576 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 170576 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 170576 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 170576 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 170576 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 170576 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 170576 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 170576 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 170576 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 170576 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 170576 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 170576 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 170576 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 170576 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 170576 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 170576 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 170576 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 170576 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 170576 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 170576 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 170576 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 6272 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=27 +#----------- +time=4126229976 +mem_heap_B=13267310 +mem_heap_extra_B=2542042 +mem_stacks_B=0 +heap_tree=detailed +n19: 13267310 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4306997 in 2405 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n2: 607864 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 579336 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 331840 in 226 places, all below massif's threshold (01.00%) + n1: 247496 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 247496 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 247496 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 236336 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 233104 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 233104 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 233104 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 233104 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 233104 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 233104 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 233104 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 233104 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 233104 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 233104 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 233104 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 233104 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 233104 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 233104 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 233104 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 233104 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 233104 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 233104 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 233104 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 233104 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 233104 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 233104 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 233104 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 233104 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 11160 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n3: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n1: 166888 0x70FBEFD: QString::append(QString const&) (qstring.cpp:1456) + n0: 166888 in 148 places, all below massif's threshold (01.00%) + n0: 73242 in 76 places, all below massif's threshold (01.00%) + n1: 473824 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 473824 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 473824 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 465664 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 465664 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 465664 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 465664 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 465664 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 465664 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 465664 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 465664 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 465664 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 465664 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 465664 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 465664 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 465664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 465664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 465664 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 465664 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 465664 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 465664 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 465664 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 465664 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 465664 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 465664 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 465664 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 465664 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 465664 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 465664 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 465664 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n2: 436320 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 280872 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 280872 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 280872 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 189056 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 186512 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 186512 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 186512 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 184960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 184960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 184960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 184960 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 184960 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 184960 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 184960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 184960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 184960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 184960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 184960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 184960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 184960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 184960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 184960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 184960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 184960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 184960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 184960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 184960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 184960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 184960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 1552 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2544 in 4 places, all below massif's threshold (01.00%) + n0: 91816 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 155448 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 363072 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 363072 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 363072 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 363072 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 344352 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 339888 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 339888 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 339888 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 339888 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 339888 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 339888 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 339888 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 339888 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 339888 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 339888 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 339888 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 339888 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 339888 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339888 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339888 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 339888 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 339888 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 339888 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339888 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339888 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 339888 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 339888 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 339888 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 339888 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 339888 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 18720 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301720 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301720 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 222976 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 219136 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 219136 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 219136 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 219136 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 219136 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 219136 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 219136 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 219136 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 219136 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 219136 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 219136 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 219136 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 219136 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 219136 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 219136 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 219136 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 219136 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 219136 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 219136 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 219136 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 219136 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 219136 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 219136 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 219136 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 219136 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 219136 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 219136 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 219136 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 219136 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 201064 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 201064 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) + n1: 193256 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 193256 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 192920 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 186648 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 183288 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 183288 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 183288 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 183288 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 183288 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 183288 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 183288 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 183288 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 183288 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 183288 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 183288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 183288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 183288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 183288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 183288 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 183288 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 183288 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 183288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 183288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 183288 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 183288 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 183288 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 183288 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 183288 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 183288 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 183288 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 6272 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=28 +#----------- +time=4227415713 +mem_heap_B=13384878 +mem_heap_extra_B=2574562 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=29 +#----------- +time=4399965481 +mem_heap_B=13575790 +mem_heap_extra_B=2631794 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=30 +#----------- +time=4554565530 +mem_heap_B=13762238 +mem_heap_extra_B=2676914 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=31 +#----------- +time=4636250788 +mem_heap_B=13829746 +mem_heap_extra_B=2699942 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=32 +#----------- +time=4789175061 +mem_heap_B=14039634 +mem_heap_extra_B=2755926 +mem_stacks_B=0 +heap_tree=detailed +n20: 14039634 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4367001 in 2404 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n2: 717488 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 688960 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 316256 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 316256 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 316256 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 298976 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 295744 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 295744 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 295744 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 295744 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 295744 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 295744 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 295744 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 295744 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 295744 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 295744 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 295744 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 295744 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 295744 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 295744 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 295744 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 295744 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 295744 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 295744 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 295744 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 295744 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 295744 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 295744 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 295744 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 295744 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 17280 in 1 place, below massif's threshold (01.00%) + n0: 192760 in 225 places, all below massif's threshold (01.00%) + n1: 179944 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 179944 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 179944 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n2: 172568 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 170168 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 170168 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 170168 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 170168 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 170168 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 170168 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 170168 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 170168 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 170168 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 170168 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 170168 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 170168 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 170168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 170168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 170168 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 170168 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 170168 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 170168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 170168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 170168 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 170168 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 170168 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 170168 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 170168 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2400 in 4 places, all below massif's threshold (01.00%) + n0: 7376 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 611728 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 611728 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 611728 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 603568 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 603568 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 603568 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 603568 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 603568 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 603568 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 603568 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 603568 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 603568 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 603568 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 603568 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 603568 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 603568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 603568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 603568 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 603568 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 603568 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 603568 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 603568 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 603568 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 603568 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 603568 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 603568 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 603568 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 603568 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 603568 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 603568 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n2: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 240130 in 77 places, all below massif's threshold (01.00%) + n2: 466672 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 293104 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 293104 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 293104 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 204872 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 202328 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 202328 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 202328 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 191520 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 191520 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 191520 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 191520 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 191520 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 191520 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 191520 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 191520 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 191520 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 191520 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 191520 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 191520 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 191520 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 191520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 191520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 191520 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 191520 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 191520 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 191520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 191520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 191520 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191520 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 10808 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2544 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 173568 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 173568 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 173568 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n0: 173568 in 3 places, all below massif's threshold (01.00%) + n1: 457296 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 457296 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 457296 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 457296 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 429264 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 424800 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 424800 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 424800 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 424800 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 424800 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 424800 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 424800 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 424800 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 424800 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 424800 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 424800 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 424800 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 424800 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 424800 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 424800 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 424800 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 424800 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 424800 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 424800 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 424800 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 424800 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 424800 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 424800 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 424800 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 424800 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 28032 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301960 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301960 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n2: 287872 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 284032 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 284032 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 284032 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 284032 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 284032 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 284032 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 284032 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 284032 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 284032 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 284032 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 284032 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 284032 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 284032 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 284032 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 284032 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 284032 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 284032 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 284032 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 284032 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 284032 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 284032 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 284032 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 284032 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 284032 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 284032 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 284032 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 284032 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 284032 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 284032 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 249648 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 249648 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 249312 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 239176 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 235816 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 235816 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 235816 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 235816 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 235816 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 235816 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 235816 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 235816 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 235816 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 235816 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 235816 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 235816 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 235816 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 235816 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 235816 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 235816 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 235816 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 235816 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 235816 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 235816 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 235816 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 235816 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 235816 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 235816 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 235816 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 235816 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 10136 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 216104 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 211208 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 211208 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 205112 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 205112 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 205112 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n1: 205112 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n0: 205112 in 2 places, all below massif's threshold (01.00%) + n0: 6096 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n1: 203648 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 203648 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=33 +#----------- +time=4980788906 +mem_heap_B=14244286 +mem_heap_extra_B=2789122 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=34 +#----------- +time=5135054144 +mem_heap_B=14365778 +mem_heap_extra_B=2830070 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=35 +#----------- +time=5241191203 +mem_heap_B=14448322 +mem_heap_extra_B=2858470 +mem_stacks_B=0 +heap_tree=detailed +n19: 14448322 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4559553 in 2405 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 783720 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 755192 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 357352 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 357352 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 357352 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 335320 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 332088 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 332088 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 332088 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 332088 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 332088 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 332088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 332088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 332088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 332088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 332088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 332088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 332088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 332088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 332088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 332088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 332088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 332088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 332088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 332088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 332088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 332088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 332088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 332088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 332088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 22032 in 1 place, below massif's threshold (01.00%) + n1: 205384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 205384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 205384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n2: 195728 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 193328 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 193328 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 193328 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 193328 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 193328 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 193328 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 193328 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 193328 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 193328 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 193328 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 193328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 193328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 193328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 193328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 193328 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 193328 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 193328 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 193328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 193328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 193328 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 193328 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 193328 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 193328 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 193328 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2400 in 4 places, all below massif's threshold (01.00%) + n0: 9656 in 1 place, below massif's threshold (01.00%) + n0: 192456 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 698224 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 698224 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 698224 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 690064 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 690064 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 690064 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 690064 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 690064 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 690064 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 690064 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 690064 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 690064 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 690064 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 690064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 690064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 690064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 690064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 690064 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 690064 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 690064 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 690064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 690064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 690064 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 690064 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 690064 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 690064 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 690064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 690064 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 690064 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 690064 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n2: 612728 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 422224 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 422224 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 422224 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 329912 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 325296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 325296 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 325296 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 314488 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 314488 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 314488 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 314488 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 314488 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 314488 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 314488 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 314488 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 314488 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 314488 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 314488 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 314488 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314488 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314488 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 314488 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 314488 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 314488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314488 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 314488 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 10808 in 4 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4616 in 4 places, all below massif's threshold (01.00%) + n0: 92312 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n1: 190504 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 190504 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 190504 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n0: 190504 in 3 places, all below massif's threshold (01.00%) + n1: 513024 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 513024 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 513024 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 513024 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 478992 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 474528 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 474528 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 474528 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 474528 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 474528 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 474528 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 474528 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 474528 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 474528 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 474528 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 474528 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 474528 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 474528 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 474528 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 474528 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 474528 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 474528 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 474528 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 474528 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 474528 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 474528 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 474528 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 474528 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 474528 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 474528 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 34032 in 1 place, below massif's threshold (01.00%) + n2: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 240130 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 328576 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 324736 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 324736 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 324736 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 324736 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 324736 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 324736 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 324736 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 324736 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 324736 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 324736 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 324736 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 324736 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 324736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324736 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 324736 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 324736 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 324736 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324736 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324736 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 324736 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 324736 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 324736 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 324736 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 324736 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 324736 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 324736 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 324736 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 324736 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 302008 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 302008 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 285264 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 285264 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 284928 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 271600 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 268240 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 268240 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 268240 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 268240 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 268240 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 268240 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 268240 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 268240 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 268240 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 268240 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 268240 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 268240 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 268240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 268240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 268240 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 268240 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 268240 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 268240 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 268240 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 268240 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 268240 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 268240 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 268240 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 268240 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 268240 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 268240 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 13328 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 205008 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 205008 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=36 +#----------- +time=5366427136 +mem_heap_B=14546534 +mem_heap_extra_B=2886538 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=37 +#----------- +time=5537783540 +mem_heap_B=15198334 +mem_heap_extra_B=2889226 +mem_stacks_B=0 +heap_tree=detailed +n20: 15198334 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4551877 in 2404 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 1057576 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 638952 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 638952 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 638952 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 519888 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 506696 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 506696 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 506696 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 506696 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 506696 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 506696 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 506696 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 506696 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 506696 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 506696 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 506696 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 506696 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 506696 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 506696 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 506696 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 506696 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 506696 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 506696 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 506696 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 506696 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 506696 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 506696 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 506696 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 506696 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 506696 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 13192 in 1 place, below massif's threshold (01.00%) + n0: 119064 in 2 places, all below massif's threshold (01.00%) + n1: 418624 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 418624 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 418624 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 330392 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 325296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 325296 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 325296 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 314488 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 314488 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 314488 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 314488 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 314488 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 314488 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 314488 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 314488 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 314488 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 314488 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 314488 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 314488 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314488 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314488 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 314488 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 314488 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 314488 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314488 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314488 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 314488 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 10808 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5096 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 799544 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 771016 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 366136 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 366136 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 366136 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 342944 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 339712 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 339712 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 339712 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 339712 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 339712 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 339712 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 339712 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 339712 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 339712 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 339712 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 339712 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 339712 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 339712 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339712 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339712 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 339712 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 339712 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 339712 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339712 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339712 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 339712 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 339712 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 339712 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 339712 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 23192 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n2: 202328 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 199928 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 199928 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 199928 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 199928 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 199928 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 199928 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 199928 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 199928 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 199928 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 199928 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 199928 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 199928 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 199928 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 199928 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 199928 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 199928 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 199928 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 199928 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 199928 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 199928 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 199928 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 199928 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 199928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 199928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2400 in 4 places, all below massif's threshold (01.00%) + n0: 10056 in 1 place, below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 523344 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 523344 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 523344 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 523344 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 487632 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 483168 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 483168 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 483168 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 483168 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 483168 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 483168 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 483168 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 483168 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 483168 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 483168 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 483168 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 483168 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 483168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 483168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 483168 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 483168 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 483168 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 483168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 483168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 483168 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 483168 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 483168 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 483168 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 483168 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 483168 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 35712 in 1 place, below massif's threshold (01.00%) + n2: 503562 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 240130 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 303208 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 303208 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 280784 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 277424 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 277424 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 277424 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 277424 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 277424 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 277424 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 277424 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 277424 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 277424 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 277424 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 277424 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 277424 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 277424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 277424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 277424 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 277424 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 277424 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 277424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 277424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 277424 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 277424 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 277424 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 277424 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 277424 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 277424 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 277424 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 13888 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n1: 240544 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n1: 240544 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n0: 240544 in 2 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 205416 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 205416 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=38 +#----------- +time=5685159481 +mem_heap_B=15588830 +mem_heap_extra_B=2918170 +mem_stacks_B=0 +heap_tree=detailed +n21: 15588830 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4447517 in 2403 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n2: 1214712 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 920648 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 920648 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 920648 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 812328 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 799136 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 799136 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 799136 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 799136 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 799136 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 799136 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 799136 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 799136 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 799136 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 799136 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 799136 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 799136 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 799136 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 799136 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 799136 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 799136 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 799136 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 799136 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 799136 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 799136 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 799136 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 799136 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 799136 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 799136 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 799136 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 13192 in 1 place, below massif's threshold (01.00%) + n0: 108320 in 2 places, all below massif's threshold (01.00%) + n1: 294064 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 294064 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 294064 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 205832 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 202328 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 202328 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 202328 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 191520 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 191520 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 191520 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 191520 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 191520 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 191520 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 191520 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 191520 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 191520 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 191520 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 191520 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 191520 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 191520 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 191520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 191520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 191520 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 191520 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 191520 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 191520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 191520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 191520 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 191520 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 10808 in 5 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3504 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 801608 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 773080 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 368200 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368200 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368200 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 342944 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 339712 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 339712 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 339712 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 339712 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 339712 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 339712 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 339712 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 339712 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 339712 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 339712 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 339712 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 339712 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 339712 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339712 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339712 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 339712 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 339712 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 339712 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 339712 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 339712 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 339712 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 339712 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 339712 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 339712 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 25256 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n2: 202328 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 199928 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 199928 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 199928 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 199928 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 199928 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 199928 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 199928 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 199928 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 199928 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 199928 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 199928 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 199928 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 199928 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 199928 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 199928 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 199928 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 199928 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 199928 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 199928 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 199928 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 199928 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 199928 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 199928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 199928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2400 in 4 places, all below massif's threshold (01.00%) + n0: 10056 in 1 place, below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 529824 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 529824 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 529824 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 529824 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 487632 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 483168 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 483168 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 483168 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 483168 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 483168 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 483168 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 483168 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 483168 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 483168 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 483168 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 483168 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 483168 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 483168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 483168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 483168 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 483168 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 483168 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 483168 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 483168 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 483168 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 483168 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 483168 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 483168 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 483168 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 483168 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 42192 in 1 place, below massif's threshold (01.00%) + n2: 502026 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238594 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 322752 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 322752 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 232256 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 232256 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n1: 195440 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n0: 195440 in 2 places, all below massif's threshold (01.00%) + n0: 36816 in 2 places, all below massif's threshold (01.00%) + n0: 90496 in 1 place, below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 302056 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 302056 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 280784 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 277424 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 277424 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 277424 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 277424 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 277424 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 277424 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 277424 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 277424 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 277424 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 277424 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 277424 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 277424 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 277424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 277424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 277424 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 277424 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 277424 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 277424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 277424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 277424 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 277424 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 277424 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 277424 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 277424 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 277424 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 277424 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 13888 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 249656 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 244760 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 244760 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 238848 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 238848 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 238848 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 238848 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 238848 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 232272 0x15890FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 232272 0x15891080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 232272 0x15890D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n1: 232272 0x158FF235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n0: 232272 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6576 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 205416 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 205416 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=39 +#----------- +time=5873236631 +mem_heap_B=15937498 +mem_heap_extra_B=2914118 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=40 +#----------- +time=5966553909 +mem_heap_B=16363534 +mem_heap_extra_B=2923298 +mem_stacks_B=0 +heap_tree=detailed +n20: 16363534 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4686973 in 2404 places, all below massif's threshold (01.00%) + n2: 1859192 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 1375552 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 1375552 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 1375552 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 1273960 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 1264312 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 1264312 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 1264312 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 1264312 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1264312 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1264312 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1264312 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 1264312 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 1264312 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 1264312 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 1264312 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 1264312 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 1264312 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 1264312 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1264312 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1264312 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1264312 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 1264312 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 1264312 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 1264312 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1264312 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1264312 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 1264312 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 1264312 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 1264312 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9648 in 1 place, below massif's threshold (01.00%) + n0: 101592 in 2 places, all below massif's threshold (01.00%) + n1: 483640 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 483640 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 483640 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 395408 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 390936 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 376600 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 376600 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 375048 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 375048 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n1: 375048 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n0: 375048 in 2 places, all below massif's threshold (01.00%) + n0: 1552 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 4472 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 799800 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 771272 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 366392 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 366392 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 366392 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 327752 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 324520 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 324520 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 324520 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 324520 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 324520 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 324520 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 324520 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 324520 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 324520 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 324520 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 324520 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 324520 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 324520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324520 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 324520 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 324520 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 324520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324520 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 324520 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 324520 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 324520 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 324520 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 38640 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n2: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n1: 193768 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n0: 193768 in 5 places, all below massif's threshold (01.00%) + n0: 18616 in 1 place, below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 526008 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 526008 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 526008 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 526008 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 467832 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 463368 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 463368 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 463368 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 463368 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 463368 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 463368 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 463368 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 463368 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 463368 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 463368 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 463368 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 463368 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 463368 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 463368 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 463368 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 463368 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 463368 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 463368 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 463368 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 463368 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 463368 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 463368 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 463368 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 463368 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 463368 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 58176 in 1 place, below massif's threshold (01.00%) + n2: 502026 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238594 in 77 places, all below massif's threshold (01.00%) + n1: 468800 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 468800 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 343152 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 343152 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 298240 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 282192 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 282192 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 282192 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 282192 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 282192 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 282192 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 282192 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 282192 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 282192 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 282192 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 282192 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 282192 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 282192 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 282192 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 282192 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 282192 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 282192 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 282192 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 282192 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 282192 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 282192 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 282192 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 282192 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 282192 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 282192 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 16048 in 1 place, below massif's threshold (01.00%) + n0: 44912 in 2 places, all below massif's threshold (01.00%) + n0: 125648 in 1 place, below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 302056 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 302056 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 268800 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 265440 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 265440 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 265440 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 265440 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 265440 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 265440 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 265440 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 265440 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 265440 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 265440 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 265440 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 265440 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 265440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 265440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 265440 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 265440 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 265440 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 265440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 265440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 265440 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 265440 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 265440 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 265440 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 265440 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 265440 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 265440 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 25872 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 205416 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 205416 in 80 places, all below massif's threshold (01.00%) + n2: 199304 0x71BC523: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2925) + n1: 198856 0x71BCBFC: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2607) + n0: 198856 in 640 places, all below massif's threshold (01.00%) + n0: 448 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=41 +#----------- +time=6135583348 +mem_heap_B=16668094 +mem_heap_extra_B=2957154 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=42 +#----------- +time=6252437801 +mem_heap_B=17165446 +mem_heap_extra_B=2967674 +mem_stacks_B=0 +heap_tree=detailed +n21: 17165446 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4561853 in 2403 places, all below massif's threshold (01.00%) + n2: 2236672 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 1935512 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 1935512 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 1935512 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 1848624 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 1839536 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 1839536 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 1839536 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 1839536 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1839536 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1839536 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1839536 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 1839536 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 1839536 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 1839536 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 1839536 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 1839536 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 1839536 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 1839536 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 1839536 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 1839536 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 1839536 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 1839536 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 1839536 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 1839536 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 1839536 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 1839536 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 1839536 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 1839536 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 1839536 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9088 in 1 place, below massif's threshold (01.00%) + n0: 86888 in 2 places, all below massif's threshold (01.00%) + n1: 301160 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 301160 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 301160 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 212928 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n1: 210520 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n0: 210520 in 2 places, all below massif's threshold (01.00%) + n0: 2408 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 804216 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 775688 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 370808 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 370808 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 370808 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 327752 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 324520 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 324520 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 324520 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 324520 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 324520 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 324520 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 324520 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 324520 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 324520 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 324520 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 324520 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 324520 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 324520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324520 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 324520 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 324520 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 324520 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 324520 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 324520 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 324520 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 324520 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 324520 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 324520 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 43056 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n1: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n0: 212384 in 2 places, all below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 675808 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 675808 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 489248 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 489248 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 466928 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 453328 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 453328 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 453328 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 453328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 453328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 453328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 453328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 453328 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 453328 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 453328 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 453328 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 453328 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 453328 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 453328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 453328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 453328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 453328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 453328 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 453328 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 453328 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 453328 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 453328 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 453328 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 453328 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 453328 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 13600 in 1 place, below massif's threshold (01.00%) + n0: 22320 in 2 places, all below massif's threshold (01.00%) + n0: 186560 in 1 place, below massif's threshold (01.00%) + n1: 532752 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 532752 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 532752 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 532752 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 467832 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 463368 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 463368 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 463368 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 463368 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 463368 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 463368 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 463368 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 463368 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 463368 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 463368 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 463368 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 463368 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 463368 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 463368 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 463368 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 463368 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 463368 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 463368 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 463368 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 463368 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 463368 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 463368 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 463368 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 463368 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 463368 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 64920 in 1 place, below massif's threshold (01.00%) + n2: 501898 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238466 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301960 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301960 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 268800 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 265440 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 265440 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 265440 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 265440 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 265440 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 265440 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 265440 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 265440 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 265440 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 265440 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 265440 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 265440 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 265440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 265440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 265440 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 265440 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 265440 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 265440 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 265440 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 265440 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 265440 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 265440 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 265440 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 265440 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 265440 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 265440 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 25872 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 294312 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 289416 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 289416 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 283504 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 283504 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 283504 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 283504 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 283504 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 281416 0x15890FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 281416 0x15891080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 281416 0x15890D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n2: 281416 0x158FF235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x158FE88D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 72456 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2088 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n1: 236600 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 236600 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 221728 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 216112 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 216112 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 216112 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 216112 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 216112 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 216112 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 216112 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 216112 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 216112 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 216112 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 216112 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 216112 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 216112 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 216112 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 216112 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 216112 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 216112 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 216112 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 216112 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 216112 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 216112 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 216112 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 216112 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 216112 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 216112 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 216112 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 216112 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5616 in 1 place, below massif's threshold (01.00%) + n0: 14872 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 205416 0x70D27DD: QHashData::rehash(int) (qhash.cpp:368) + n0: 205416 in 80 places, all below massif's threshold (01.00%) +#----------- +snapshot=43 +#----------- +time=6424660347 +mem_heap_B=17599694 +mem_heap_extra_B=2960002 +mem_stacks_B=0 +heap_tree=detailed +n20: 17599694 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4756253 in 2404 places, all below massif's threshold (01.00%) + n2: 2606792 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2185376 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2185376 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2185376 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2116664 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2108064 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2108064 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2108064 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2108064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2108064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2108064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2108064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2108064 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 2108064 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2108064 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2108064 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2108064 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2108064 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2108064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2108064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2108064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2108064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2108064 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2108064 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2108064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2108064 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2108064 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2108064 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2108064 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2108064 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8600 in 1 place, below massif's threshold (01.00%) + n0: 68712 in 2 places, all below massif's threshold (01.00%) + n1: 421416 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 421416 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 421416 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 333184 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 330296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 315960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 801904 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 773376 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 368496 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 325296 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 322064 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 322064 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 322064 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 322064 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 322064 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 322064 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 322064 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 322064 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 322064 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 322064 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 322064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 322064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 322064 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 322064 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 322064 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 322064 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 322064 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 322064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 43200 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n1: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n0: 212384 in 2 places, all below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n1: 798560 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 798560 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 591664 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 591664 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 556064 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 544688 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 544688 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 544688 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 544688 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 544688 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 544688 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 544688 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 544688 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 544688 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 544688 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 544688 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 544688 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 544688 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 544688 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 544688 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 544688 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 544688 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 544688 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 544688 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 544688 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 544688 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 544688 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 544688 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 544688 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 544688 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 11376 in 1 place, below massif's threshold (01.00%) + n0: 35600 in 2 places, all below massif's threshold (01.00%) + n1: 206896 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n1: 206896 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n0: 206896 in 4 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 527472 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 464616 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 460152 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 460152 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 460152 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 460152 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 460152 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 460152 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 460152 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 460152 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 460152 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 460152 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 460152 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 460152 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 460152 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 460152 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 460152 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 460152 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 460152 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 460152 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 460152 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 62856 in 1 place, below massif's threshold (01.00%) + n2: 501898 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238466 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301960 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301960 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 266952 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 263592 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 263592 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 263592 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 263592 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 263592 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 263592 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 263592 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 263592 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 263592 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 263592 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 263592 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263592 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 263592 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 263592 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 263592 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 263592 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 263592 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 263592 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 263592 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 263592 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 27720 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n1: 271128 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 271128 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 250640 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 245752 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 245752 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 245752 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 245752 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 245752 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 245752 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 245752 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 245752 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 245752 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 245752 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 245752 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 245752 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 245752 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 245752 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 245752 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 245752 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 245752 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 245752 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 245752 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 245752 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 245752 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 245752 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 245752 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 245752 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 245752 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 245752 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 245752 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4888 in 1 place, below massif's threshold (01.00%) + n0: 20488 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x15890FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x15891080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x15890D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n2: 208960 0x158FF235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x158FE88D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=44 +#----------- +time=6501115641 +mem_heap_B=17843350 +mem_heap_extra_B=2965970 +mem_stacks_B=0 +heap_tree=detailed +n20: 17843350 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4762949 in 2404 places, all below massif's threshold (01.00%) + n2: 2771176 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2349760 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2349760 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2349760 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2282168 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2275784 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2275784 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2275784 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2275784 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2275784 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2275784 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2275784 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2275784 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 2275784 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2275784 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2275784 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2275784 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2275784 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2275784 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2275784 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2275784 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2275784 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2275784 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2275784 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2275784 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2275784 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2275784 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2275784 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2275784 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2275784 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6384 in 1 place, below massif's threshold (01.00%) + n0: 67592 in 2 places, all below massif's threshold (01.00%) + n1: 421416 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 421416 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 421416 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 333184 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 330296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 315960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n1: 853664 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 853664 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 634320 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 634320 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 598720 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 589328 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 589328 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 589328 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 589328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 589328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 589328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 589328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 589328 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 589328 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 589328 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 589328 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 589328 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 589328 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 589328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 589328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 589328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 589328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 589328 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 589328 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 589328 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 589328 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 589328 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 589328 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 589328 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 589328 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 9392 in 1 place, below massif's threshold (01.00%) + n0: 35600 in 2 places, all below massif's threshold (01.00%) + n1: 219344 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n1: 219344 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n0: 219344 in 4 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 801904 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n3: 773376 0x70D498B: QListData::append() (qlist.cpp:179) + n1: 368496 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 325296 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 322064 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 322064 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 322064 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 322064 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 322064 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 322064 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 322064 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 322064 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 322064 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 322064 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 322064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 322064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 322064 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 322064 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 322064 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 322064 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 322064 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 322064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 43200 in 1 place, below massif's threshold (01.00%) + n1: 212384 0x1589618E: QList::append(bool const&) (qlist.h:479) + n1: 212384 0x15895994: KateLineLayout::setLayout(QTextLayout*) (katelinelayout.cpp:140) + n1: 212384 0x15888ABD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:892) + n0: 212384 in 2 places, all below massif's threshold (01.00%) + n0: 192496 in 225 places, all below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 527472 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 464616 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 460152 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 460152 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 460152 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 460152 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 460152 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 460152 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 460152 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 460152 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 460152 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 460152 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 460152 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 460152 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 460152 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 460152 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 460152 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 460152 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 460152 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 460152 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 460152 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 62856 in 1 place, below massif's threshold (01.00%) + n2: 501898 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238466 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301960 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301960 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 266952 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 263592 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 263592 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 263592 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 263592 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 263592 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 263592 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 263592 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 263592 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 263592 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 263592 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 263592 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263592 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 263592 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 263592 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 263592 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 263592 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 263592 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 263592 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 263592 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 263592 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 27720 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n1: 288600 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 288600 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 268112 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 263640 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 263640 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 263640 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 263640 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263640 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263640 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263640 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 263640 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 263640 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 263640 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 263640 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 263640 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 263640 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 263640 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263640 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263640 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263640 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263640 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 263640 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 263640 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 263640 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 263640 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 263640 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 263640 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 263640 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 263640 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 263640 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4472 in 1 place, below massif's threshold (01.00%) + n0: 20488 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 208960 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 208960 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 208960 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 208960 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 208960 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 208960 0x15890FF6: KateLayoutCache::lastViewLine(int) (katelayoutcache.cpp:469) + n1: 208960 0x15891080: KateLayoutCache::viewLineCount(int) (katelayoutcache.cpp:476) + n1: 208960 0x15890D35: KateLayoutCache::displayViewLine(KTextEditor::Cursor const&, bool) (katelayoutcache.cpp:437) + n2: 208960 0x158FF235: KateViewInternal::tagLine(KTextEditor::Cursor const&) (kateviewinternal.cpp:2031) + n1: 208960 0x158FE88D: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1924) + n1: 208960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 208960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 208960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 208960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 208960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 208960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 208960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 208960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 208960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 208960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 208960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 208960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 208960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 208960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 208960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n0: 208960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5912 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=45 +#----------- +time=6638755604 +mem_heap_B=18320350 +mem_heap_extra_B=2976762 +mem_stacks_B=0 +heap_tree=detailed +n20: 18320350 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4763565 in 2404 places, all below massif's threshold (01.00%) + n2: 3086080 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2664664 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2664664 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2664664 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2602488 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2600472 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2600472 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2600472 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2600472 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2600472 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2600472 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2600472 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2600472 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 2600472 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2600472 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2600472 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2600472 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2600472 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2600472 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2600472 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2600472 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2600472 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2600472 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2600472 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2600472 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2600472 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2600472 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2600472 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2600472 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2600472 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2016 in 1 place, below massif's threshold (01.00%) + n0: 62176 in 2 places, all below massif's threshold (01.00%) + n1: 421416 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 421416 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 421416 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 333184 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 330296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 315960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n1: 980720 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 980720 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 736272 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 736272 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 700672 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 693728 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 693728 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 693728 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 693728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 693728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 693728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 693728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 693728 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 693728 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 693728 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 693728 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 693728 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 693728 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 693728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 693728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 693728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 693728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 693728 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 693728 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 693728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 693728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 693728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 693728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 693728 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 693728 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6944 in 1 place, below massif's threshold (01.00%) + n0: 35600 in 2 places, all below massif's threshold (01.00%) + n1: 244448 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 244448 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 228160 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 226160 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 226160 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 226160 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 226160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 226160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 226160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 226160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 226160 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 226160 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 226160 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 226160 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 226160 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 226160 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 226160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 226160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 226160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 226160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 226160 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 226160 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 226160 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 226160 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 226160 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 226160 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 226160 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 226160 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2000 in 1 place, below massif's threshold (01.00%) + n0: 16288 in 3 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 801904 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 773376 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 404880 in 226 places, all below massif's threshold (01.00%) + n1: 368496 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 325296 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 322064 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 322064 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 322064 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 322064 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 322064 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 322064 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 322064 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 322064 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 322064 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 322064 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 322064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 322064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 322064 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 322064 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 322064 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 322064 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 322064 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 322064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 43200 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 527472 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 464616 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 460152 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 460152 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 460152 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 460152 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 460152 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 460152 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 460152 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 460152 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 460152 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 460152 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 460152 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 460152 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 460152 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 460152 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 460152 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 460152 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 460152 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 460152 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 460152 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 62856 in 1 place, below massif's threshold (01.00%) + n2: 501898 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 238466 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 323024 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 323024 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 302536 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 298896 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 298896 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 298896 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 298896 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 298896 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 298896 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 298896 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 298896 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 298896 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 298896 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 298896 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 298896 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 298896 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 298896 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 298896 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 298896 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 298896 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 298896 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 298896 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 298896 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 298896 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 298896 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 298896 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 298896 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 298896 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 298896 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 298896 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3640 in 1 place, below massif's threshold (01.00%) + n0: 20488 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301960 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301960 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 266952 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 263592 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 263592 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 263592 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 263592 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 263592 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 263592 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 263592 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 263592 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 263592 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 263592 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 263592 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263592 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 263592 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 263592 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 263592 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 263592 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 263592 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 263592 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 263592 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 263592 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 27720 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n2: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n1: 214688 0x70FAA89: QString::fromUtf8(char const*, int) (qstring.cpp:3850) + n0: 214688 in 99 places, all below massif's threshold (01.00%) + n0: 6816 in 2 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n2: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 214872 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n1: 214872 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n0: 214872 in 4 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) +#----------- +snapshot=46 +#----------- +time=6813740178 +mem_heap_B=18789878 +mem_heap_extra_B=2988882 +mem_stacks_B=0 +heap_tree=detailed +n20: 18789878 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4759925 in 2404 places, all below massif's threshold (01.00%) + n2: 3392488 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 2971072 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 2971072 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 2971072 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 2921328 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 2920288 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 2920288 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 2920288 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 2920288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2920288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2920288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2920288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 2920288 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 2920288 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 2920288 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 2920288 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 2920288 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 2920288 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 2920288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 2920288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 2920288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 2920288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 2920288 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 2920288 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 2920288 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 2920288 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 2920288 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 2920288 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 2920288 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 2920288 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1040 in 1 place, below massif's threshold (01.00%) + n0: 49744 in 2 places, all below massif's threshold (01.00%) + n1: 421416 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 421416 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 421416 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 333184 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 330296 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 315960 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 315960 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 315960 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 315960 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 315960 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1108560 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1108560 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 828848 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 828848 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 793248 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 788640 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 788640 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 788640 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 788640 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 788640 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 788640 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 788640 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 788640 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 788640 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 788640 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 788640 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 788640 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 788640 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 788640 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 788640 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 788640 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 788640 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 788640 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 788640 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 788640 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 788640 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 788640 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 788640 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 788640 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 788640 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4608 in 1 place, below massif's threshold (01.00%) + n0: 35600 in 2 places, all below massif's threshold (01.00%) + n1: 279712 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 279712 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 263424 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 261424 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 261424 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 261424 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 261424 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 261424 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 261424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 261424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 261424 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 261424 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 261424 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 261424 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 261424 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 261424 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 261424 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 261424 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 261424 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 261424 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 261424 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 261424 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 261424 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 261424 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 261424 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 261424 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 261424 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 261424 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2000 in 1 place, below massif's threshold (01.00%) + n0: 16288 in 3 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 801944 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 773416 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 404920 in 226 places, all below massif's threshold (01.00%) + n1: 368496 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 368496 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 368496 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 325296 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 322064 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 322064 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 322064 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 322064 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 322064 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 322064 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 322064 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 322064 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 322064 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 322064 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 322064 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 322064 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 322064 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 322064 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 322064 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 322064 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 322064 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 322064 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 322064 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 322064 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 322064 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 43200 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 527472 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 527472 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 527472 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 527472 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 464616 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 460152 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 460152 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 460152 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 460152 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 460152 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 460152 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 460152 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 460152 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 460152 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 460152 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 460152 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 460152 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 460152 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 460152 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 460152 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 460152 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 460152 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 460152 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 460152 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 460152 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 460152 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 460152 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 62856 in 1 place, below massif's threshold (01.00%) + n2: 500874 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 237442 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 363792 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 363792 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 343304 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 340288 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 340288 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 340288 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 340288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 340288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 340288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 340288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 340288 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 340288 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 340288 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 340288 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 340288 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 340288 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 340288 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 340288 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 340288 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 340288 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 340288 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 340288 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 340288 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 340288 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 340288 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 340288 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 340288 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 340288 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 340288 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 340288 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3016 in 1 place, below massif's threshold (01.00%) + n0: 20488 in 4 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301096 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301096 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 266952 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 263592 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 263592 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 263592 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 263592 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 263592 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 263592 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 263592 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 263592 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 263592 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 263592 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 263592 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 263592 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 263592 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 263592 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 263592 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 263592 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 263592 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 263592 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 263592 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 263592 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 263592 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 263592 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 263592 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 27720 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n1: 221504 0x71DD517: QUtf8::convertToUnicode(char const*, int, QTextCodec::ConverterState*) (qutfcodec.cpp:169) + n0: 221504 in 3 places, all below massif's threshold (01.00%) + n0: 4742 in 5 places, all below massif's threshold (01.00%) + n1: 219768 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n0: 219768 in 2 places, all below massif's threshold (01.00%) +#----------- +snapshot=47 +#----------- +time=6963511005 +mem_heap_B=18981942 +mem_heap_extra_B=2996882 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=48 +#----------- +time=7053996845 +mem_heap_B=19216746 +mem_heap_extra_B=3008878 +mem_stacks_B=0 +heap_tree=detailed +n20: 19216746 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4675393 in 2404 places, all below massif's threshold (01.00%) + n2: 3734776 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 3199920 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 3199920 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 3199920 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 3116320 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 3115280 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 3115280 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 3115280 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 3115280 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3115280 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3115280 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3115280 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 3115280 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 3115280 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 3115280 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 3115280 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 3115280 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 3115280 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 3115280 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3115280 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3115280 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3115280 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 3115280 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 3115280 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 3115280 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 3115280 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 3115280 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 3115280 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 3115280 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 3115280 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1040 in 1 place, below massif's threshold (01.00%) + n0: 83600 in 2 places, all below massif's threshold (01.00%) + n1: 534856 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 534856 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 534856 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 446624 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 443736 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 429400 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 429400 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 429400 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 429400 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 429400 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 113440 in 1 place, below massif's threshold (01.00%) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 2888 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1205072 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1205072 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 899664 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 899664 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 849632 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 845632 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 845632 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 845632 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 845632 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 845632 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 845632 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 845632 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 845632 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 845632 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 845632 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 845632 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 845632 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 845632 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 845632 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 845632 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 845632 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 845632 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 845632 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 845632 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 845632 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 845632 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 845632 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 845632 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 845632 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 845632 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 4000 in 1 place, below massif's threshold (01.00%) + n0: 50032 in 2 places, all below massif's threshold (01.00%) + n1: 305408 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 305408 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 288144 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 285648 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 285648 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 285648 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 285648 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 285648 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 285648 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 285648 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 285648 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 285648 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 285648 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 285648 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 285648 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 285648 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 285648 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 285648 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 285648 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 285648 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 285648 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 285648 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 285648 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 285648 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 285648 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 285648 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 285648 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 285648 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2496 in 1 place, below massif's threshold (01.00%) + n0: 17264 in 3 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 803728 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 775200 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 405144 in 226 places, all below massif's threshold (01.00%) + n1: 370056 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 370056 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 370056 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 320776 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 317544 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 317544 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 317544 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 317544 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 317544 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 317544 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 317544 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 317544 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 317544 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 317544 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 317544 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 317544 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 317544 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 317544 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 317544 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 317544 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 317544 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 317544 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 317544 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 317544 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 317544 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 317544 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 317544 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 317544 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 49280 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 530280 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 530280 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 530280 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 530280 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 457848 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 453384 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 453384 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 453384 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 453384 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 453384 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 453384 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 453384 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 453384 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 453384 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 453384 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 453384 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 453384 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 453384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 453384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 453384 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 453384 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 453384 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 453384 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 453384 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 453384 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 453384 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 453384 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 453384 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 453384 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 453384 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 72432 in 1 place, below massif's threshold (01.00%) + n2: 500874 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 237442 in 77 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n1: 394888 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 394888 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 369616 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 366600 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 366600 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 366600 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 366600 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 366600 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 366600 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 366600 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 366600 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 366600 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 366600 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 366600 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 366600 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 366600 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 366600 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 366600 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 366600 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 366600 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 366600 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 366600 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 366600 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 366600 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 366600 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 366600 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 366600 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 366600 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 366600 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 366600 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3016 in 1 place, below massif's threshold (01.00%) + n0: 25272 in 4 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301128 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301128 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 294952 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 294952 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294616 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 263200 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 259840 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 259840 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 259840 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 259840 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 259840 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 259840 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 259840 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 259840 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 259840 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 259840 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 259840 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 259840 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 259840 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 259840 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 259840 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 259840 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 259840 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 259840 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 259840 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 259840 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 259840 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 259840 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 259840 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 259840 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 259840 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 259840 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 31416 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n2: 256704 0x57CBC5E: QVector::realloc(int, int) (qvector.h:391) + n1: 251808 0x57C85B6: QTextFormat::merge(QTextFormat const&) (qvector.h:327) + n2: 251808 0xA5F6EFF: KTextEditor::Attribute::operator+=(KTextEditor::Attribute const&) (attribute.cpp:57) + n1: 245712 0x1588AD85: mergeAttributes(KSharedPtr, KSharedPtr) (katerenderrange.cpp:58) + n1: 245712 0x1588CD9D: RenderRangeList::generateAttribute() const (katerenderrange.cpp:403) + n1: 245712 0x15885EE9: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:415) + n2: 245712 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n1: 245712 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n0: 245712 in 3 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 6096 in 3 places, all below massif's threshold (01.00%) + n0: 4896 in 1 place, below massif's threshold (01.00%) + n1: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n0: 226246 in 6 places, all below massif's threshold (01.00%) +#----------- +snapshot=49 +#----------- +time=7241487342 +mem_heap_B=19404680 +mem_heap_extra_B=2977104 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=50 +#----------- +time=7244735220 +mem_heap_B=19480606 +mem_heap_extra_B=2978402 +mem_stacks_B=0 +heap_tree=detailed +n19: 19480606 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 4814173 in 2405 places, all below massif's threshold (01.00%) + n2: 4083224 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 3248656 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 3248656 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 3248656 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 3109992 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 3108952 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 3108952 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 3108952 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 3108952 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3108952 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3108952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3108952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 3108952 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 3108952 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 3108952 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 3108952 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 3108952 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 3108952 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 3108952 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3108952 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3108952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3108952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 3108952 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 3108952 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 3108952 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 3108952 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 3108952 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 3108952 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 3108952 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 3108952 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1040 in 1 place, below massif's threshold (01.00%) + n0: 138664 in 2 places, all below massif's threshold (01.00%) + n1: 834568 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 834568 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 834568 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 746336 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 740392 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 726056 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 726056 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 726056 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 726056 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 726056 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 410096 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 410096 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 410096 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 410096 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 410096 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 410096 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 410096 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 410096 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 410096 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 410096 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 410096 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 410096 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 410096 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 410096 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 410096 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 410096 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 5944 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1240448 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1240448 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 927664 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 927664 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 843696 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 837952 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 837952 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 837952 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 837952 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 837952 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 837952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 837952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 837952 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 837952 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 837952 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 837952 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 837952 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 837952 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 837952 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 837952 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 837952 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 837952 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 837952 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 837952 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 837952 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 837952 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 837952 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 837952 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 837952 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 837952 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5744 in 1 place, below massif's threshold (01.00%) + n0: 83968 in 2 places, all below massif's threshold (01.00%) + n1: 312784 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 312784 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 291824 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 289328 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 289328 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 289328 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 289328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 289328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 289328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 289328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 289328 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 289328 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 289328 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 289328 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 289328 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 289328 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 289328 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 289328 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 289328 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 289328 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 289328 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 289328 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 289328 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 289328 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 289328 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 289328 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 289328 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 289328 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2496 in 1 place, below massif's threshold (01.00%) + n0: 20960 in 3 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 797488 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 768960 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 404880 in 226 places, all below massif's threshold (01.00%) + n1: 364080 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 364080 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 364080 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 310856 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 307624 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 307624 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 307624 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 307624 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 307624 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 307624 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 307624 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 307624 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 307624 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 307624 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 307624 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 307624 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 307624 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307624 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307624 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 307624 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 307624 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 307624 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307624 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307624 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 307624 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 307624 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 307624 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 307624 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 53224 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 520728 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 520728 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 520728 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 520728 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 444552 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 440088 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 440088 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 440088 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 440088 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 440088 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 440088 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 440088 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 440088 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 440088 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 440088 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 440088 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 440088 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 440088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 440088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 440088 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 440088 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 440088 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 440088 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 440088 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 440088 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 440088 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 440088 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 440088 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 440088 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 440088 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 76176 in 1 place, below massif's threshold (01.00%) + n2: 500874 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 237442 in 77 places, all below massif's threshold (01.00%) + n1: 408616 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 408616 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 372112 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 368576 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 368576 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 368576 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 368576 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 368576 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 368576 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 368576 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 368576 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 368576 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 368576 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 368576 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 368576 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 368576 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 368576 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 368576 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 368576 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 368576 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 368576 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 368576 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 368576 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 368576 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 368576 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 368576 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 368576 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 368576 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 368576 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 368576 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3536 in 1 place, below massif's threshold (01.00%) + n0: 36504 in 4 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 301096 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 301096 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 255584 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 252224 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 252224 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 252224 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 252224 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 252224 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 252224 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 252224 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 252224 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 252224 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 252224 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 252224 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 252224 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 252224 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 252224 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 252224 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 252224 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 252224 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 252224 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 252224 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 252224 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 252224 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 252224 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 252224 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 252224 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 252224 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 252224 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 39088 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) + n1: 226246 0x70F98E3: QString::QString(int, Qt::Initialization) (qstring.cpp:1027) + n0: 226246 in 6 places, all below massif's threshold (01.00%) +#----------- +snapshot=51 +#----------- +time=7321190537 +mem_heap_B=19297766 +mem_heap_extra_B=2955858 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=52 +#----------- +time=7397658646 +mem_heap_B=19299902 +mem_heap_extra_B=2956674 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=53 +#----------- +time=7474151990 +mem_heap_B=19331518 +mem_heap_extra_B=2955002 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=54 +#----------- +time=7550607452 +mem_heap_B=19299758 +mem_heap_extra_B=2953802 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=55 +#----------- +time=7627170983 +mem_heap_B=19245910 +mem_heap_extra_B=2972138 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=56 +#----------- +time=7703773151 +mem_heap_B=19313438 +mem_heap_extra_B=2970426 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=57 +#----------- +time=7780229195 +mem_heap_B=19427106 +mem_heap_extra_B=2973750 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=58 +#----------- +time=7849390677 +mem_heap_B=19742078 +mem_heap_extra_B=2980506 +mem_stacks_B=0 +heap_tree=peak +n18: 19742078 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n0: 5022523 in 2406 places, all below massif's threshold (01.00%) + n2: 4239320 0x57B3D69: QTextEngine::LayoutData::reallocate(int) (qtextengine.cpp:2091) + n1: 3534208 0x57B7A3C: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine_p.h:522) + n1: 3534208 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n2: 3534208 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n2: 3394144 0x57C3058: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2454) + n1: 3393104 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 3393104 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 3393104 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 3393104 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3393104 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3393104 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3393104 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 3393104 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 3393104 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 3393104 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 3393104 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 3393104 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 3393104 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 3393104 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 3393104 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 3393104 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 3393104 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 3393104 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 3393104 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 3393104 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 3393104 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 3393104 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 3393104 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 3393104 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 3393104 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 1040 in 1 place, below massif's threshold (01.00%) + n0: 140064 in 2 places, all below massif's threshold (01.00%) + n1: 705112 0x57B7633: QTextEngine::attributes() const (qtextengine_p.h:522) + n2: 705112 0x57BE9A4: QTextLine::layout_helper(int) (qtextlayout.cpp:1739) + n2: 705112 0x15888B06: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:864) + n2: 616880 0x15890335: KateLayoutCache::line(int, int) (katelayoutcache.cpp:295) + n2: 610456 0x15890061: KateLayoutCache::updateViewCache(KTextEditor::Cursor const&, int, int) (katelayoutcache.cpp:267) + n1: 596120 0x158FF614: KateViewInternal::tagLines(KTextEditor::Cursor, KTextEditor::Cursor, bool) (kateviewinternal.cpp:2073) + n2: 596120 0x158FFAF7: KateViewInternal::tagRange(KTextEditor::Range const&, bool) (kateviewinternal.cpp:2129) + n1: 596120 0x158FEEEF: KateViewInternal::updateBracketMarks() (kateviewinternal.cpp:1994) + n1: 596120 0x158FE857: KateViewInternal::updateCursor(KTextEditor::Cursor const&, bool, bool, bool) (kateviewinternal.cpp:1918) + n2: 596120 0x158FC8B5: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1556) + n1: 315960 0x158FD129: KateViewInternal::pageDown(bool) (kateviewinternal.cpp:1657) + n1: 315960 0x158F1F66: KateView::pageDown() (kateview.cpp:2468) + n1: 315960 0x158DEF1A: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:404) + n1: 315960 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 315960 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 315960 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 315960 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 315960 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 315960 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 315960 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 315960 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 315960 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 315960 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 315960 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 315960 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 315960 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 280160 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 280160 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 280160 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 280160 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 280160 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 280160 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 280160 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 280160 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 280160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 280160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 280160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 280160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 280160 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 280160 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 280160 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 280160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 280160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 280160 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n0: 280160 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n0: 0 in 5 places, all below massif's threshold (01.00%) + n0: 14336 in 1 place, below massif's threshold (01.00%) + n0: 6424 in 4 places, all below massif's threshold (01.00%) + n0: 88232 in 1 place, below massif's threshold (01.00%) + n0: 0 in 2 places, all below massif's threshold (01.00%) + n3: 1512570 0x711D318: _hb_alloc (harfbuzz-impl.c:41) + n1: 1013120 0x711949C: Load_PairPos (harfbuzz-gpos.c:1267) + n1: 1013120 0x711C27B: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:5801) + n1: 1013120 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 1013120 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 1013120 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 1013120 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 1013120 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 1013120 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 1013120 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 1013120 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 1013120 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n2: 1013120 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n1: 680000 0x5793566: QFontMetrics::height() const (qfontmetrics.cpp:329) + n1: 680000 0x59BD88A: QStatusBar::reformat() (qstatusbar.cpp:544) + n1: 680000 0x59BE263: QStatusBar::setSizeGripEnabled(bool) (qstatusbar.cpp:505) + n1: 680000 0x59BE736: QStatusBar::QStatusBar(QWidget*) (qstatusbar.cpp:285) + n1: 680000 0x6AA2E02: KStatusBar::KStatusBar(QWidget*) (kstatusbar.cpp:74) + n1: 680000 0x65384CE: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6538C1A: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6533FDF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652B4D0: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x652D84E: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6513904: KateApp::newMainWindow(KConfig*, QString const&) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6542F56: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6514C69: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 680000 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 680000 0x5050ABB: (below main) (libc-start.c:220) + n1: 333120 0x57B4BD2: QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const (qtextengine.cpp:1772) + n1: 333120 0x57B7801: QTextEngine::shapeTextWithHarfbuzz(int) const (qtextengine.cpp:1122) + n1: 333120 0x57B877D: QTextEngine::shapeText(int) const (qtextengine.cpp:874) + n1: 333120 0x57B8B35: QTextEngine::shape(int) const (qtextengine.cpp:1359) + n1: 333120 0x57BAEC7: QTextEngine::width(int, int) const (qtextengine.cpp:1550) + n1: 333120 0x5794219: QFontMetrics::width(QString const&, int) const (qfontmetrics.cpp:538) + n1: 333120 0x10063B69: KUrlNavigatorButton::sizeHint() const (kurlnavigatorbutton.cpp:120) + n1: 333120 0x100633BF: KUrlNavigatorButton::updateMinimumWidth() (kurlnavigatorbutton.cpp:520) + n1: 333120 0x100639AB: KUrlNavigatorButton::setActive(bool) (kurlnavigatorbutton.cpp:93) + n1: 333120 0x10067A1F: KUrlNavigator::Private::updateButtonVisibility() (kurlnavigator.cpp:693) + n1: 333120 0x1006863E: KUrlNavigator::Private::updateButtons(int) (kurlnavigator.cpp:635) + n1: 333120 0x10068B8D: KUrlNavigator::Private::updateContent() (kurlnavigator.cpp:551) + n1: 333120 0x10069AD2: KUrlNavigator::KUrlNavigator(KFilePlacesModel*, KUrl const&, QWidget*) (kurlnavigator.cpp:793) + n1: 333120 0x173196BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x17314673: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n1: 333120 0x173146BF: ??? (in /usr/lib/kde4/katefilebrowserplugin.so) + n0: 333120 0x65301CF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 313920 0x711CC2E: _HB_GPOS_Load_SubTable (harfbuzz-gpos.c:2012) + n1: 313920 0x711F1A1: _HB_OPEN_Load_LookupList (harfbuzz-open.c:458) + n1: 313920 0x711D229: HB_Load_GPOS_Table (harfbuzz-gpos.c:142) + n1: 313920 0x712116E: HB_NewFace (harfbuzz-shaper.cpp:1004) + n1: 313920 0x584CFD9: QFreetypeFace::getFace(QFontEngine::FaceId const&) (qfontengine_ft.cpp:243) + n1: 313920 0x584D49D: QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat, bool) (qfontengine_ft.cpp:668) + n1: 313920 0x5846FAC: QFontEngineX11FT::QFontEngineX11FT(_FcPattern*, QFontDef const&, int) (qfontengine_x11.cpp:1110) + n1: 313920 0x5799C75: tryPatternLoad(_FcPattern*, int, QFontDef const&, int, _FcPattern**) (qfontdatabase_x11.cpp:1664) + n1: 313920 0x579F0AB: loadFc(QFontPrivate const*, int, QFontDef const&) (qfontdatabase_x11.cpp:1732) + n1: 313920 0x57A2B00: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1965) + n1: 313920 0x577CDCF: QFontPrivate::engineForScript(int) const (qfont.cpp:270) + n0: 313920 in 4 places, all below massif's threshold (01.00%) + n0: 185530 in 42 places, all below massif's threshold (01.00%) + n1: 1339312 0x56C3295: QVector::realloc(int, int) (qvector.h:479) + n2: 1339312 0x57B5C64: QTextEngine::splitItem(int, int) const (qvector.h:569) + n1: 1003424 0x57B6064: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2197) + n2: 1003424 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 933856 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 928352 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 928352 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 928352 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 928352 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 928352 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 928352 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 928352 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 928352 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 928352 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 928352 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 928352 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 928352 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 928352 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 928352 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 928352 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 928352 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 928352 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 928352 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 928352 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 928352 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 928352 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 928352 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 928352 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 928352 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 928352 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 5504 in 1 place, below massif's threshold (01.00%) + n0: 69568 in 2 places, all below massif's threshold (01.00%) + n1: 335888 0x57B6072: QTextEngine::addRequiredBoundaries() const (qtextengine.cpp:2198) + n2: 335888 0x57B653B: QTextEngine::itemize() const (qtextengine.cpp:1517) + n2: 316160 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 314160 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 314160 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 314160 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 314160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 314160 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 314160 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 314160 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 314160 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 314160 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 314160 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 314160 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 314160 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 314160 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 314160 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 314160 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 314160 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 314160 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314160 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314160 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314160 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314160 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 314160 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 2000 in 1 place, below massif's threshold (01.00%) + n0: 19728 in 3 places, all below massif's threshold (01.00%) + n3: 1096319 0x70B8B64: QByteArray::QByteArray(char const*, int) (qbytearray.cpp:1290) + n2: 468753 0x60E8286: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 468753 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 420666 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 420666 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 355347 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 321166 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 321166 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 321166 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 321166 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 321166 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 321166 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 321166 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 321166 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 321166 0x5050ABB: (below main) (libc-start.c:220) + n0: 34181 in 12 places, all below massif's threshold (01.00%) + n0: 65319 in 5 places, all below massif's threshold (01.00%) + n0: 48087 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n2: 401092 0x60E8260: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (bufferfragment_p.h:167) + n2: 401092 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 352174 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 352174 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 282654 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 255904 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 255904 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 255904 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 255904 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 255904 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 255904 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 255904 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 255904 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 255904 0x5050ABB: (below main) (libc-start.c:220) + n0: 26750 in 12 places, all below massif's threshold (01.00%) + n0: 69520 in 5 places, all below massif's threshold (01.00%) + n0: 48918 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 226474 in 16 places, all below massif's threshold (01.00%) + n2: 844064 0x70E15DB: QMapData::node_create(QMapData::Node**, int, int) (qmap.cpp:140) + n1: 783392 0x60D74AF: QMap::node_create(QMapData*, QMapData::Node**, KEntryKey const&, KEntry const&) (qmap.h:428) + n2: 783392 0x60D89B2: QMap::insert(KEntryKey const&, KEntry const&) (qmap.h:542) + n2: 658184 0x60D987C: KEntryMap::setEntry(QByteArray const&, QByteArray const&, QByteArray const&, QFlags) (kconfigdata.h:284) + n2: 657960 0x60E82A5: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags, bool) (kconfigini.cpp:261) + n2: 657960 0x60E93A2: KConfigIniBackend::parseConfig(QByteArray const&, KEntryMap&, QFlags) (kconfigini.cpp:66) + n1: 599480 0x60D2EC1: KConfigPrivate::parseConfigFiles() (kconfig.cpp:516) + n2: 599480 0x60D33FF: KConfig::reparseConfiguration() (kconfig.cpp:453) + n2: 507456 0x60D4211: KConfig::KConfig(QString const&, QFlags, char const*) (kconfig.cpp:161) + n1: 461920 0x158B67A7: KateHlManager::KateHlManager() (katesyntaxmanager.cpp:66) + n1: 461920 0x1598A1B1: KateGlobal::KateGlobal() (kateglobal.cpp:135) + n1: 461920 0x1598BBFE: KateGlobal::self() (kateglobal.cpp:432) + n1: 461920 0x1595B1BD: KateFactory::editor() (katefactory.cpp:53) + n1: 461920 0xA5EF2A7: KTextEditor::editor(char const*) (ktexteditor.cpp:242) + n1: 461920 0xA5F4AC6: KTextEditor::EditorChooser::editor(QString const&, bool) (editorchooser.cpp:132) + n1: 461920 0x651D960: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x6515600: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 461920 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 461920 0x5050ABB: (below main) (libc-start.c:220) + n0: 45536 in 12 places, all below massif's threshold (01.00%) + n0: 92024 in 5 places, all below massif's threshold (01.00%) + n0: 58480 in 2 places, all below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 224 in 1 place, below massif's threshold (01.00%) + n0: 125208 in 2 places, all below massif's threshold (01.00%) + n0: 60672 in 89 places, all below massif's threshold (01.00%) + n2: 797064 0x70D46E4: QListData::realloc(int) (qlist.cpp:158) + n2: 768536 0x70D498B: QListData::append() (qlist.cpp:179) + n0: 404880 in 226 places, all below massif's threshold (01.00%) + n1: 363656 0x1581152E: QList::append(QTextLayout::FormatRange const&) (qlist.h:470) + n1: 363656 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 363656 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 310576 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 307344 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 307344 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 307344 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 307344 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 307344 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 307344 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 307344 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 307344 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 307344 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 307344 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 307344 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 307344 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 307344 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307344 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307344 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 307344 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 307344 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 307344 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 307344 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 307344 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 307344 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 307344 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 307344 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n0: 307344 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 3232 in 3 places, all below massif's threshold (01.00%) + n0: 53080 in 1 place, below massif's threshold (01.00%) + n0: 28528 in 3 places, all below massif's threshold (01.00%) + n2: 762224 0x70F9B59: QString::QString(QChar const*, int) (qstring.cpp:980) + n1: 587044 0x15866EDF: KateTextLine::KateTextLine(QChar const*, int) (katetextline.cpp:37) + n1: 587044 0x1586094C: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 587044 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 587044 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 587044 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 587044 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 587044 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 587044 0x5050ABB: (below main) (libc-start.c:220) + n0: 175180 in 8 places, all below massif's threshold (01.00%) + n1: 721888 0x57BD032: QTextLayout::QTextLayout(QString const&, QFont const&, QPaintDevice*) (qtextlayout.cpp:370) + n1: 721888 0x158887BC: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:812) + n2: 721888 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 713728 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 713728 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 713728 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 713728 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 713728 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 713728 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 713728 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 713728 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 713728 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 713728 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 713728 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 713728 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 713728 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 713728 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 713728 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 713728 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 713728 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 713728 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 713728 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 713728 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 713728 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 713728 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 713728 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 8160 in 4 places, all below massif's threshold (01.00%) + n1: 518232 0x1581188B: QList::node_construct(QList::Node*, QTextLayout::FormatRange const&) (qlist.h:351) + n1: 518232 0x15811549: QList::append(QTextLayout::FormatRange const&) (qlist.h:472) + n1: 518232 0x15886315: KateRenderer::decorationsForLine(KSharedPtr const&, int, bool, KateRenderRange*, bool) const (katerenderer.cpp:439) + n2: 518232 0x158889CD: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:847) + n2: 444264 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n1: 439800 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 439800 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 439800 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 439800 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 439800 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 439800 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 439800 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 439800 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 439800 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 439800 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 439800 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 439800 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 439800 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 439800 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 439800 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 439800 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 439800 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 439800 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 439800 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 439800 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 439800 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 439800 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 439800 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 439800 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n0: 439800 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 4464 in 3 places, all below massif's threshold (01.00%) + n0: 73968 in 1 place, below massif's threshold (01.00%) + n2: 499850 0x70FB887: QString::realloc(int) (qstring.cpp:1219) + n1: 263432 0x70FBFA3: QString::resize(int) (qstring.cpp:1155) + n0: 263432 in 16 places, all below massif's threshold (01.00%) + n0: 236418 in 77 places, all below massif's threshold (01.00%) + n1: 437736 0x57B3250: QTextEngine::validate() const (qtextengine.cpp:1381) + n2: 437736 0x57B60CC: QTextEngine::itemize() const (qtextengine.cpp:1395) + n2: 406640 0x57C29A3: QTextLine::xToCursor(double, QTextLine::CursorPosition) const (qtextlayout.cpp:2425) + n1: 403208 0x15887163: KateRenderer::paintTextLine(QPainter&, KSharedPtr, int, int, KTextEditor::Cursor const*) (katerenderer.cpp:595) + n1: 403208 0x15903AD0: KateViewInternal::paintEvent(QPaintEvent*) (kateviewinternal.cpp:3021) + n1: 403208 0x55B50E0: QWidget::event(QEvent*) (qwidget.cpp:8144) + n1: 403208 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 403208 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 403208 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 403208 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n2: 403208 0x55BD75B: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:218) + n2: 403208 0x5776C34: QWidgetBackingStore::sync() (qbackingstore.cpp:1283) + n1: 403208 0x55AF04E: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1672) + n1: 403208 0x55B57E3: QWidget::event(QEvent*) (qwidget.cpp:8291) + n1: 403208 0x5977109: QMainWindow::event(QEvent*) (qmainwindow.cpp:1433) + n1: 403208 0x6AC33D1: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:131) + n1: 403208 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 403208 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 403208 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 403208 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 403208 0x71AD585: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.h:215) + n1: 403208 0x71D47F1: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qcoreapplication.h:220) + n1: 403208 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 403208 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 403208 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 403208 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 403208 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 403208 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 403208 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n0: 403208 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3432 in 1 place, below massif's threshold (01.00%) + n0: 31096 in 4 places, all below massif's threshold (01.00%) + n1: 403752 0x157FAFD7: QVector::realloc(int, int) (qvector.h:479) + n2: 403752 0x1585A4AC: QVector::resize(int) (qvector.h:330) + n2: 403752 0x15867851: KateTextLine::addAttribute(int, int, int) (katetextline.cpp:252) + n1: 403000 0x158BCC9E: KateHighlighting::doHighlight(KateTextLine*, KateTextLine*, QVector&, bool&) (katehighlight.cpp:455) + n1: 403000 0x1586234F: KateBuffer::doHighlight(int, int, bool) (katebuffer.cpp:1186) + n1: 403000 0x158617A3: KateBuffer::ensureHighlighted(int) (katebuffer.cpp:875) + n2: 403000 0x15850157: KateDocument::kateTextLine(unsigned int) (katedocument.cpp:5062) + n1: 401128 0x158EBF82: KateView::setCursorPositionInternal(KTextEditor::Cursor const&, unsigned int, bool) (kateview.cpp:1082) + n1: 401128 0x158F0B9E: KateView::setCursorPosition(KTextEditor::Cursor) (kateview.cpp:2178) + n1: 401128 0x6514F1D: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 401128 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 401128 0x5050ABB: (below main) (libc-start.c:220) + n0: 1872 in 1 place, below massif's threshold (01.00%) + n0: 752 in 1 place, below massif's threshold (01.00%) + n0: 0 in 3 places, all below massif's threshold (01.00%) + n2: 339712 0x15890442: KateLayoutCache::line(int, int) (katelayoutcache.cpp:306) + n2: 335872 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 335872 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 335872 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 335872 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 335872 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 335872 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 335872 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 335872 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 335872 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 335872 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 335872 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 335872 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 335872 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 335872 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 335872 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 335872 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 335872 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 335872 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 335872 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 335872 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 335872 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 335872 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 335872 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n0: 335872 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3840 in 4 places, all below massif's threshold (01.00%) + n1: 314928 0x92B535E: _XimParseStringFile (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92B3333: _XimLocalOpenIM (in /usr/lib/libX11.so.6.2.0) + n2: 314928 0x92B1BB4: _XimOpenIM (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34FE8: QXIMInputContext::create_xim() (qximinputcontext_x11.cpp:388) + n1: 314928 0x92B1938: _XimRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x92968BD: XRegisterIMInstantiateCallback (in /usr/lib/libX11.so.6.2.0) + n1: 314928 0x5B34118: QXIMInputContext::QXIMInputContext() (qximinputcontext_x11.cpp:371) + n1: 314928 0x5B332F6: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:137) + n1: 314928 0x187A5591: QMultiInputContext::QMultiInputContext() (qmultiinputcontext.cpp:101) + n1: 314928 0x187A6913: QMultiInputContextPlugin::create(QString const&) (qmultiinputcontextplugin.cpp:83) + n1: 314928 0x5B3332C: QInputContextFactory::create(QString const&, QObject*) (qinputcontextfactory.cpp:160) + n1: 314928 0x555ECBD: QApplication::inputContext() const (qapplication.cpp:5243) + n1: 314928 0x556446F: QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) (qapplication.cpp:2129) + n1: 314928 0x55B050F: QWidget::setFocus(Qt::FocusReason) (qwidget.cpp:6135) + n1: 314928 0x5568E90: QApplication::setActiveWindow(QWidget*) (qapplication.cpp:2474) + n1: 314928 0x55E3D1C: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3420) + n1: 314928 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 314928 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n1: 314928 0x71D4331: QEventDispatcherGlib::processEvents(QFlags) (qeventdispatcher_glib.cpp:412) + n1: 314928 0x560EF0C: QGuiEventDispatcherGlib::processEvents(QFlags) (qguieventdispatcher_glib.cpp:204) + n1: 314928 0x71A9730: QEventLoop::processEvents(QFlags) (qeventloop.cpp:149) + n1: 314928 0x71A9B0A: QEventLoop::exec(QFlags) (qeventloop.cpp:201) + n1: 314928 0x71AD849: QCoreApplication::exec() (qcoreapplication.cpp:981) + n1: 314928 0x4E2CEAB: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 314928 0x5050ABB: (below main) (libc-start.c:220) + n0: 0 in 1 place, below massif's threshold (01.00%) + n1: 300328 0x70D2A87: QHashData::allocateNode(int) (qhash.cpp:179) + n0: 300328 in 175 places, all below massif's threshold (01.00%) + n1: 297248 0x15860934: KateBuffer::openFile(QString const&) (katebuffer.cpp:656) + n1: 297248 0x1583ED75: KateDocument::openFile() (katedocument.cpp:2094) + n1: 297248 0xA82F065: KParts::ReadOnlyPart::openUrl(KUrl const&) (part.cpp:557) + n1: 297248 0x1583D64B: KateDocument::readParameterizedSessionConfig(KConfigGroup const&, unsigned long) (katedocument.cpp:1734) + n1: 297248 0x651C4DF: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6520EE8: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6536030: ??? (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x65149DB: KateApp::startupKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515476: KateApp::initKate() (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x6515660: KateApp::KateApp(KCmdLineArgs*) (in /usr/lib/libkateinterfaces.so.4.4.0) + n1: 297248 0x4E2CB22: kdemain (in /usr/lib/libkdeinit4_kate.so) + n0: 297248 0x5050ABB: (below main) (libc-start.c:220) + n1: 295008 0x56CE559: QVector::realloc(int, int) (qvector.h:391) + n2: 295008 0x57C0671: QTextLayout::createLine() (qvector.h:547) + n2: 294672 0x15888A4F: KateRenderer::layoutLine(KSharedPtr, int, bool) const (katerenderer.cpp:859) + n2: 255080 0x15890514: KateLayoutCache::line(int, int) (katelayoutcache.cpp:314) + n2: 251720 0x158FB989: KateViewInternal::viewLineOffset(KTextEditor::Cursor const&, int, bool) (kateviewinternal.cpp:1389) + n1: 251720 0x158FC847: KateViewInternal::scrollLines(int, bool) (kateviewinternal.cpp:1550) + n1: 251720 0x158FCD8C: KateViewInternal::pageUp(bool) (kateviewinternal.cpp:1616) + n1: 251720 0x158F1F1A: KateView::pageUp() (kateview.cpp:2458) + n1: 251720 0x158DEEF8: KateView::qt_metacall(QMetaObject::Call, int, void**) (kateview.moc:402) + n1: 251720 0x71BDC0D: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3293) + n1: 251720 0x5559020: QAction::triggered(bool) (moc_qaction.cpp:263) + n1: 251720 0x555B099: QAction::activate(QAction::ActionEvent) (qaction.cpp:1255) + n1: 251720 0x555C9A5: QAction::event(QEvent*) (qaction.cpp:1181) + n1: 251720 0x68D5EAB: KAction::event(QEvent*) (kaction.cpp:129) + n1: 251720 0x555F12A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4300) + n1: 251720 0x5565719: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4183) + n1: 251720 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 251720 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 251720 0x559AE74: QShortcutMap::dispatchEvent(QKeyEvent*) (qcoreapplication.h:215) + n1: 251720 0x559CC75: QShortcutMap::tryShortcutEvent(QObject*, QKeyEvent*) (qshortcutmap.cpp:364) + n1: 251720 0x5567271: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3746) + n1: 251720 0x69ABD74: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:302) + n1: 251720 0x71AAE0A: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:704) + n1: 251720 0x5609C18: QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type, int, QFlags, QString const&, bool, int, unsigned int, unsigned int, unsigned int, bool*) (qkeymapper_x11.cpp:1861) + n1: 251720 0x560C18E: QKeyMapperPrivate::translateKeyEvent(QWidget*, _XEvent const*, bool) (qkeymapper_x11.cpp:1831) + n1: 251720 0x55E3732: QApplication::x11ProcessEvent(_XEvent*) (qapplication_x11.cpp:3394) + n1: 251720 0x560F320: x11EventSourceDispatch(_GSource*, int (*)(void*), void*) (qguieventdispatcher_glib.cpp:146) + n1: 251720 0x7E72BCC: g_main_context_dispatch (in /lib/libglib-2.0.so.0.2200.3) + n1: 251720 0x7E76596: ??? (in /lib/libglib-2.0.so.0.2200.3) + n0: 251720 0x7E766BE: g_main_context_iteration (in /lib/libglib-2.0.so.0.2200.3) + n0: 0 in 1 place, below massif's threshold (01.00%) + n0: 3360 in 4 places, all below massif's threshold (01.00%) + n0: 39592 in 1 place, below massif's threshold (01.00%) + n0: 336 in 4 places, all below massif's threshold (01.00%) +#----------- +snapshot=59 +#----------- +time=7925964339 +mem_heap_B=19725150 +mem_heap_extra_B=2981266 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=60 +#----------- +time=8002419675 +mem_heap_B=19728342 +mem_heap_extra_B=3001386 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=61 +#----------- +time=8078877730 +mem_heap_B=19673490 +mem_heap_extra_B=3017142 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=62 +#----------- +time=8155338628 +mem_heap_B=19668350 +mem_heap_extra_B=3016594 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=63 +#----------- +time=8231796832 +mem_heap_B=19746874 +mem_heap_extra_B=3018814 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=64 +#----------- +time=8308286221 +mem_heap_B=19907382 +mem_heap_extra_B=3021218 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=65 +#----------- +time=8384741803 +mem_heap_B=3686489 +mem_heap_extra_B=630191 +mem_stacks_B=0 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.ktorrent b/massif-visualizer/test/data/massif.out.ktorrent new file mode 100755 index 00000000..9626f53f --- /dev/null +++ b/massif-visualizer/test/data/massif.out.ktorrent @@ -0,0 +1,5043 @@ +desc: (none) +cmd: ktorrent --nofork +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=1 +#----------- +time=16141963187 +mem_heap_B=144941171 +mem_heap_extra_B=2757845 +mem_stacks_B=0 +heap_tree=detailed +n3: 144941171 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 110493696 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 73662464 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 73662464 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 73662464 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 73662464 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 73662464 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 73662464 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 44695552 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 44695552 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 44695552 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 44695552 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 44695552 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 44695552 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 44695552 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 44695552 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 44695552 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 44695552 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 44695552 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 44695552 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 44695552 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30801920 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30801920 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 30801920 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 30801920 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 30801920 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30801920 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 30801920 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30801920 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30801920 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 30801920 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 13893632 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13893632 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 13893632 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 28966912 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 28966912 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 25296896 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 25296896 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 25296896 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 25296896 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25296896 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25296896 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 25296896 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 25296896 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 25296896 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 25296896 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19398656 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19398656 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 19398656 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 19398656 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 19005440 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19005440 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 19005440 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19005440 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19005440 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 19005440 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 19005440 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n1: 5898240 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 5898240 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 5898240 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 1966080 in 2 places, all below massif's threshold (01.00%) + n1: 1703936 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1703936 0x428858: ??? (in /usr/bin/ktorrent) + n1: 1703936 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1703936 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1703936 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1703936 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1703936 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1703936 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1703936 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1703936 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1703936 in 2 places, all below massif's threshold (01.00%) + n1: 36831232 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 36831232 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 36831232 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 36831232 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 36831232 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 22347776 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 22347776 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 22347776 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 22347776 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 22347776 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 22347776 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 22347776 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22347776 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22347776 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 22347776 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 22347776 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 22347776 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 22347776 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 15400960 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 15400960 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 15400960 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 15400960 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 15400960 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 15400960 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 6946816 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6946816 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 6946816 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 14483456 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 14483456 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 12648448 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 12648448 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 12648448 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 12648448 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12648448 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12648448 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 12648448 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 12648448 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 12648448 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 12648448 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9699328 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9699328 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 9699328 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 9699328 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 9502720 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9502720 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9502720 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9502720 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9502720 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9502720 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 9502720 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n1: 2949120 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 2949120 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 2949120 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 2949120 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 2949120 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 2949120 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 2949120 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 2949120 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 2949120 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 2949120 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 2949120 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 1835008 in 3 places, all below massif's threshold (01.00%) + n0: 20956787 in 3495 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n3: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F4B4A36DE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A93ED: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 9216000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD55ED2: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD79D21: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 9216000 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 4271616 0x3F4B4A369E: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4AA031: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F3D81DF7E: ??? (in /usr/lib64/libpng12.so.0.44.0) + n1: 4271616 0x3F3D81E759: png_process_data (in /usr/lib64/libpng12.so.0.44.0) + n1: 4271616 0x3F4B4A9D7B: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4271616 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4271616 0x4367E8: ??? (in /usr/bin/ktorrent) + n0: 4271616 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n0: 3072 in 9 places, all below massif's threshold (01.00%) +#----------- +snapshot=2 +#----------- +time=30492401873 +mem_heap_B=235301965 +mem_heap_extra_B=2856195 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=3 +#----------- +time=54065205127 +mem_heap_B=367947115 +mem_heap_extra_B=3025573 +mem_stacks_B=0 +heap_tree=detailed +n3: 367947115 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 330694656 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 220463104 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 220463104 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 220463104 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 220463104 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 220463104 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 220463104 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 130023424 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 130023424 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 130023424 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 130023424 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 130023424 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 130023424 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 130023424 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 130023424 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 130023424 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 130023424 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 130023424 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 130023424 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 130023424 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 116129792 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 116129792 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 116129792 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 116129792 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 116129792 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 116129792 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 116129792 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 116129792 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 116129792 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 116129792 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 13893632 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13893632 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 13893632 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 90439680 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 90439680 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 76152832 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 76152832 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 76152832 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 76152832 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 76152832 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 76152832 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 76152832 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 76152832 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 76152832 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 76152832 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 70254592 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 70254592 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 70254592 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 70254592 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 69861376 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 69861376 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 69861376 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 69861376 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 69861376 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 69861376 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 69861376 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n1: 5898240 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 5898240 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 5898240 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 5898240 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 5898240 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 9043968 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 9043968 0x428858: ??? (in /usr/bin/ktorrent) + n1: 9043968 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 9043968 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9043968 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9043968 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9043968 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9043968 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 9043968 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 9043968 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8519680 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8519680 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 8519680 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 8519680 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 8257536 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8257536 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 8257536 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8257536 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8257536 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8257536 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 8257536 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 5242880 in 2 places, all below massif's threshold (01.00%) + n1: 110231552 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 110231552 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 110231552 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 110231552 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 110231552 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 65011712 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 65011712 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 65011712 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 65011712 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 65011712 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 65011712 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 65011712 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 65011712 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 65011712 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 65011712 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 65011712 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 65011712 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 65011712 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 58064896 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 58064896 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 58064896 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 58064896 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58064896 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 58064896 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 6946816 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6946816 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 6946816 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 45219840 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 45219840 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 38076416 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 38076416 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 38076416 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 38076416 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 38076416 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 38076416 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 38076416 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 38076416 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 38076416 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 38076416 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35127296 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35127296 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 35127296 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 35127296 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 34930688 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 34930688 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 34930688 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 34930688 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 34930688 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 34930688 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 34930688 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 2949120 in 1 place, below massif's threshold (01.00%) + n1: 4521984 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 4521984 0x428858: ??? (in /usr/bin/ktorrent) + n1: 4521984 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 4521984 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4521984 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4521984 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4521984 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4521984 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 4521984 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 4521984 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4259840 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4259840 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 4259840 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 4259840 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 4128768 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4128768 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4128768 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4128768 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4128768 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4128768 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 4128768 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 2621440 in 2 places, all below massif's threshold (01.00%) + n0: 23761771 in 3499 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n3: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F4B4A36DE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A93ED: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 9216000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD55ED2: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD79D21: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 9216000 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 4271616 0x3F4B4A369E: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4AA031: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F3D81DF7E: ??? (in /usr/lib64/libpng12.so.0.44.0) + n1: 4271616 0x3F3D81E759: png_process_data (in /usr/lib64/libpng12.so.0.44.0) + n1: 4271616 0x3F4B4A9D7B: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 4271616 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 4271616 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4271616 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 4271616 0x4367E8: ??? (in /usr/bin/ktorrent) + n0: 4271616 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n0: 3072 in 9 places, all below massif's threshold (01.00%) +#----------- +snapshot=4 +#----------- +time=68641037932 +mem_heap_B=436521340 +mem_heap_extra_B=3134204 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=5 +#----------- +time=82756856499 +mem_heap_B=518880104 +mem_heap_extra_B=3177320 +mem_stacks_B=0 +heap_tree=detailed +n3: 518880104 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 482476032 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 321650688 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 321650688 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 321650688 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 321650688 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 321650688 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 321650688 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 187301888 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 187301888 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 187301888 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 187301888 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 187301888 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 187301888 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 187301888 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 187301888 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 187301888 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 187301888 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 187301888 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 187301888 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 187301888 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 173408256 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 173408256 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 173408256 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 173408256 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 173408256 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 173408256 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 173408256 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 173408256 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 173408256 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 173408256 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 13893632 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13893632 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 13893632 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 134348800 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 134348800 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 112984064 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 112984064 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 112984064 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 112984064 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 112984064 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 112984064 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 112984064 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 112984064 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 112984064 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 112984064 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106954752 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106954752 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 106954752 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 106954752 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 106561536 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106561536 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 106561536 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106561536 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106561536 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 106561536 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 106561536 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n1: 6029312 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6029312 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6029312 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6029312 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6029312 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6029312 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6029312 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6029312 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6029312 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6029312 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 6029312 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 13500416 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 13500416 0x428858: ??? (in /usr/bin/ktorrent) + n1: 13500416 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 13500416 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13500416 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13500416 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13500416 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13500416 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 13500416 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 13500416 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12976128 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12976128 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 12976128 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 12976128 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 12713984 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12713984 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 12713984 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12713984 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12713984 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12713984 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 12713984 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 7864320 in 2 places, all below massif's threshold (01.00%) + n1: 160825344 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 160825344 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 160825344 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 160825344 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 160825344 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 93650944 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 93650944 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 93650944 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 93650944 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 93650944 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 93650944 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 93650944 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 93650944 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 93650944 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 93650944 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 93650944 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 93650944 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 93650944 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 86704128 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 86704128 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 86704128 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 86704128 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 86704128 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 86704128 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 6946816 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6946816 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6946816 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6946816 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 6946816 0x34A801EC5B: (below main) (libc-start.c:226) + n1: 67174400 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 67174400 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 56492032 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 56492032 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 56492032 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 56492032 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 56492032 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 56492032 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 56492032 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 56492032 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 56492032 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 56492032 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53477376 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53477376 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 53477376 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 53477376 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 53280768 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53280768 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 53280768 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53280768 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53280768 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 53280768 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 53280768 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n1: 6750208 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 6750208 0x428858: ??? (in /usr/bin/ktorrent) + n1: 6750208 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 6750208 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6750208 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6750208 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6750208 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6750208 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 6750208 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 6750208 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6488064 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6488064 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6488064 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 6488064 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 6356992 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6356992 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 6356992 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6356992 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6356992 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 6356992 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 6356992 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 3932160 in 2 places, all below massif's threshold (01.00%) + n0: 22913384 in 3506 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n2: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F4B4A36DE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A93ED: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 9216000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD55ED2: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD79D21: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 9216000 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n0: 4274688 in 10 places, all below massif's threshold (01.00%) +#----------- +snapshot=6 +#----------- +time=106468900804 +mem_heap_B=651540095 +mem_heap_extra_B=3341537 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=7 +#----------- +time=126249894294 +mem_heap_B=805914304 +mem_heap_extra_B=3573000 +mem_stacks_B=0 +heap_tree=detailed +n3: 805914304 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 765591552 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510394368 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510394368 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510394368 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510394368 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510394368 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 510394368 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302120960 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302120960 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302120960 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302120960 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302120960 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 302120960 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 302120960 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 302120960 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 302120960 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 302120960 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 302120960 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 302120960 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 302120960 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 288227328 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 288227328 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 288227328 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 288227328 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 288227328 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 288227328 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 288227328 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 288227328 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 288227328 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 288227328 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 13893632 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13893632 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 13893632 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 208273408 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 208273408 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 177471488 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 177471488 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 177471488 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 177471488 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 177471488 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 177471488 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 177471488 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 177471488 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 177471488 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 177471488 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171442176 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171442176 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 171442176 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 171442176 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 171048960 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171048960 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 171048960 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171048960 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171048960 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 171048960 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 171048960 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 17432576 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 17432576 0x428858: ??? (in /usr/bin/ktorrent) + n1: 17432576 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 17432576 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 17432576 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 17432576 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 17432576 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 17432576 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 17432576 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 17432576 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16908288 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16908288 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 16908288 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 16908288 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 16646144 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16646144 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 16646144 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16646144 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16646144 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 16646144 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 16646144 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 13369344 in 2 places, all below massif's threshold (01.00%) + n1: 255197184 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 255197184 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 255197184 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 255197184 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 255197184 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 151060480 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 151060480 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 151060480 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 151060480 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 151060480 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 151060480 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 151060480 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 151060480 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 151060480 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 151060480 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 151060480 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 151060480 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 151060480 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 144113664 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 144113664 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 144113664 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 144113664 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 144113664 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 144113664 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 6946816 in 1 place, below massif's threshold (01.00%) + n1: 104136704 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 104136704 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 88735744 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 88735744 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 88735744 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 88735744 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 88735744 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 88735744 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 88735744 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 88735744 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 88735744 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 88735744 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85721088 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85721088 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 85721088 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 85721088 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 85524480 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85524480 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 85524480 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85524480 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85524480 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 85524480 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 85524480 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n1: 8716288 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 8716288 0x428858: ??? (in /usr/bin/ktorrent) + n1: 8716288 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 8716288 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8716288 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8716288 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 8716288 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 8716288 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 8716288 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 8716288 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8454144 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8454144 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 8454144 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 8454144 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 8323072 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8323072 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 8323072 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8323072 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8323072 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 8323072 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 8323072 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 6684672 in 2 places, all below massif's threshold (01.00%) + n0: 26832064 in 3507 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n2: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F4B4A36DE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A63CE: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A93ED: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B4A4DE8: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3BFE49: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C3313: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F4B3C5565: ??? (in /usr/lib64/libkhtml.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EEAC32: KIO::TransferJob::data(KIO::Job*, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EED26E: KIO::TransferJob::slotData(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EEFF34: KIO::TransferJob::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41F8E1C0: KIO::SlaveInterface::data(QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F9137E: KIO::SlaveInterface::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8E411: KIO::SlaveInterface::dispatch() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F83764: KIO::Slave::gotInput() (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41F8393A: KIO::Slave::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F41EC1145: ??? (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F41EC125B: KIO::Connection::qt_metacall(QMetaObject::Call, int, void**) (in /usr/lib64/libkio.so.5.5.0) + n1: 9216000 0x3F3DD62F2F: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 9216000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 9216000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD55ED2: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 9216000 0x3F3DD79D21: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 9216000 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n0: 4274688 in 10 places, all below massif's threshold (01.00%) +#----------- +snapshot=8 +#----------- +time=143504062695 +mem_heap_B=944158930 +mem_heap_extra_B=3752958 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=9 +#----------- +time=157426267008 +mem_heap_B=1014028224 +mem_heap_extra_B=3785144 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=10 +#----------- +time=173281903175 +mem_heap_B=1121451411 +mem_heap_extra_B=4010821 +mem_stacks_B=0 +heap_tree=detailed +n3: 1121451411 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1079181312 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 719454208 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 719454208 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 719454208 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 719454208 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 719454208 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 719454208 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 421396480 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 421396480 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 421396480 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 421396480 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 421396480 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 421396480 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 421396480 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421396480 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421396480 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 421396480 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 421396480 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 421396480 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 421396480 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 407502848 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 407502848 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 407502848 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 407502848 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 407502848 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 407502848 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 407502848 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 407502848 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 407502848 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 407502848 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 13893632 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 13893632 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13893632 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 13893632 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 13893632 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 298057728 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 298057728 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 257949696 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 257949696 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 257949696 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 257949696 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 257949696 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 257949696 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 257949696 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 257949696 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 257949696 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 257949696 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251920384 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251920384 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 251920384 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 251920384 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 251527168 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251527168 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 251527168 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251527168 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251527168 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 251527168 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 251527168 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 23199744 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 23199744 0x428858: ??? (in /usr/bin/ktorrent) + n1: 23199744 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 23199744 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23199744 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23199744 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 23199744 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 23199744 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 23199744 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 23199744 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22675456 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22675456 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 22675456 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 22675456 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 22413312 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22413312 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 22413312 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22413312 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22413312 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 22413312 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 22413312 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 16908288 in 2 places, all below massif's threshold (01.00%) + n1: 359727104 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 359727104 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 359727104 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 359727104 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 359727104 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 210698240 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 210698240 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 210698240 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 210698240 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 210698240 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 210698240 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 210698240 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 210698240 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 210698240 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 210698240 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 210698240 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 210698240 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 210698240 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 203751424 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 203751424 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 203751424 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 203751424 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 203751424 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 203751424 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 6946816 in 1 place, below massif's threshold (01.00%) + n1: 149028864 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 149028864 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 128974848 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 128974848 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 128974848 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 128974848 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 128974848 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 128974848 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 128974848 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 128974848 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 128974848 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 128974848 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125960192 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125960192 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 125960192 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 125960192 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 125763584 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125763584 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 125763584 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125763584 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125763584 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 125763584 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 125763584 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n1: 11599872 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 11599872 0x428858: ??? (in /usr/bin/ktorrent) + n1: 11599872 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 11599872 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 11599872 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 11599872 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 11599872 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 11599872 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 11599872 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 11599872 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 11337728 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 11337728 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 11337728 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 11337728 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n0: 11337728 in 2 places, all below massif's threshold (01.00%) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 8454144 in 2 places, all below massif's threshold (01.00%) + n0: 28779411 in 3507 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n0: 13490688 in 11 places, all below massif's threshold (01.00%) +#----------- +snapshot=11 +#----------- +time=190751887421 +mem_heap_B=1203199500 +mem_heap_extra_B=4024116 +mem_stacks_B=0 +heap_tree=detailed +n3: 1203199500 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1160380416 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 773586944 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 773586944 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 773586944 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 773586944 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 773586944 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 773586944 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 454557696 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 454557696 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 454557696 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 454557696 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 454557696 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 454557696 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 454557696 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454557696 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454557696 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 454557696 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 454557696 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 454557696 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 454557696 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 440532992 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 440532992 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 440532992 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 440532992 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 440532992 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 440532992 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 440532992 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 440532992 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 440532992 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 440532992 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 14024704 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 14024704 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 14024704 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 319029248 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 319029248 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276955136 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276955136 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276955136 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276955136 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276955136 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276955136 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276955136 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276955136 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 276955136 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 276955136 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270925824 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270925824 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 270925824 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 270925824 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 270532608 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270532608 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 270532608 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270532608 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270532608 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 270532608 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 270532608 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 24248320 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 24248320 0x428858: ??? (in /usr/bin/ktorrent) + n1: 24248320 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 24248320 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 24248320 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 24248320 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 24248320 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 24248320 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 24248320 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 24248320 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23724032 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23724032 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 23724032 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 23724032 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 23461888 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23461888 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 23461888 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23461888 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23461888 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 23461888 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 23461888 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 17825792 in 2 places, all below massif's threshold (01.00%) + n1: 386793472 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 386793472 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 386793472 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 386793472 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 386793472 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 227278848 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 227278848 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 227278848 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 227278848 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 227278848 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 227278848 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 227278848 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227278848 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227278848 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 227278848 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 227278848 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 227278848 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 227278848 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 220266496 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 220266496 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 220266496 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 220266496 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 220266496 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 220266496 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 159514624 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 159514624 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 138477568 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 138477568 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 138477568 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 138477568 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 138477568 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 138477568 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 138477568 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 138477568 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 138477568 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 138477568 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135462912 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135462912 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 135462912 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 135462912 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 135266304 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135266304 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 135266304 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135266304 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135266304 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 135266304 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 135266304 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n1: 12124160 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 12124160 0x428858: ??? (in /usr/bin/ktorrent) + n1: 12124160 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 12124160 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12124160 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12124160 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 12124160 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 12124160 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 12124160 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 12124160 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n0: 12124160 in 2 places, all below massif's threshold (01.00%) + n0: 8912896 in 2 places, all below massif's threshold (01.00%) + n0: 29328396 in 3507 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n0: 13490688 in 11 places, all below massif's threshold (01.00%) +#----------- +snapshot=12 +#----------- +time=211379362039 +mem_heap_B=1316650879 +mem_heap_extra_B=4182881 +mem_stacks_B=0 +heap_tree=detailed +n3: 1316650879 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1272446976 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 848297984 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 848297984 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 848297984 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 848297984 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 848297984 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 848297984 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 497811456 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 497811456 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 497811456 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 497811456 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 497811456 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 497811456 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 497811456 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 497811456 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 497811456 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 497811456 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 497811456 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 497811456 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 497811456 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 483786752 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 483786752 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 483786752 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 483786752 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 483786752 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 483786752 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 483786752 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 483786752 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 483786752 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 483786752 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 14024704 0x3F3DD79B72: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 14024704 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 14024704 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 14024704 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 14024704 0x426A49: ??? (in /usr/bin/ktorrent) + n1: 350486528 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 350486528 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 304742400 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 304742400 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 304742400 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 304742400 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 304742400 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 304742400 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 304742400 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 304742400 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 304742400 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 304742400 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298713088 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298713088 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 298713088 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 298713088 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 298319872 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298319872 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 298319872 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298319872 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298319872 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 298319872 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 298319872 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 25952256 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 25952256 0x428858: ??? (in /usr/bin/ktorrent) + n1: 25952256 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 25952256 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25952256 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25952256 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 25952256 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 25952256 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 25952256 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 25952256 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25427968 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25427968 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 25427968 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 25427968 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 25165824 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25165824 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 25165824 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25165824 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25165824 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 25165824 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 25165824 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 19791872 in 2 places, all below massif's threshold (01.00%) + n1: 424148992 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 424148992 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 424148992 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 424148992 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 424148992 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248905728 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248905728 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248905728 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248905728 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248905728 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 248905728 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 248905728 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 248905728 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 248905728 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 248905728 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 248905728 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 248905728 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 248905728 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 241893376 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 241893376 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 241893376 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 241893376 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 241893376 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 241893376 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 175243264 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 175243264 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 152371200 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 152371200 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 152371200 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 152371200 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 152371200 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 152371200 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 152371200 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 152371200 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 152371200 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 152371200 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149356544 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149356544 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 149356544 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 149356544 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 149159936 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149159936 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 149159936 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149159936 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149159936 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 149159936 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 149159936 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 22872064 in 3 places, all below massif's threshold (01.00%) + n0: 30713215 in 3507 places, all below massif's threshold (01.00%) + n1: 13490688 0x3F3F660890: QImageData::create(QSize const&, QImage::Format, int) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 13490688 0x3F3F661BB9: QImage::QImage(int, int, QImage::Format) (in /usr/lib64/libQtGui.so.4.6.3) + n0: 13490688 in 11 places, all below massif's threshold (01.00%) +#----------- +snapshot=13 +#----------- +time=226282076091 +mem_heap_B=1455409069 +mem_heap_extra_B=4353443 +mem_stacks_B=0 +heap_tree=detailed +n2: 1455409069 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1410269184 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 940179456 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 940179456 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 940179456 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 940179456 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 940179456 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 940179456 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 552337408 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 552337408 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 552337408 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 552337408 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 552337408 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 552337408 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 552337408 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 552337408 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 538312704 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 538312704 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 538312704 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 538312704 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 538312704 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 538312704 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 538312704 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 538312704 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 538312704 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 538312704 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 387842048 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 387842048 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 339214336 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 339214336 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 339214336 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 339214336 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 339214336 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 339214336 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 339214336 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 339214336 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 339214336 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 339214336 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 333185024 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 333185024 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 333185024 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 333185024 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 332791808 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 332791808 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 332791808 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 332791808 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 332791808 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 332791808 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 332791808 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 26869760 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 26869760 0x428858: ??? (in /usr/bin/ktorrent) + n1: 26869760 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 26869760 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26869760 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26869760 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 26869760 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 26869760 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 26869760 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 26869760 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26345472 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26345472 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 26345472 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 26345472 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 26083328 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26083328 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 26083328 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26083328 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26083328 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 26083328 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 26083328 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 21757952 in 2 places, all below massif's threshold (01.00%) + n1: 470089728 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 470089728 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 470089728 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 470089728 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 470089728 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 276168704 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 276168704 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276168704 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276168704 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276168704 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276168704 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 276168704 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 276168704 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 269156352 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 269156352 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 269156352 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 269156352 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 269156352 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 269156352 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 193921024 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 193921024 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 169607168 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 169607168 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 169607168 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 169607168 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 169607168 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 169607168 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 169607168 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 169607168 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 169607168 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 169607168 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166592512 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166592512 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 166592512 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 166592512 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 166395904 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166395904 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 166395904 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166395904 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166395904 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 166395904 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 166395904 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 24313856 in 3 places, all below massif's threshold (01.00%) + n0: 45139885 in 3508 places, all below massif's threshold (01.00%) +#----------- +snapshot=14 +#----------- +time=245352707621 +mem_heap_B=1592755763 +mem_heap_extra_B=4521493 +mem_stacks_B=0 +heap_tree=detailed +n2: 1592755763 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1545928704 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030619136 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030619136 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030619136 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030619136 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030619136 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1030619136 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 605290496 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 605290496 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 605290496 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 605290496 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 605290496 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 605290496 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 605290496 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 605290496 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 605290496 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 605290496 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 605290496 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 605290496 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 605290496 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 591265792 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 591265792 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 591265792 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 591265792 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 591265792 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 591265792 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 591265792 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 591265792 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 591265792 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 591265792 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 425328640 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 425328640 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 371589120 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 371589120 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 371589120 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 371589120 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 371589120 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 371589120 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 371589120 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 371589120 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 371589120 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 371589120 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365559808 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365559808 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 365559808 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 365559808 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 365166592 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365166592 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 365166592 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365166592 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365166592 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 365166592 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 365166592 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 29753344 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 29753344 0x428858: ??? (in /usr/bin/ktorrent) + n1: 29753344 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 29753344 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 29753344 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 29753344 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 29753344 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 29753344 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 29753344 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 29753344 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 29229056 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 29229056 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 29229056 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 29229056 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 28966912 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 28966912 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 28966912 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 28966912 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 28966912 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 28966912 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 28966912 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 23986176 in 2 places, all below massif's threshold (01.00%) + n1: 515309568 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515309568 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515309568 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515309568 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 515309568 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302645248 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302645248 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302645248 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302645248 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 302645248 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 302645248 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 302645248 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 302645248 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 302645248 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 302645248 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 302645248 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 302645248 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 302645248 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 295632896 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 295632896 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 295632896 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 295632896 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 295632896 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 295632896 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 212664320 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 212664320 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 185794560 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 185794560 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 185794560 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 185794560 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 185794560 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 185794560 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 185794560 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 185794560 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 185794560 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 185794560 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182779904 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182779904 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 182779904 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 182779904 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 182583296 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182583296 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 182583296 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182583296 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182583296 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 182583296 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 182583296 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 26869760 in 3 places, all below massif's threshold (01.00%) + n0: 46827059 in 3508 places, all below massif's threshold (01.00%) +#----------- +snapshot=15 +#----------- +time=258247853316 +mem_heap_B=1708225174 +mem_heap_extra_B=4670530 +mem_stacks_B=0 +heap_tree=detailed +n2: 1708225174 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1659961344 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1106640896 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1106640896 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1106640896 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1106640896 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1106640896 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1106640896 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 652869632 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 652869632 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 652869632 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 652869632 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 652869632 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 652869632 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 652869632 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 652869632 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 652869632 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 652869632 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 652869632 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 652869632 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 652869632 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 638844928 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 638844928 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 638844928 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 638844928 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 638844928 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 638844928 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 638844928 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 638844928 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 638844928 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 638844928 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 453771264 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 453771264 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395837440 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395837440 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395837440 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395837440 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 395837440 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 395837440 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 395837440 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 395837440 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 395837440 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 395837440 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389808128 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389808128 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 389808128 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 389808128 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 389414912 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389414912 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 389414912 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389414912 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389414912 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 389414912 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 389414912 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 31719424 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 31719424 0x428858: ??? (in /usr/bin/ktorrent) + n1: 31719424 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 31719424 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 31719424 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 31719424 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 31719424 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 31719424 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 31719424 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 31719424 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 31195136 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 31195136 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 31195136 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 31195136 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 30932992 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30932992 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 30932992 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30932992 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30932992 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 30932992 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 30932992 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 26214400 in 2 places, all below massif's threshold (01.00%) + n1: 553320448 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 553320448 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 553320448 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 553320448 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 553320448 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 326434816 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 326434816 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 326434816 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 326434816 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 326434816 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 326434816 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 326434816 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 326434816 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 326434816 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 326434816 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 326434816 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 326434816 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 326434816 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 319422464 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 319422464 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 319422464 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 319422464 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 319422464 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 319422464 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 226885632 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 226885632 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 197918720 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 197918720 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 197918720 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 197918720 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 197918720 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 197918720 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 197918720 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 197918720 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 197918720 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 197918720 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194904064 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194904064 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 194904064 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 194904064 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 194707456 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194707456 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 194707456 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194707456 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194707456 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 194707456 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 194707456 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 28966912 in 3 places, all below massif's threshold (01.00%) + n0: 48263830 in 3508 places, all below massif's threshold (01.00%) +#----------- +snapshot=16 +#----------- +time=280534266611 +mem_heap_B=1846030871 +mem_heap_extra_B=4840337 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=17 +#----------- +time=299049414389 +mem_heap_B=1914213268 +mem_heap_extra_B=4915236 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=18 +#----------- +time=318867972478 +mem_heap_B=1984259682 +mem_heap_extra_B=4994870 +mem_stacks_B=0 +heap_tree=detailed +n2: 1984259682 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 1934229504 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1289486336 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1289486336 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1289486336 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1289486336 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1289486336 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1289486336 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 760479744 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 760479744 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 760479744 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 760479744 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 760479744 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 760479744 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 760479744 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 760479744 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 760479744 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 760479744 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 760479744 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 760479744 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 760479744 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746455040 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746455040 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 746455040 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 746455040 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 746455040 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746455040 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 746455040 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746455040 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746455040 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 746455040 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 529006592 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n4: 529006592 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 462290944 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 462290944 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 462290944 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 462290944 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 462290944 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 462290944 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 462290944 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 462290944 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 462290944 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 462290944 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 456261632 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 456261632 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 456261632 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 456261632 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 455868416 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 455868416 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 455868416 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 455868416 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 455868416 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 455868416 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 455868416 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 36306944 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 36306944 0x428858: ??? (in /usr/bin/ktorrent) + n1: 36306944 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 36306944 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36306944 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36306944 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 36306944 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 36306944 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 36306944 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 36306944 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35782656 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35782656 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 35782656 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 35782656 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 35520512 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35520512 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 35520512 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35520512 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35520512 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 35520512 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 35520512 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n1: 20578304 0x3F43470596: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 20578304 0x428858: ??? (in /usr/bin/ktorrent) + n1: 20578304 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 20578304 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20578304 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20578304 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 20578304 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 20578304 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 20578304 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 20578304 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 20447232 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 20447232 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 20447232 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 20447232 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 20447232 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 20447232 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 9830400 in 1 place, below massif's threshold (01.00%) + n1: 644743168 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 644743168 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 644743168 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 644743168 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 644743168 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 380239872 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 380239872 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 380239872 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 380239872 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 380239872 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 380239872 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 380239872 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 380239872 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 380239872 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 380239872 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 380239872 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 380239872 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 380239872 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 373227520 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 373227520 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 373227520 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 373227520 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373227520 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 373227520 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 264503296 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 264503296 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 231145472 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 231145472 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 231145472 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 231145472 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 231145472 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 231145472 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 231145472 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 231145472 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 231145472 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 231145472 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 228130816 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 228130816 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 228130816 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 228130816 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 227934208 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227934208 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 227934208 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227934208 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227934208 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 227934208 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 227934208 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 33357824 in 3 places, all below massif's threshold (01.00%) + n0: 50030178 in 3508 places, all below massif's threshold (01.00%) +#----------- +snapshot=19 +#----------- +time=332795619341 +mem_heap_B=2064982153 +mem_heap_extra_B=5132599 +mem_stacks_B=0 +heap_tree=detailed +n2: 2064982153 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 2013855744 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1342570496 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1342570496 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1342570496 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1342570496 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1342570496 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1342570496 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 791937024 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 791937024 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 791937024 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 791937024 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 791937024 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 791937024 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 791937024 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 791937024 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 791937024 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 791937024 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 791937024 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 791937024 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 791937024 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 777912320 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 777912320 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 777912320 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 777912320 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 777912320 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 777912320 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 777912320 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 777912320 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 777912320 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 777912320 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 550633472 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n4: 550633472 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 481820672 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 481820672 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 481820672 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 481820672 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 481820672 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 481820672 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 481820672 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 481820672 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475791360 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475791360 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 475791360 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 475791360 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 475398144 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475398144 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 475398144 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475398144 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475398144 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 475398144 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 475398144 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 37224448 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 37224448 0x428858: ??? (in /usr/bin/ktorrent) + n1: 37224448 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 37224448 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37224448 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37224448 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 37224448 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 37224448 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 37224448 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 37224448 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36700160 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36700160 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 36700160 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 36700160 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 36438016 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36438016 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 36438016 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36438016 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36438016 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 36438016 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 36438016 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n1: 21495808 0x3F43470596: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 21495808 0x428858: ??? (in /usr/bin/ktorrent) + n1: 21495808 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 21495808 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21495808 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21495808 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 21495808 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 21495808 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21364736 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21364736 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21364736 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21364736 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21364736 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 21364736 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 10092544 in 1 place, below massif's threshold (01.00%) + n1: 671285248 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 671285248 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 671285248 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 671285248 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 671285248 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395968512 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395968512 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395968512 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395968512 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 395968512 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 395968512 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 395968512 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 395968512 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 395968512 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 395968512 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 395968512 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 395968512 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 395968512 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 388956160 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 388956160 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 388956160 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 388956160 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 388956160 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 388956160 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 275316736 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 275316736 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 240910336 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 240910336 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 240910336 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 240910336 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 240910336 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 240910336 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 240910336 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 240910336 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 240910336 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 240910336 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237895680 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237895680 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 237895680 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 237895680 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 237699072 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237699072 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 237699072 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237699072 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237699072 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 237699072 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 237699072 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 34406400 in 3 places, all below massif's threshold (01.00%) + n0: 51126409 in 3508 places, all below massif's threshold (01.00%) +#----------- +snapshot=20 +#----------- +time=346143243654 +mem_heap_B=2127650675 +mem_heap_extra_B=5196373 +mem_stacks_B=0 +heap_tree=detailed +n2: 2127650675 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 2074804224 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1383202816 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1383202816 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1383202816 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1383202816 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1383202816 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1383202816 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 817233920 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 817233920 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 817233920 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 817233920 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 817233920 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 817233920 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 817233920 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 817233920 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 817233920 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 817233920 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 817233920 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 817233920 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 817233920 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 803209216 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 803209216 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 565968896 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n4: 565968896 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 496107520 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 496107520 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 496107520 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 496107520 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496107520 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496107520 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 496107520 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 496107520 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 496107520 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 496107520 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 490078208 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 490078208 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 490078208 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 490078208 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 489684992 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 489684992 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 489684992 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 489684992 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 489684992 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 489684992 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 489684992 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 37879808 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 37879808 0x428858: ??? (in /usr/bin/ktorrent) + n1: 37879808 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 37879808 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37879808 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37879808 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 37879808 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 37879808 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 37879808 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 37879808 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37355520 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37355520 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 37355520 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 37355520 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 37093376 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37093376 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 37093376 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37093376 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37093376 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 37093376 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 37093376 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n1: 21626880 0x3F43470596: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 21626880 0x428858: ??? (in /usr/bin/ktorrent) + n1: 21626880 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 21626880 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21626880 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21626880 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21626880 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21626880 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 21626880 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 21626880 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21495808 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21495808 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 21495808 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 21495808 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 21495808 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 21495808 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 131072 in 1 place, below massif's threshold (01.00%) + n0: 10354688 in 1 place, below massif's threshold (01.00%) + n1: 691601408 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 691601408 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 691601408 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 691601408 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 691601408 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 408616960 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 408616960 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 408616960 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 408616960 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 408616960 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 408616960 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 408616960 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 408616960 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 408616960 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 408616960 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 408616960 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 408616960 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 408616960 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 401604608 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 401604608 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 401604608 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 401604608 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 401604608 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 401604608 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 282984448 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 282984448 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248053760 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248053760 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248053760 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 248053760 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 248053760 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 248053760 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 248053760 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 248053760 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 248053760 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 248053760 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 245039104 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 245039104 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 245039104 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 245039104 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 244842496 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 244842496 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 244842496 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 244842496 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 244842496 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 244842496 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 244842496 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 34930688 in 3 places, all below massif's threshold (01.00%) + n0: 52846451 in 3509 places, all below massif's threshold (01.00%) +#----------- +snapshot=21 +#----------- +time=366565180450 +mem_heap_B=2236042289 +mem_heap_extra_B=5365207 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=22 +#----------- +time=387469658169 +mem_heap_B=2351107186 +mem_heap_extra_B=5449622 +mem_stacks_B=0 +heap_tree=detailed +n2: 2351107186 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 2297167872 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1531445248 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1531445248 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1531445248 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1531445248 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1531445248 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1531445248 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 905183232 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 905183232 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 905183232 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 905183232 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 905183232 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 905183232 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 905183232 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 905183232 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 905183232 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 905183232 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 905183232 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 905183232 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 905183232 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 891158528 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 891158528 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 891158528 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 891158528 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 891158528 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 891158528 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 891158528 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 891158528 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 891158528 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 891158528 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 626262016 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 626262016 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 552337408 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 552337408 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 552337408 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 552337408 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 552337408 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 552337408 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 552337408 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 546308096 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 546308096 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 546308096 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 546308096 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 545914880 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 545914880 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 545914880 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 545914880 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 545914880 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 545914880 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 545914880 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 40763392 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 40763392 0x428858: ??? (in /usr/bin/ktorrent) + n1: 40763392 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 40763392 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 40763392 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 40763392 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 40763392 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 40763392 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 40763392 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 40763392 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 40239104 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 40239104 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 40239104 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 40239104 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 39976960 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 39976960 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 39976960 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 39976960 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 39976960 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 39976960 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 39976960 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 33161216 in 2 places, all below massif's threshold (01.00%) + n1: 765722624 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 765722624 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 765722624 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 765722624 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 765722624 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 452591616 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 452591616 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 452591616 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 452591616 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 452591616 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 452591616 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 452591616 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 452591616 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 452591616 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 452591616 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 452591616 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 452591616 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 452591616 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 445579264 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 445579264 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 445579264 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 445579264 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 445579264 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 445579264 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 313131008 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 313131008 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 276168704 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276168704 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 276168704 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276168704 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 276168704 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 276168704 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 276168704 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 273154048 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 273154048 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 273154048 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 273154048 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 272957440 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 272957440 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 272957440 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 272957440 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 272957440 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 272957440 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 272957440 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 36962304 in 3 places, all below massif's threshold (01.00%) + n0: 53939314 in 3509 places, all below massif's threshold (01.00%) +#----------- +snapshot=23 +#----------- +time=403117242495 +mem_heap_B=2421199795 +mem_heap_extra_B=5554069 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=24 +#----------- +time=427814037384 +mem_heap_B=2503468693 +mem_heap_extra_B=5655675 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=25 +#----------- +time=450158022379 +mem_heap_B=2585371863 +mem_heap_extra_B=5768257 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=26 +#----------- +time=471695565829 +mem_heap_B=2681391485 +mem_heap_extra_B=5920635 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=27 +#----------- +time=488403974050 +mem_heap_B=2727471219 +mem_heap_extra_B=5924893 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=28 +#----------- +time=511263981863 +mem_heap_B=2812333455 +mem_heap_extra_B=6030673 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=29 +#----------- +time=528306599750 +mem_heap_B=2877914780 +mem_heap_extra_B=6110964 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=30 +#----------- +time=545101192655 +mem_heap_B=2937043022 +mem_heap_extra_B=6268410 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=31 +#----------- +time=567958339856 +mem_heap_B=3031005886 +mem_heap_extra_B=6338442 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=32 +#----------- +time=579835493034 +mem_heap_B=3064414879 +mem_heap_extra_B=6335409 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=33 +#----------- +time=600790021543 +mem_heap_B=3108931234 +mem_heap_extra_B=6412638 +mem_stacks_B=0 +heap_tree=detailed +n2: 3108931234 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3046834176 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2031222784 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2031222784 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2031222784 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2031222784 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2031222784 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2031222784 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1202978816 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1202978816 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1202978816 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1202978816 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1202978816 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1202978816 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1202978816 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1202978816 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1202978816 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1202978816 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1202978816 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1202978816 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1202978816 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1188954112 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1188954112 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1188954112 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1188954112 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1188954112 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1188954112 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1188954112 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1188954112 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1188954112 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1188954112 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 828243968 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 828243968 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 738852864 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 738852864 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 738852864 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 738852864 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 738852864 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 738852864 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 738852864 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 738852864 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 738852864 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 738852864 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732823552 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732823552 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 732823552 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 732823552 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 732430336 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732430336 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 732430336 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732430336 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732430336 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 732430336 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 732430336 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 50462720 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 50462720 0x428858: ??? (in /usr/bin/ktorrent) + n1: 50462720 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 50462720 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 50462720 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 50462720 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 50462720 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 50462720 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 50462720 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 50462720 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49938432 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49938432 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 49938432 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 49938432 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 49676288 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49676288 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 49676288 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49676288 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49676288 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 49676288 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 49676288 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 38928384 in 2 places, all below massif's threshold (01.00%) + n1: 1015611392 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1015611392 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1015611392 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1015611392 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1015611392 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 601489408 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 601489408 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 601489408 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 601489408 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 601489408 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 601489408 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 601489408 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 601489408 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 601489408 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 601489408 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 601489408 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 601489408 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 601489408 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 594477056 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 594477056 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 594477056 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 594477056 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 594477056 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 594477056 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 414121984 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 414121984 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 369426432 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 369426432 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 369426432 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 369426432 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 369426432 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 369426432 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 369426432 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 369426432 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 369426432 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 369426432 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366411776 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366411776 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 366411776 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 366411776 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 366215168 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366215168 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 366215168 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366215168 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366215168 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 366215168 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 366215168 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 44695552 in 3 places, all below massif's threshold (01.00%) + n0: 62097058 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=34 +#----------- +time=615717485319 +mem_heap_B=3171539358 +mem_heap_extra_B=6471370 +mem_stacks_B=0 +heap_tree=detailed +n2: 3171539358 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3108962304 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2072641536 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2072641536 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2072641536 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2072641536 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2072641536 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2072641536 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1227751424 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1227751424 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1227751424 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1227751424 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1227751424 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1227751424 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1227751424 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1227751424 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1227751424 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1227751424 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1227751424 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1227751424 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1227751424 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1213726720 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1213726720 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1213726720 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1213726720 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1213726720 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1213726720 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1213726720 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1213726720 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1213726720 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1213726720 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 844890112 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 844890112 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 753401856 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 753401856 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 753401856 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 753401856 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 753401856 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 753401856 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 753401856 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 753401856 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 753401856 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 753401856 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 747372544 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 747372544 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 747372544 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 747372544 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 746979328 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746979328 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 746979328 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746979328 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746979328 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 746979328 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 746979328 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 52035584 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 52035584 0x428858: ??? (in /usr/bin/ktorrent) + n1: 52035584 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 52035584 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 52035584 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 52035584 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 52035584 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 52035584 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 52035584 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 52035584 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51511296 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51511296 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 51511296 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 51511296 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 51249152 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51249152 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 51249152 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51249152 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51249152 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 51249152 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 51249152 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 39452672 in 2 places, all below massif's threshold (01.00%) + n1: 1036320768 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1036320768 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1036320768 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1036320768 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1036320768 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 613875712 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 613875712 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 613875712 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 613875712 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 613875712 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 613875712 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 613875712 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 613875712 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 613875712 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 613875712 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 613875712 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 613875712 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 613875712 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 606863360 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 606863360 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 606863360 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 606863360 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 606863360 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 606863360 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 422445056 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 422445056 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 376700928 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 376700928 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 376700928 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 376700928 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 376700928 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 376700928 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 376700928 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 376700928 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 376700928 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 376700928 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373686272 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373686272 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 373686272 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 373686272 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 373489664 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373489664 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 373489664 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373489664 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373489664 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 373489664 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 373489664 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 45744128 in 3 places, all below massif's threshold (01.00%) + n0: 62577054 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=35 +#----------- +time=630357715651 +mem_heap_B=3226490215 +mem_heap_extra_B=6561177 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=36 +#----------- +time=649733472875 +mem_heap_B=3293029918 +mem_heap_extra_B=6673298 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=37 +#----------- +time=666281797595 +mem_heap_B=3360307170 +mem_heap_extra_B=6732558 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=38 +#----------- +time=682615975306 +mem_heap_B=3396714791 +mem_heap_extra_B=6777545 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=39 +#----------- +time=696795476996 +mem_heap_B=3478480291 +mem_heap_extra_B=7000541 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=40 +#----------- +time=715264506059 +mem_heap_B=3574292640 +mem_heap_extra_B=7038832 +mem_stacks_B=0 +heap_tree=detailed +n2: 3574292640 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3506700288 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2337800192 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2337800192 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2337800192 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2337800192 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2337800192 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2337800192 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387528192 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387528192 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387528192 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387528192 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387528192 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1387528192 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1387528192 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1387528192 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1387528192 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1387528192 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1387528192 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1387528192 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1387528192 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1373503488 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1373503488 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1373503488 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1373503488 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1373503488 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1373503488 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1373503488 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1373503488 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1373503488 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1373503488 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 950272000 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 950272000 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 850395136 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 850395136 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 850395136 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 850395136 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 850395136 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 850395136 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 850395136 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 850395136 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 850395136 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 850395136 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 844365824 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 844365824 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 844365824 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 844365824 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 843972608 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843972608 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 843972608 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843972608 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843972608 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843972608 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 843972608 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 56492032 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 56492032 0x428858: ??? (in /usr/bin/ktorrent) + n1: 56492032 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 56492032 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 56492032 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 56492032 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 56492032 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 56492032 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 56492032 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 56492032 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55967744 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55967744 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 55967744 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 55967744 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 55705600 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55705600 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 55705600 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55705600 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55705600 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 55705600 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 55705600 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 43384832 in 3 places, all below massif's threshold (01.00%) + n1: 1168900096 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1168900096 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1168900096 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1168900096 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1168900096 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 693764096 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 693764096 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 693764096 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 693764096 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 693764096 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 693764096 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 693764096 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 693764096 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 693764096 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 693764096 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 693764096 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 693764096 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 693764096 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 686751744 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 686751744 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 686751744 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 686751744 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 686751744 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 686751744 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 475136000 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 475136000 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 425197568 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 425197568 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 425197568 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 425197568 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 425197568 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 425197568 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 425197568 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 425197568 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 425197568 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 425197568 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 422182912 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 422182912 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 422182912 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 422182912 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 421986304 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421986304 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 421986304 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421986304 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421986304 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 421986304 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 421986304 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 49938432 in 4 places, all below massif's threshold (01.00%) + n0: 67592352 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=41 +#----------- +time=740703746877 +mem_heap_B=3664492290 +mem_heap_extra_B=7126326 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=42 +#----------- +time=762757141105 +mem_heap_B=3746185881 +mem_heap_extra_B=7230023 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=43 +#----------- +time=785554185300 +mem_heap_B=3832552345 +mem_heap_extra_B=7309623 +mem_stacks_B=0 +heap_tree=detailed +n2: 3832552345 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3763863552 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2509242368 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2509242368 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2509242368 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2509242368 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2509242368 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2509242368 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1489633280 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1489633280 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1489633280 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1489633280 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1489633280 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1489633280 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1489633280 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1489633280 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1489633280 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1489633280 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1489633280 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1489633280 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1489633280 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1475608576 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1475608576 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1475608576 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1475608576 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1475608576 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1475608576 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1475608576 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1475608576 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1475608576 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1475608576 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1019609088 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1019609088 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 914882560 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 914882560 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 914882560 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 914882560 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 914882560 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 914882560 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 914882560 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 914882560 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 914882560 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 914882560 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908853248 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908853248 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 908853248 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 908853248 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 908460032 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908460032 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 908460032 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908460032 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908460032 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 908460032 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 908460032 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 59113472 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 59113472 0x428858: ??? (in /usr/bin/ktorrent) + n1: 59113472 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 59113472 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59113472 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59113472 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 59113472 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 59113472 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 59113472 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 59113472 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58589184 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58589184 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 58589184 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 58589184 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 58327040 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58327040 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 58327040 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58327040 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58327040 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 58327040 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 58327040 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 45613056 in 3 places, all below massif's threshold (01.00%) + n1: 1254621184 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1254621184 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1254621184 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1254621184 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1254621184 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 744816640 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 744816640 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 744816640 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 744816640 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 744816640 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 744816640 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 744816640 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 744816640 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 744816640 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 744816640 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 744816640 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 744816640 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 744816640 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 737804288 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 737804288 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 737804288 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 737804288 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 737804288 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 737804288 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 509804544 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 509804544 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 457441280 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 457441280 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 457441280 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 457441280 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 457441280 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 457441280 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 457441280 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 457441280 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 457441280 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 457441280 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454426624 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454426624 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 454426624 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 454426624 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 454230016 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454230016 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 454230016 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454230016 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454230016 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 454230016 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 454230016 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 52363264 in 4 places, all below massif's threshold (01.00%) + n0: 68688793 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=44 +#----------- +time=808538447377 +mem_heap_B=3900098221 +mem_heap_extra_B=7399171 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=45 +#----------- +time=824607166308 +mem_heap_B=3948867267 +mem_heap_extra_B=7460509 +mem_stacks_B=0 +heap_tree=detailed +n2: 3948867267 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3879862272 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2586574848 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2586574848 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2586574848 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2586574848 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2586574848 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2586574848 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1539964928 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1539964928 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1539964928 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1539964928 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1539964928 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1539964928 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1539964928 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1539964928 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1539964928 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1539964928 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1539964928 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1539964928 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1539964928 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1525940224 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1525940224 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1525940224 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1525940224 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1525940224 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1525940224 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1525940224 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1525940224 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1525940224 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1525940224 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1046609920 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1046609920 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 939786240 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 939786240 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 939786240 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 939786240 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 939786240 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 939786240 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 939786240 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 939786240 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 939786240 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 939786240 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933756928 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933756928 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 933756928 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 933756928 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 933363712 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933363712 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 933363712 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933363712 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933363712 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 933363712 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 933363712 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 60686336 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 60686336 0x428858: ??? (in /usr/bin/ktorrent) + n1: 60686336 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 60686336 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60686336 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60686336 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 60686336 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 60686336 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60162048 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60162048 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60162048 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 60162048 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 59899904 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59899904 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 59899904 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59899904 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59899904 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 59899904 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 59899904 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 46137344 in 3 places, all below massif's threshold (01.00%) + n1: 1293287424 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1293287424 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1293287424 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1293287424 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1293287424 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 769982464 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 769982464 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 769982464 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 769982464 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 769982464 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 769982464 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 769982464 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 769982464 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 769982464 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 769982464 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 769982464 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 769982464 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 769982464 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 762970112 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 762970112 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 762970112 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 762970112 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 762970112 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 762970112 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 523304960 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 523304960 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 469893120 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 469893120 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 469893120 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 469893120 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 469893120 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 469893120 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 469893120 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 469893120 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 469893120 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 469893120 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466878464 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466878464 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 466878464 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 466878464 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 466681856 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466681856 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 466681856 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466681856 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466681856 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 466681856 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 466681856 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 53411840 in 4 places, all below massif's threshold (01.00%) + n0: 69004995 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=46 +#----------- +time=843857667385 +mem_heap_B=3981732963 +mem_heap_extra_B=7491469 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=47 +#----------- +time=860901614537 +mem_heap_B=4008446321 +mem_heap_extra_B=7572575 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=48 +#----------- +time=872765263037 +mem_heap_B=4028422413 +mem_heap_extra_B=7566075 +mem_stacks_B=0 +heap_tree=detailed +n2: 4028422413 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3958702080 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2639134720 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2639134720 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2639134720 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2639134720 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2639134720 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2639134720 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1571291136 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1571291136 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1571291136 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1571291136 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1571291136 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1571291136 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1571291136 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1571291136 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1571291136 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1571291136 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1571291136 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1571291136 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1571291136 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1557266432 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1557266432 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1557266432 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1557266432 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1557266432 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1557266432 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1557266432 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1557266432 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1557266432 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1557266432 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1067843584 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1067843584 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 960102400 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 960102400 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 960102400 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 960102400 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 960102400 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 960102400 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 960102400 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 960102400 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 960102400 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 960102400 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 954073088 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 954073088 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 954073088 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 954073088 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 953679872 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 953679872 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 953679872 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 953679872 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 953679872 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 953679872 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 953679872 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 61341696 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 61341696 0x428858: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61341696 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61341696 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 61341696 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60817408 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60817408 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60817408 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 60817408 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60555264 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60555264 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 60555264 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 46399488 in 3 places, all below massif's threshold (01.00%) + n1: 1319567360 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1319567360 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1319567360 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1319567360 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1319567360 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 785645568 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 785645568 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 785645568 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 785645568 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 785645568 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 785645568 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 785645568 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 785645568 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 785645568 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 785645568 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 785645568 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 785645568 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 785645568 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 778633216 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 778633216 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 778633216 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 778633216 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 778633216 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 778633216 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 533921792 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 533921792 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 480051200 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 480051200 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 480051200 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 480051200 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 480051200 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 480051200 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 480051200 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 480051200 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 480051200 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 480051200 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 477036544 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 477036544 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 477036544 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 477036544 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 476839936 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 476839936 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 476839936 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 476839936 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 476839936 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 476839936 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 476839936 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 53870592 in 4 places, all below massif's threshold (01.00%) + n0: 69720333 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=49 +#----------- +time=886368311239 +mem_heap_B=4045774212 +mem_heap_extra_B=7613788 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=50 +#----------- +time=889642096194 +mem_heap_B=4046830414 +mem_heap_extra_B=7593418 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=51 +#----------- +time=892915847609 +mem_heap_B=4049388067 +mem_heap_extra_B=7584589 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=52 +#----------- +time=896189561594 +mem_heap_B=4055620682 +mem_heap_extra_B=7601758 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=53 +#----------- +time=899463412319 +mem_heap_B=4062302664 +mem_heap_extra_B=7623624 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=54 +#----------- +time=902737225812 +mem_heap_B=4063259061 +mem_heap_extra_B=7626627 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=55 +#----------- +time=905366980134 +mem_heap_B=4068816271 +mem_heap_extra_B=7621881 +mem_stacks_B=0 +heap_tree=detailed +n2: 4068816271 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 3999006720 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2666004480 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2666004480 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2666004480 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2666004480 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2666004480 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2666004480 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1587937280 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1587937280 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1587937280 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1587937280 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1587937280 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1587937280 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1587937280 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1587937280 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1587937280 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1587937280 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1587937280 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1587937280 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1587937280 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1573912576 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1573912576 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1573912576 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1573912576 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1573912576 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1573912576 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1573912576 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1573912576 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1573912576 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1573912576 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1078067200 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1078067200 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 970063872 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 970063872 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 970063872 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 970063872 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 970063872 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 970063872 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 970063872 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 970063872 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 970063872 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 970063872 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 964034560 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 964034560 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 964034560 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 964034560 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 963641344 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 963641344 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 963641344 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 963641344 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 963641344 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 963641344 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 963641344 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 61341696 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 61341696 0x428858: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61341696 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61341696 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 61341696 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 61341696 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60817408 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60817408 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60817408 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 60817408 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60555264 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60555264 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60555264 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 60555264 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 46661632 in 3 places, all below massif's threshold (01.00%) + n1: 1333002240 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1333002240 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1333002240 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1333002240 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1333002240 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 793968640 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 793968640 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 793968640 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 793968640 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 793968640 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 793968640 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 793968640 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 793968640 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 793968640 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 793968640 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 793968640 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 793968640 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 793968640 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 786956288 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 786956288 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 786956288 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 786956288 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 786956288 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 786956288 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 539033600 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 539033600 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 485031936 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 485031936 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 485031936 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 485031936 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 485031936 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 485031936 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 485031936 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 485031936 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 485031936 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 485031936 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 482017280 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 482017280 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 482017280 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 482017280 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 481820672 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 481820672 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 481820672 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 481820672 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 54001664 in 4 places, all below massif's threshold (01.00%) + n0: 69809551 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=56 +#----------- +time=908640697286 +mem_heap_B=4080699925 +mem_heap_extra_B=7670643 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=57 +#----------- +time=911914420679 +mem_heap_B=4093189224 +mem_heap_extra_B=7660680 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=58 +#----------- +time=915188158518 +mem_heap_B=4105973503 +mem_heap_extra_B=7680913 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=59 +#----------- +time=916124901153 +mem_heap_B=4109534913 +mem_heap_extra_B=7680359 +mem_stacks_B=0 +heap_tree=detailed +n2: 4109534913 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4038918144 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2692612096 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2692612096 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2692612096 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2692612096 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2692612096 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2692612096 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1604059136 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1604059136 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1604059136 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1604059136 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1604059136 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1604059136 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1604059136 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1604059136 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1604059136 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1604059136 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1604059136 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1604059136 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1604059136 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1590034432 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1590034432 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1590034432 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1590034432 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1590034432 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1590034432 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1590034432 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1590034432 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1590034432 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1590034432 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1088552960 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1088552960 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 980156416 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 980156416 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 980156416 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 980156416 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 980156416 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 980156416 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 980156416 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 980156416 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 980156416 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 980156416 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 974127104 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 974127104 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 974127104 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 974127104 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 973733888 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 973733888 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 973733888 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 973733888 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 973733888 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 973733888 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 973733888 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 61472768 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 61472768 0x428858: ??? (in /usr/bin/ktorrent) + n1: 61472768 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 61472768 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61472768 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61472768 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61472768 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61472768 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 61472768 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 61472768 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60948480 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 60948480 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60686336 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60686336 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60686336 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 60686336 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 46923776 in 3 places, all below massif's threshold (01.00%) + n1: 1346306048 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1346306048 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1346306048 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1346306048 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1346306048 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 802029568 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 802029568 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 802029568 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 802029568 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 802029568 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 802029568 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 802029568 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 802029568 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 802029568 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 802029568 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 802029568 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 802029568 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 802029568 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 795017216 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 795017216 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 795017216 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 795017216 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 795017216 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 795017216 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 544276480 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 544276480 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 490078208 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 490078208 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 490078208 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 490078208 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 490078208 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 490078208 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 490078208 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 490078208 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 490078208 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 490078208 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 487063552 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 487063552 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 487063552 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 487063552 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 486866944 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 486866944 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 486866944 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 486866944 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 486866944 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 486866944 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 486866944 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 54198272 in 4 places, all below massif's threshold (01.00%) + n0: 70616769 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=60 +#----------- +time=919398668218 +mem_heap_B=4127492573 +mem_heap_extra_B=7690611 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=61 +#----------- +time=922672632312 +mem_heap_B=4136027519 +mem_heap_extra_B=7734721 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=62 +#----------- +time=925946474337 +mem_heap_B=4149057242 +mem_heap_extra_B=7755742 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=63 +#----------- +time=926701606540 +mem_heap_B=4150676699 +mem_heap_extra_B=7770189 +mem_stacks_B=0 +heap_tree=detailed +n2: 4150676699 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4079616000 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2719744000 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2719744000 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2719744000 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2719744000 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2719744000 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2719744000 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1620443136 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1620443136 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1620443136 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1620443136 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1620443136 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1620443136 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1620443136 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1620443136 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1620443136 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1620443136 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1620443136 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1620443136 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1620443136 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1606418432 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1606418432 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1606418432 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1606418432 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1606418432 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1606418432 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1606418432 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1606418432 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1606418432 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1606418432 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1099300864 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1099300864 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 989986816 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 989986816 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 989986816 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 989986816 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 989986816 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 989986816 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 989986816 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 989986816 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 989986816 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 989986816 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983957504 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983957504 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 983957504 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 983957504 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 983564288 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983564288 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 983564288 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983564288 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983564288 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 983564288 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 983564288 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 61734912 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 61734912 0x428858: ??? (in /usr/bin/ktorrent) + n1: 61734912 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 61734912 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61734912 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61734912 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61734912 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61734912 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 61734912 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 61734912 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61210624 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61210624 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 61210624 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 61210624 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 60948480 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 60948480 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 60948480 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 60948480 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 47579136 in 3 places, all below massif's threshold (01.00%) + n1: 1359872000 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1359872000 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1359872000 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1359872000 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1359872000 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 810221568 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 810221568 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 810221568 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 810221568 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 810221568 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 810221568 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 810221568 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 810221568 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 810221568 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 810221568 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 810221568 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 810221568 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 810221568 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 803209216 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 803209216 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 803209216 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 803209216 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 549650432 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 549650432 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 494993408 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 494993408 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 494993408 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 494993408 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 494993408 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 494993408 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 494993408 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 494993408 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 494993408 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 494993408 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491978752 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491978752 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 491978752 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 491978752 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 491782144 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491782144 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 491782144 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491782144 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491782144 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 491782144 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 491782144 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 54657024 in 4 places, all below massif's threshold (01.00%) + n0: 71060699 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=64 +#----------- +time=929975320485 +mem_heap_B=4157127414 +mem_heap_extra_B=7722474 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=65 +#----------- +time=933249035779 +mem_heap_B=4159873499 +mem_heap_extra_B=7769349 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=66 +#----------- +time=936522875730 +mem_heap_B=4168178084 +mem_heap_extra_B=7773052 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=67 +#----------- +time=939796718408 +mem_heap_B=4180420981 +mem_heap_extra_B=7766595 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=68 +#----------- +time=943070557345 +mem_heap_B=4186189010 +mem_heap_extra_B=7762574 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=69 +#----------- +time=945112213326 +mem_heap_B=4192264953 +mem_heap_extra_B=7788151 +mem_stacks_B=0 +heap_tree=detailed +n2: 4192264953 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4121296896 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2747531264 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2747531264 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2747531264 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2747531264 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2747531264 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2747531264 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1637351424 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1637351424 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1637351424 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1637351424 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1637351424 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1637351424 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1637351424 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1637351424 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1637351424 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1637351424 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1637351424 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1637351424 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1637351424 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1623326720 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1623326720 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1623326720 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1623326720 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1623326720 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1623326720 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1623326720 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1623326720 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1623326720 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1623326720 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1110179840 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1110179840 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 999948288 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 999948288 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 999948288 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 999948288 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 999948288 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 999948288 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 999948288 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 999948288 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 999948288 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 999948288 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993918976 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993918976 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 993918976 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 993918976 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 993525760 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993525760 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 993525760 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993525760 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993525760 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 993525760 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 993525760 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 62128128 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 62128128 0x428858: ??? (in /usr/bin/ktorrent) + n1: 62128128 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 62128128 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62128128 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62128128 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 62128128 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 62128128 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61603840 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61603840 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 61603840 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 61603840 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 61341696 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61341696 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61341696 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 61341696 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 48103424 in 3 places, all below massif's threshold (01.00%) + n1: 1373765632 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1373765632 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1373765632 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1373765632 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1373765632 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 818675712 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 818675712 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 818675712 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 818675712 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 818675712 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 818675712 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 818675712 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 818675712 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 818675712 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 818675712 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 818675712 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 818675712 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 818675712 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 811663360 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 811663360 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 811663360 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 811663360 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 811663360 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 811663360 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 555089920 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 555089920 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 499974144 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 499974144 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 499974144 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 499974144 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 499974144 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 499974144 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 499974144 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 499974144 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 499974144 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 499974144 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496959488 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496959488 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 496959488 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 496959488 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 496762880 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496762880 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 496762880 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496762880 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496762880 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 496762880 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 496762880 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 55115776 in 4 places, all below massif's threshold (01.00%) + n0: 70968057 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=70 +#----------- +time=948386031351 +mem_heap_B=4202340484 +mem_heap_extra_B=7815596 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=71 +#----------- +time=951659842426 +mem_heap_B=4214015267 +mem_heap_extra_B=7822365 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=72 +#----------- +time=954933564170 +mem_heap_B=4226596018 +mem_heap_extra_B=7833966 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=73 +#----------- +time=956812847252 +mem_heap_B=4234187624 +mem_heap_extra_B=7878512 +mem_stacks_B=0 +heap_tree=detailed +n2: 4234187624 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4162387968 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2774925312 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2774925312 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2774925312 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2774925312 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2774925312 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2774925312 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1653473280 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1653473280 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1653473280 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1653473280 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1653473280 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1653473280 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1653473280 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1653473280 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1653473280 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1653473280 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1653473280 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1653473280 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1653473280 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1639448576 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1639448576 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1639448576 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1639448576 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1639448576 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1639448576 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1639448576 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1639448576 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1639448576 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1639448576 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1121452032 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1121452032 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1010302976 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1010302976 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1010302976 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1010302976 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1010302976 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1010302976 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1010302976 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1010302976 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1010302976 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1010302976 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1004273664 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1004273664 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1004273664 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 1004273664 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1003880448 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1003880448 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1003880448 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1003880448 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1003880448 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1003880448 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 1003880448 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 62652416 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 62652416 0x428858: ??? (in /usr/bin/ktorrent) + n1: 62652416 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 62652416 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62652416 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62652416 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62652416 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62652416 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 62652416 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 62652416 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 62128128 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 62128128 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 61865984 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61865984 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 61865984 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61865984 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61865984 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 61865984 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 61865984 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 48496640 in 3 places, all below massif's threshold (01.00%) + n1: 1387462656 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387462656 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387462656 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1387462656 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1387462656 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 826736640 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 826736640 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 826736640 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 826736640 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 826736640 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 826736640 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 826736640 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 826736640 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 826736640 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 826736640 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 826736640 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 826736640 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 826736640 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 819724288 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 819724288 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 819724288 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 819724288 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 819724288 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 819724288 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 560726016 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 560726016 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 505151488 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 505151488 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 505151488 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 505151488 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 505151488 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 505151488 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 505151488 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 505151488 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 505151488 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 505151488 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 502136832 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 502136832 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 502136832 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 502136832 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 501940224 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 501940224 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 501940224 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 501940224 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 501940224 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 501940224 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 501940224 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 55574528 in 4 places, all below massif's threshold (01.00%) + n0: 71799656 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=74 +#----------- +time=960086624342 +mem_heap_B=4245274719 +mem_heap_extra_B=7851633 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=75 +#----------- +time=963360430015 +mem_heap_B=4255544690 +mem_heap_extra_B=7865918 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=76 +#----------- +time=966634238784 +mem_heap_B=4261685453 +mem_heap_extra_B=7882475 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=77 +#----------- +time=969907953117 +mem_heap_B=4270322088 +mem_heap_extra_B=7933112 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=78 +#----------- +time=970980298209 +mem_heap_B=4276507709 +mem_heap_extra_B=7981435 +mem_stacks_B=0 +heap_tree=detailed +n2: 4276507709 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4204068864 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2802712576 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2802712576 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2802712576 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2802712576 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2802712576 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2802712576 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1670512640 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1670512640 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1670512640 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1670512640 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1670512640 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1670512640 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1670512640 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1670512640 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1670512640 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1670512640 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1670512640 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1670512640 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1670512640 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1656487936 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1656487936 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1656487936 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1656487936 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1656487936 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1656487936 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1656487936 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1656487936 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1656487936 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1656487936 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1132199936 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1132199936 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1020526592 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1020526592 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1020526592 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1020526592 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1020526592 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1020526592 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1020526592 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1020526592 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1020526592 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1020526592 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014497280 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014497280 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1014497280 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 1014497280 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1014104064 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014104064 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1014104064 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014104064 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014104064 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1014104064 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 1014104064 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 62914560 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 62914560 0x428858: ??? (in /usr/bin/ktorrent) + n1: 62914560 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 62914560 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62914560 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62914560 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62914560 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62914560 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 62914560 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 62914560 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62390272 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62390272 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 62390272 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 62390272 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 62128128 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 62128128 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 62128128 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 62128128 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 48758784 in 3 places, all below massif's threshold (01.00%) + n1: 1401356288 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1401356288 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1401356288 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1401356288 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1401356288 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 835256320 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 835256320 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 835256320 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 835256320 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 835256320 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 835256320 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 835256320 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 835256320 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 835256320 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 835256320 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 835256320 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 835256320 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 835256320 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 828243968 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 828243968 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 828243968 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 828243968 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 828243968 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 828243968 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 566099968 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 566099968 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510263296 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510263296 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510263296 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 510263296 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 510263296 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 510263296 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 510263296 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 510263296 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 510263296 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 510263296 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507248640 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507248640 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 507248640 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 507248640 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 507052032 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507052032 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 507052032 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507052032 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507052032 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 507052032 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 507052032 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 55836672 in 4 places, all below massif's threshold (01.00%) + n0: 72438845 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=79 +#----------- +time=974254370643 +mem_heap_B=4292555074 +mem_heap_extra_B=7973438 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=80 +#----------- +time=977528150486 +mem_heap_B=4316167897 +mem_heap_extra_B=7951007 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=81 +#----------- +time=977768633616 +mem_heap_B=4319389918 +mem_heap_extra_B=7960402 +mem_stacks_B=0 +heap_tree=detailed +n2: 4319389918 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4246339584 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2830893056 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2830893056 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2830893056 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2830893056 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2830893056 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2830893056 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1687552000 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1687552000 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1687552000 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1687552000 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1687552000 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1687552000 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1687552000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1687552000 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1687552000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1687552000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1687552000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1687552000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1687552000 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1673527296 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1673527296 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1673527296 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1673527296 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1673527296 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1673527296 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1673527296 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1673527296 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1673527296 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1673527296 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1143341056 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1143341056 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030225920 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030225920 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030225920 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1030225920 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1030225920 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1030225920 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1030225920 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1030225920 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1030225920 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1030225920 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1024196608 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1024196608 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1024196608 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 1024196608 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1023803392 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1023803392 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1023803392 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1023803392 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1023803392 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1023803392 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 1023803392 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 64094208 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 64094208 0x428858: ??? (in /usr/bin/ktorrent) + n1: 64094208 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 64094208 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 64094208 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 64094208 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 64094208 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 64094208 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 64094208 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 64094208 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 63569920 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 63569920 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 63307776 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63307776 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 63307776 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63307776 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63307776 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63307776 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 63307776 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 49020928 in 3 places, all below massif's threshold (01.00%) + n1: 1415446528 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1415446528 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1415446528 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1415446528 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1415446528 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 843776000 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 843776000 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 843776000 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 843776000 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 843776000 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 843776000 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 843776000 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843776000 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 843776000 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 843776000 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 843776000 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 843776000 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 843776000 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 836763648 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 836763648 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 836763648 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 836763648 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 836763648 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 836763648 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 571670528 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 571670528 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515112960 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515112960 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515112960 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 515112960 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 515112960 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 515112960 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 515112960 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 515112960 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 515112960 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 515112960 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 512098304 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 512098304 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 512098304 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 512098304 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 511901696 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 511901696 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 511901696 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 511901696 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 511901696 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 511901696 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 511901696 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 56557568 in 4 places, all below massif's threshold (01.00%) + n0: 73050334 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=82 +#----------- +time=981042438556 +mem_heap_B=4340372332 +mem_heap_extra_B=8002156 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=83 +#----------- +time=984316156238 +mem_heap_B=4352452240 +mem_heap_extra_B=7995368 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=84 +#----------- +time=987590011163 +mem_heap_B=4357538276 +mem_heap_extra_B=7997924 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=85 +#----------- +time=989167909002 +mem_heap_B=4362597647 +mem_heap_extra_B=8029041 +mem_stacks_B=0 +heap_tree=peak +n2: 4362597647 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. + n2: 4288806912 0x3F4345F640: bt::CircularBuffer::CircularBuffer(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2859204608 0x3F434ECB96: utp::LocalWindow::LocalWindow(unsigned int) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2859204608 0x3F434EAC5F: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2859204608 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2859204608 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 2859204608 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 2859204608 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1704460288 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1704460288 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1704460288 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1704460288 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1704460288 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 1704460288 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 1704460288 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1704460288 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1704460288 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1704460288 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1704460288 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1704460288 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1704460288 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1690435584 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1690435584 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1690435584 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1690435584 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1690435584 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1690435584 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1690435584 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1690435584 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1690435584 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n0: 1690435584 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 14024704 in 1 place, below massif's threshold (01.00%) + n1: 1154744320 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n3: 1154744320 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1040842752 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1040842752 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1040842752 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1040842752 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1040842752 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1040842752 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1040842752 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1040842752 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 1040842752 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 1040842752 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034813440 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034813440 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1034813440 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 1034813440 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 1034420224 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034420224 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 1034420224 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034420224 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034420224 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 1034420224 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 1034420224 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 393216 in 1 place, below massif's threshold (01.00%) + n0: 6029312 in 1 place, below massif's threshold (01.00%) + n1: 64356352 0x3F43470587: bt::AuthenticationMonitor::handleData() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 64356352 0x428858: ??? (in /usr/bin/ktorrent) + n1: 64356352 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 64356352 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 64356352 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 64356352 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 64356352 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 64356352 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 64356352 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 64356352 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63832064 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63832064 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 63832064 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 63832064 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 63569920 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 63569920 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 63569920 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 63569920 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 262144 in 1 place, below massif's threshold (01.00%) + n0: 524288 in 1 place, below massif's threshold (01.00%) + n0: 49545216 in 3 places, all below massif's threshold (01.00%) + n1: 1429602304 0x3F434EABC8: utp::Connection::Connection(unsigned short, utp::Connection::Type, net::Address const&, utp::Transmitter*) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1429602304 0x3F434E754F: utp::UTPServer::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1429602304 0x3F434EDEC4: utp::UTPSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 1429602304 0x3F4346C503: mse::StreamSocket::connectTo(net::Address const&) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 1429602304 0x3F4346FA2A: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 852230144 0x3F4346D6BB: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 852230144 0x3F434804EC: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 852230144 0x3F43478C35: bt::PeerManager::connectToPeers() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 852230144 0x3F434A16A4: bt::TorrentControl::update() (in /usr/lib64/libktorrent.so.1.0.1) + n1: 852230144 0x4288A9: ??? (in /usr/bin/ktorrent) + n1: 852230144 0x430B00: ??? (in /usr/bin/ktorrent) + n1: 852230144 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 852230144 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 852230144 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 852230144 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 852230144 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 852230144 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 852230144 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 845217792 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n1: 845217792 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 845217792 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 845217792 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 845217792 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 845217792 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 7012352 in 1 place, below massif's threshold (01.00%) + n1: 577372160 0x3F4348057D: bt::PeerConnector::start(bt::PeerConnector::Method) (in /usr/lib64/libktorrent.so.1.0.1) + n2: 577372160 0x3F43480A8B: bt::PeerConnector::authenticationFinished(bt::Authenticate*, bool) (in /usr/lib64/libktorrent.so.1.0.1) + n1: 520421376 0x3F4346EF26: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 520421376 0x3F4346F3D6: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 520421376 0x3F4346D206: ??? (in /usr/lib64/libktorrent.so.1.0.1) + n1: 520421376 0x3F3DD66A34: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 520421376 0x3F3DD62C4C: QObject::event(QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 520421376 0x3F3F5AB39A: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 520421376 0x3F3F5B1659: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQtGui.so.4.6.3) + n1: 520421376 0x4367E8: ??? (in /usr/bin/ktorrent) + n1: 520421376 0x3F3DD53DDA: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib64/libQtCore.so.4.6.3) + n2: 520421376 0x3F3DD7C6F0: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517406720 0x3F3DD79B96: ??? (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517406720 0x34AB83BD00: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.2400.1) + n1: 517406720 0x34AB83FAE6: ??? (in /lib64/libglib-2.0.so.0.2400.1) + n2: 517406720 0x34AB83FC9A: g_main_context_iteration (in /lib64/libglib-2.0.so.0.2400.1) + n1: 517210112 0x3F3DD79861: QEventDispatcherGlib::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517210112 0x3F3F64A84C: ??? (in /usr/lib64/libQtGui.so.4.6.3) + n1: 517210112 0x3F3DD52820: QEventLoop::processEvents(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517210112 0x3F3DD52AEA: QEventLoop::exec(QFlags) (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517210112 0x3F3DD561B9: QCoreApplication::exec() (in /usr/lib64/libQtCore.so.4.6.3) + n1: 517210112 0x426A49: ??? (in /usr/bin/ktorrent) + n0: 517210112 0x34A801EC5B: (below main) (libc-start.c:226) + n0: 196608 in 1 place, below massif's threshold (01.00%) + n0: 3014656 in 1 place, below massif's threshold (01.00%) + n0: 56950784 in 4 places, all below massif's threshold (01.00%) + n0: 73790735 in 3511 places, all below massif's threshold (01.00%) +#----------- +snapshot=86 +#----------- +time=992441731256 +mem_heap_B=4377641528 +mem_heap_extra_B=8023616 +mem_stacks_B=0 +heap_tree=empty +#----------- +snapshot=87 +#----------- +time=995715507522 +mem_heap_B=4390978140 +mem_heap_extra_B=7749332 +mem_stacks_B=0 +heap_tree=empty diff --git a/massif-visualizer/test/data/massif.out.stack b/massif-visualizer/test/data/massif.out.stack new file mode 100644 index 00000000..65e23bbc --- /dev/null +++ b/massif-visualizer/test/data/massif.out.stack @@ -0,0 +1,651 @@ +desc: --stacks=yes --depth=100 --detailed-freq=1 +cmd: ./main2.noopt +time_unit: i +#----------- +snapshot=0 +#----------- +time=0 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=0 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=1 +#----------- +time=17781 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3264 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=2 +#----------- +time=99513 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=920 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=3 +#----------- +time=167970 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=111960 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=4 +#----------- +time=214410 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=211032 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=5 +#----------- +time=295050 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=383064 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=6 +#----------- +time=335370 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=469080 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=7 +#----------- +time=399690 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=606296 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=8 +#----------- +time=464010 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=743512 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=9 +#----------- +time=528330 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=880728 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=10 +#----------- +time=623310 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1083352 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=11 +#----------- +time=672990 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1189336 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=12 +#----------- +time=722670 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1295320 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=13 +#----------- +time=772350 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1401304 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=14 +#----------- +time=822030 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1507288 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=15 +#----------- +time=894810 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1662552 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=16 +#----------- +time=990690 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1867096 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=17 +#----------- +time=1086570 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2071640 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=18 +#----------- +time=1134510 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2173912 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=19 +#----------- +time=1182450 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2276184 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=20 +#----------- +time=1230390 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2378456 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=21 +#----------- +time=1278330 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2480728 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=22 +#----------- +time=1326270 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2583000 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=23 +#----------- +time=1374210 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2685272 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=24 +#----------- +time=1422150 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2787544 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=25 +#----------- +time=1470090 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2889816 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=26 +#----------- +time=1518030 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2992088 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=27 +#----------- +time=1565970 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3094360 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=28 +#----------- +time=1613910 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3196632 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=29 +#----------- +time=1661850 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3298904 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=30 +#----------- +time=1709790 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3401176 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=31 +#----------- +time=1757730 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3503448 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=32 +#----------- +time=1805670 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3605720 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=33 +#----------- +time=1853610 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3707992 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=34 +#----------- +time=1901550 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3810264 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=35 +#----------- +time=1949490 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3912536 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=36 +#----------- +time=1997430 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4014808 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=37 +#----------- +time=2045370 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4117080 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=38 +#----------- +time=2093310 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4219352 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=39 +#----------- +time=2141250 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4321624 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=40 +#----------- +time=2189190 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4423896 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=41 +#----------- +time=2237130 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4526168 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=42 +#----------- +time=2285070 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4628440 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=43 +#----------- +time=2333010 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4730712 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=44 +#----------- +time=2380950 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4832984 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=45 +#----------- +time=2428890 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4935256 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=46 +#----------- +time=2476830 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5037528 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=47 +#----------- +time=2524770 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5139800 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=48 +#----------- +time=2572710 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5242072 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=49 +#----------- +time=2644620 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5395480 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=50 +#----------- +time=2684940 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5481496 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=51 +#----------- +time=2725260 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5567512 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=52 +#----------- +time=2765580 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5653528 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=53 +#----------- +time=2805900 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5739544 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=54 +#----------- +time=2846220 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5825560 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=55 +#----------- +time=2886540 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5911576 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=56 +#----------- +time=2926860 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5997592 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=57 +#----------- +time=2967180 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=6083608 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=58 +#----------- +time=3007500 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=6169624 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=59 +#----------- +time=3047820 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=6255640 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=60 +#----------- +time=3088140 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=6341656 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=61 +#----------- +time=3115620 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=6400272 +heap_tree=peak +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=62 +#----------- +time=3155940 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5755168 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=63 +#----------- +time=3196260 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=5110048 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=64 +#----------- +time=3236580 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=4464928 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=65 +#----------- +time=3276900 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3819808 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=66 +#----------- +time=3317220 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=3174688 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=67 +#----------- +time=3357540 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=2529568 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=68 +#----------- +time=3397860 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1884448 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=69 +#----------- +time=3438180 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1239328 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=70 +#----------- +time=3478500 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=594208 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +#----------- +snapshot=71 +#----------- +time=3518986 +mem_heap_B=0 +mem_heap_extra_B=0 +mem_stacks_B=1208 +heap_tree=detailed +n0: 0 (heap allocation functions) malloc/new/new[], --alloc-fns, etc. diff --git a/massif-visualizer/test/datamodeltest.cpp b/massif-visualizer/test/datamodeltest.cpp new file mode 100644 index 00000000..b638fbf1 --- /dev/null +++ b/massif-visualizer/test/datamodeltest.cpp @@ -0,0 +1,180 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "datamodeltest.h" + +#include "modeltest.h" + +#include "massifdata/parser.h" +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include "visualizer/totalcostmodel.h" +#include "visualizer/detailedcostmodel.h" +#include "visualizer/datatreemodel.h" + +#include +#include +#include + +#include +#include + +QTEST_KDEMAIN(DataModelTest, NoGUI) + +using namespace Massif; + +void DataModelTest::parseFile() +{ + const QString path = QString(KDESRCDIR) + "/data/massif.out.kate"; + QFile file(path); + QVERIFY(file.open(QIODevice::ReadOnly)); + + Parser parser; + QScopedPointer scopedData(parser.parse(&file)); + FileData* data = scopedData.data(); + QVERIFY(data); + + { + TotalCostModel* model = new TotalCostModel(this); + new ModelTest(model, this); + model->setSource(data); + QVERIFY(model->rowCount() == data->snapshots().size()); + for ( int r = 0; r < model->rowCount(); ++r ) { + for ( int c = 0; c < model->columnCount(); ++c ) { + qDebug() << r << c << model->data(model->index(r, c)); + } + } + // remove data + model->setSource(0); + } + + { + DetailedCostModel* model = new DetailedCostModel(this); + new ModelTest(model, this); + model->setSource(data); + for ( int r = 0; r < model->rowCount(); ++r ) { + for ( int c = 0; c < model->columnCount(); ++c ) { + qDebug() << r << c << model->data(model->index(r, c)); + } + if ( r ) { + // we want that the snapshots are ordered properly + QVERIFY(model->data(model->index(r, 0)).toDouble() > model->data(model->index(r - 1, 0)).toDouble()); + } + } + // remove data + model->setSource(0); + } + + { + DataTreeModel* model = new DataTreeModel(this); + new ModelTest(model, this); + model->setSource(data); + QVERIFY(model->rowCount() == data->snapshots().size()); + // remove data + model->setSource(0); + } + +} + +void DataModelTest::testUtils() +{ + { + QByteArray l("0x6F675AB: KDevelop::IndexedIdentifier::IndexedIdentifier(KDevelop::Identifier const&) (identifier.cpp:1050)"); + QCOMPARE(prettyLabel(l), QByteArray("KDevelop::IndexedIdentifier::IndexedIdentifier(KDevelop::Identifier const&) (identifier.cpp:1050)")); + QCOMPARE(functionInLabel(l), QByteArray("KDevelop::IndexedIdentifier::IndexedIdentifier(KDevelop::Identifier const&)")); + QCOMPARE(addressInLabel(l), QByteArray("0x6F675AB")); + QCOMPARE(locationInLabel(l), QByteArray("identifier.cpp:1050")); + } + { + QByteArray l("0x6F675AB: moz_xmalloc (mozalloc.cpp:98)"); + QCOMPARE(prettyLabel(l), QByteArray("moz_xmalloc (mozalloc.cpp:98)")); + QCOMPARE(functionInLabel(l), QByteArray("moz_xmalloc")); + QCOMPARE(addressInLabel(l), QByteArray("0x6F675AB")); + QCOMPARE(locationInLabel(l), QByteArray("mozalloc.cpp:98")); + } + { + QByteArray l("0xC94BD60: KDevelop::Bucket::prepareChange() (itemrepository.h:1007)"); + QCOMPARE(prettyLabel(l), QByteArray("KDevelop::Bucket::prepareChange() (itemrepository.h:1007)")); + QCOMPARE(functionInLabel(l), QByteArray("KDevelop::Bucket::prepareChange()")); + QCOMPARE(addressInLabel(l), QByteArray("0xC94BD60")); + QCOMPARE(locationInLabel(l), QByteArray("itemrepository.h:1007")); + } + { + QByteArray l("0x8E2B358: QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.8.4)"); + QCOMPARE(prettyLabel(l), QByteArray("QString::QString(QChar const*, int) (in /usr/lib/libQtCore.so.4.8.4)")); + QCOMPARE(functionInLabel(l), QByteArray("QString::QString(QChar const*, int)")); + QCOMPARE(addressInLabel(l), QByteArray("0x8E2B358")); + QCOMPARE(locationInLabel(l), QByteArray("in /usr/lib/libQtCore.so.4.8.4")); + } +} + +void DataModelTest::shortenTemplates_data() +{ + QTest::addColumn("id"); + QTest::addColumn("idShortened"); + + QTest::newRow("no-tpl") << QByteArray("A::B(C::D const&) (file.cpp:1)") + << QByteArray("A::B(C::D const&) (file.cpp:1)"); + QTest::newRow("tpl-func") << QByteArray("A::B(C::D const&) (file.cpp:1)") + << QByteArray("A::B<>(C::D const&) (file.cpp:1)"); + QTest::newRow("tpl-arg") << QByteArray("A::B(C::D const&) (file.cpp:1)") + << QByteArray("A::B(C::D<> const&) (file.cpp:1)"); + QTest::newRow("tpl-multi") << QByteArray("A::B(C::D const&) (file.cpp:1)") + << QByteArray("A::B<>(C<>::D<> const&) (file.cpp:1)"); + QTest::newRow("tpl-nested") << QByteArray("A::B, T2>(C::D const&) (file.cpp:1)") + << QByteArray("A::B<>(C<>::D<> const&) (file.cpp:1)"); +} + +void DataModelTest::shortenTemplates() +{ + QFETCH(QByteArray, id); + QFETCH(QByteArray, idShortened); + + KConfigGroup conf = KGlobal::config()->group(QLatin1String("Settings")); + + conf.writeEntry(QLatin1String("shortenTemplates"), true); + QCOMPARE(prettyLabel(id), idShortened); + conf.writeEntry(QLatin1String("shortenTemplates"), false); + QCOMPARE(prettyLabel(id), id); +} + +void DataModelTest::bigMem() +{ + // see also: https://bugs.kde.org/show_bug.cgi?id=294108 + + const QString path = QString(KDESRCDIR) + "/data/massif.out.huge"; + QFile file(path); + QVERIFY(file.open(QIODevice::ReadOnly)); + + Parser parser; + QScopedPointer scopedData(parser.parse(&file)); + FileData* data = scopedData.data(); + QVERIFY(data); + + QCOMPARE(data->snapshots().count(), 1); + QCOMPARE(data->peak()->memHeap(), quint64(5021305210)); + QCOMPARE(data->peak()->memHeapExtra(), quint64(5021305211)); + QCOMPARE(data->peak()->memStacks(), quint64(5021305212)); +} diff --git a/massif-visualizer/test/datamodeltest.h b/massif-visualizer/test/datamodeltest.h new file mode 100644 index 00000000..b14db584 --- /dev/null +++ b/massif-visualizer/test/datamodeltest.h @@ -0,0 +1,46 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef DATAMODELTEST_H +#define DATAMODELTEST_H + +#include + +namespace Massif { +class DataModel; +} + +class DataModelTest : public QObject +{ + Q_OBJECT + +private slots: + void parseFile(); + void testUtils(); + void shortenTemplates_data(); + void shortenTemplates(); + void bigMem(); +private: + Massif::DataModel* m_model; +}; + +#endif // DATAMODELTEST_H diff --git a/massif-visualizer/test/massifparser.cpp b/massif-visualizer/test/massifparser.cpp new file mode 100644 index 00000000..367a9c6b --- /dev/null +++ b/massif-visualizer/test/massifparser.cpp @@ -0,0 +1,66 @@ +/* + This file is part of Massif Visualizer + + Copyright 2012 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#include + +#include +#include +#include + +#include "massifdata/parser.h" +#include "massifdata/filedata.h" + +int main(int argc, char** argv) { + QCoreApplication app(argc, argv); + + if (app.arguments().size() != 2) { + qWarning() << "usage: massifparser MASSIF_FILE"; + return 1; + } + + const QString file = app.arguments().at(1); + QScopedPointer device(KFilterDev::deviceForFile(file)); + if (!device->open(QIODevice::ReadOnly)) { + qWarning() << "could not open file:" << file; + return 2; + } + + qDebug() << "parsing file:" << file; + +#if QT_VERSION >= 0x040700 + QElapsedTimer t; + t.start(); +#endif + Massif::Parser parser; + QScopedPointer data(parser.parse(device.data())); + if (!data) { + qWarning() << "failed to parse file:" << file; + qWarning() << parser.errorLineString() << "in line" << parser.errorLine(); + return 3; + } +#if QT_VERSION >= 0x040700 + qDebug() << "finished parsing in" << t.elapsed() << "ms"; +#endif + + return 0; +} diff --git a/massif-visualizer/test/modeltest.cpp b/massif-visualizer/test/modeltest.cpp new file mode 100644 index 00000000..4044908e --- /dev/null +++ b/massif-visualizer/test/modeltest.cpp @@ -0,0 +1,567 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include + +#include "modeltest.h" + +#include +#undef Q_ASSERT +#define Q_ASSERT QVERIFY + +Q_DECLARE_METATYPE ( QModelIndex ) + +/*! + Connect to all of the models signals. Whenever anything happens recheck everything. +*/ +ModelTest::ModelTest ( QAbstractItemModel *_model, QObject *parent ) : QObject ( parent ), model ( _model ), fetchingMore ( false ) +{ + Q_ASSERT ( model ); + + connect ( model, SIGNAL ( columnsAboutToBeInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( columnsAboutToBeRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( columnsInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( columnsRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( dataChanged ( const QModelIndex &, const QModelIndex & ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( headerDataChanged ( Qt::Orientation, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( layoutAboutToBeChanged () ), this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( layoutChanged () ), this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( modelReset () ), this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( rowsAboutToBeInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( rowsAboutToBeRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( rowsInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + connect ( model, SIGNAL ( rowsRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( runAllTests() ) ); + + // Special checks for inserting/removing + connect ( model, SIGNAL ( layoutAboutToBeChanged() ), + this, SLOT ( layoutAboutToBeChanged() ) ); + connect ( model, SIGNAL ( layoutChanged() ), + this, SLOT ( layoutChanged() ) ); + + connect ( model, SIGNAL ( rowsAboutToBeInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( rowsAboutToBeInserted ( const QModelIndex &, int, int ) ) ); + connect ( model, SIGNAL ( rowsAboutToBeRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( rowsAboutToBeRemoved ( const QModelIndex &, int, int ) ) ); + connect ( model, SIGNAL ( rowsInserted ( const QModelIndex &, int, int ) ), + this, SLOT ( rowsInserted ( const QModelIndex &, int, int ) ) ); + connect ( model, SIGNAL ( rowsRemoved ( const QModelIndex &, int, int ) ), + this, SLOT ( rowsRemoved ( const QModelIndex &, int, int ) ) ); + + runAllTests(); +} + +void ModelTest::runAllTests() +{ + if ( fetchingMore ) + return; + nonDestructiveBasicTest(); + rowCount(); + columnCount(); + hasIndex(); + index(); + parent(); + data(); +} + +/*! + nonDestructiveBasicTest tries to call a number of the basic functions (not all) + to make sure the model doesn't outright segfault, testing the functions that makes sense. +*/ +void ModelTest::nonDestructiveBasicTest() +{ + Q_ASSERT ( model->buddy ( QModelIndex() ) == QModelIndex() ); + model->canFetchMore ( QModelIndex() ); + Q_ASSERT ( model->columnCount ( QModelIndex() ) >= 0 ); + Q_ASSERT ( model->data ( QModelIndex() ) == QVariant() ); + fetchingMore = true; + model->fetchMore ( QModelIndex() ); + fetchingMore = false; + Qt::ItemFlags flags = model->flags ( QModelIndex() ); + Q_ASSERT ( flags == Qt::ItemIsDropEnabled || flags == 0 ); + model->hasChildren ( QModelIndex() ); + model->hasIndex ( 0, 0 ); + model->headerData ( 0, Qt::Horizontal ); + model->index ( 0, 0 ); + model->itemData ( QModelIndex() ); + QVariant cache; + model->match ( QModelIndex(), -1, cache ); + model->mimeTypes(); + Q_ASSERT ( model->parent ( QModelIndex() ) == QModelIndex() ); + Q_ASSERT ( model->rowCount() >= 0 ); + QVariant variant; + model->setData ( QModelIndex(), variant, -1 ); + model->setHeaderData ( -1, Qt::Horizontal, QVariant() ); + model->setHeaderData ( 999999, Qt::Horizontal, QVariant() ); + QMap roles; + model->sibling ( 0, 0, QModelIndex() ); + model->span ( QModelIndex() ); + model->supportedDropActions(); +} + +/*! + Tests model's implementation of QAbstractItemModel::rowCount() and hasChildren() + + Models that are dynamically populated are not as fully tested here. + */ +void ModelTest::rowCount() +{ +// qDebug() << "rc"; + // check top row + QModelIndex topIndex = model->index ( 0, 0, QModelIndex() ); + int rows = model->rowCount ( topIndex ); + Q_ASSERT ( rows >= 0 ); + if ( rows > 0 ) + Q_ASSERT ( model->hasChildren ( topIndex ) == true ); + + QModelIndex secondLevelIndex = model->index ( 0, 0, topIndex ); + if ( secondLevelIndex.isValid() ) { // not the top level + // check a row count where parent is valid + rows = model->rowCount ( secondLevelIndex ); + Q_ASSERT ( rows >= 0 ); + if ( rows > 0 ) + Q_ASSERT ( model->hasChildren ( secondLevelIndex ) == true ); + } + + // The models rowCount() is tested more extensively in checkChildren(), + // but this catches the big mistakes +} + +/*! + Tests model's implementation of QAbstractItemModel::columnCount() and hasChildren() + */ +void ModelTest::columnCount() +{ + // check top row + QModelIndex topIndex = model->index ( 0, 0, QModelIndex() ); + Q_ASSERT ( model->columnCount ( topIndex ) >= 0 ); + + // check a column count where parent is valid + QModelIndex childIndex = model->index ( 0, 0, topIndex ); + if ( childIndex.isValid() ) + Q_ASSERT ( model->columnCount ( childIndex ) >= 0 ); + + // columnCount() is tested more extensively in checkChildren(), + // but this catches the big mistakes +} + +/*! + Tests model's implementation of QAbstractItemModel::hasIndex() + */ +void ModelTest::hasIndex() +{ +// qDebug() << "hi"; + // Make sure that invalid values returns an invalid index + Q_ASSERT ( model->hasIndex ( -2, -2 ) == false ); + Q_ASSERT ( model->hasIndex ( -2, 0 ) == false ); + Q_ASSERT ( model->hasIndex ( 0, -2 ) == false ); + + int rows = model->rowCount(); + int columns = model->columnCount(); + + // check out of bounds + Q_ASSERT ( model->hasIndex ( rows, columns ) == false ); + Q_ASSERT ( model->hasIndex ( rows + 1, columns + 1 ) == false ); + + if ( rows > 0 ) + Q_ASSERT ( model->hasIndex ( 0, 0 ) == true ); + + // hasIndex() is tested more extensively in checkChildren(), + // but this catches the big mistakes +} + +/*! + Tests model's implementation of QAbstractItemModel::index() + */ +void ModelTest::index() +{ +// qDebug() << "i"; + // Make sure that invalid values returns an invalid index + Q_ASSERT ( model->index ( -2, -2 ) == QModelIndex() ); + Q_ASSERT ( model->index ( -2, 0 ) == QModelIndex() ); + Q_ASSERT ( model->index ( 0, -2 ) == QModelIndex() ); + + int rows = model->rowCount(); + int columns = model->columnCount(); + + if ( rows == 0 ) + return; + + // Catch off by one errors + Q_ASSERT ( model->index ( rows, columns ) == QModelIndex() ); + Q_ASSERT ( model->index ( 0, 0 ).isValid() == true ); + + // Make sure that the same index is *always* returned + QModelIndex a = model->index ( 0, 0 ); + QModelIndex b = model->index ( 0, 0 ); + Q_ASSERT ( a == b ); + + // index() is tested more extensively in checkChildren(), + // but this catches the big mistakes +} + +/*! + Tests model's implementation of QAbstractItemModel::parent() + */ +void ModelTest::parent() +{ +// qDebug() << "p"; + // Make sure the model wont crash and will return an invalid QModelIndex + // when asked for the parent of an invalid index. + Q_ASSERT ( model->parent ( QModelIndex() ) == QModelIndex() ); + + if ( model->rowCount() == 0 ) + return; + + // Column 0 | Column 1 | + // QModelIndex() | | + // \- topIndex | topIndex1 | + // \- childIndex | childIndex1 | + + // Common error test #1, make sure that a top level index has a parent + // that is a invalid QModelIndex. + QModelIndex topIndex = model->index ( 0, 0, QModelIndex() ); + Q_ASSERT ( model->parent ( topIndex ) == QModelIndex() ); + + // Common error test #2, make sure that a second level index has a parent + // that is the first level index. + if ( model->rowCount ( topIndex ) > 0 ) { + QModelIndex childIndex = model->index ( 0, 0, topIndex ); + Q_ASSERT ( model->parent ( childIndex ) == topIndex ); + } + + // Common error test #3, the second column should NOT have the same children + // as the first column in a row. + // Usually the second column shouldn't have children. + QModelIndex topIndex1 = model->index ( 0, 1, QModelIndex() ); + if ( model->rowCount ( topIndex1 ) > 0 ) { + QModelIndex childIndex = model->index ( 0, 0, topIndex ); + QModelIndex childIndex1 = model->index ( 0, 0, topIndex1 ); + Q_ASSERT ( childIndex != childIndex1 ); + } + + // Full test, walk n levels deep through the model making sure that all + // parent's children correctly specify their parent. + checkChildren ( QModelIndex() ); +} + +/*! + Called from the parent() test. + + A model that returns an index of parent X should also return X when asking + for the parent of the index. + + This recursive function does pretty extensive testing on the whole model in an + effort to catch edge cases. + + This function assumes that rowCount(), columnCount() and index() already work. + If they have a bug it will point it out, but the above tests should have already + found the basic bugs because it is easier to figure out the problem in + those tests then this one. + */ +void ModelTest::checkChildren ( const QModelIndex &parent, int currentDepth ) +{ + // First just try walking back up the tree. + QModelIndex p = parent; + while ( p.isValid() ) + p = p.parent(); + + // For models that are dynamically populated + if ( model->canFetchMore ( parent ) ) { + fetchingMore = true; + model->fetchMore ( parent ); + fetchingMore = false; + } + + int rows = model->rowCount ( parent ); + int columns = model->columnCount ( parent ); + + if ( rows > 0 ) + Q_ASSERT ( model->hasChildren ( parent ) ); + + // Some further testing against rows(), columns(), and hasChildren() + Q_ASSERT ( rows >= 0 ); + Q_ASSERT ( columns >= 0 ); + if ( rows > 0 ) + Q_ASSERT ( model->hasChildren ( parent ) == true ); + + //qDebug() << "parent:" << model->data(parent).toString() << "rows:" << rows + // << "columns:" << columns << "parent column:" << parent.column(); + + Q_ASSERT ( model->hasIndex ( rows + 1, 0, parent ) == false ); + for ( int r = 0; r < rows; ++r ) { + if ( model->canFetchMore ( parent ) ) { + fetchingMore = true; + model->fetchMore ( parent ); + fetchingMore = false; + } + Q_ASSERT ( model->hasIndex ( r, columns + 1, parent ) == false ); + for ( int c = 0; c < columns; ++c ) { + Q_ASSERT ( model->hasIndex ( r, c, parent ) == true ); + QModelIndex index = model->index ( r, c, parent ); + // rowCount() and columnCount() said that it existed... + Q_ASSERT ( index.isValid() == true ); + + // index() should always return the same index when called twice in a row + QModelIndex modifiedIndex = model->index ( r, c, parent ); + Q_ASSERT ( index == modifiedIndex ); + + // Make sure we get the same index if we request it twice in a row + QModelIndex a = model->index ( r, c, parent ); + QModelIndex b = model->index ( r, c, parent ); + Q_ASSERT ( a == b ); + + // Some basic checking on the index that is returned + Q_ASSERT ( index.model() == model ); + Q_ASSERT ( index.row() == r ); + Q_ASSERT ( index.column() == c ); + // While you can technically return a QVariant usually this is a sign + // of an bug in data() Disable if this really is ok in your model. +// Q_ASSERT ( model->data ( index, Qt::DisplayRole ).isValid() == true ); + + // If the next test fails here is some somewhat useful debug you play with. + + if (model->parent(index) != parent) { + qDebug() << r << c << currentDepth << model->data(index).toString() + << model->data(parent).toString(); + qDebug() << index << parent << model->parent(index); +// And a view that you can even use to show the model. +// QTreeView view; +// view.setModel(model); +// view.show(); + } + + // Check that we can get back our real parent. +// qDebug() << model->parent ( index ) << parent ; + Q_ASSERT ( model->parent ( index ) == parent ); + + // recursively go down the children + if ( model->hasChildren ( index ) && currentDepth < 10 ) { + //qDebug() << r << c << "has children" << model->rowCount(index); + checkChildren ( index, ++currentDepth ); + }/* else { if (currentDepth >= 10) qDebug() << "checked 10 deep"; };*/ + + // make sure that after testing the children that the index doesn't change. + QModelIndex newerIndex = model->index ( r, c, parent ); + Q_ASSERT ( index == newerIndex ); + } + } +} + +/*! + Tests model's implementation of QAbstractItemModel::data() + */ +void ModelTest::data() +{ + // Invalid index should return an invalid qvariant + Q_ASSERT ( !model->data ( QModelIndex() ).isValid() ); + + if ( model->rowCount() == 0 ) + return; + + // A valid index should have a valid QVariant data + Q_ASSERT ( model->index ( 0, 0 ).isValid() ); + + // shouldn't be able to set data on an invalid index + Q_ASSERT ( model->setData ( QModelIndex(), QLatin1String ( "foo" ), Qt::DisplayRole ) == false ); + + // General Purpose roles that should return a QString + QVariant variant = model->data ( model->index ( 0, 0 ), Qt::ToolTipRole ); + if ( variant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( variant ) ); + } + variant = model->data ( model->index ( 0, 0 ), Qt::StatusTipRole ); + if ( variant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( variant ) ); + } + variant = model->data ( model->index ( 0, 0 ), Qt::WhatsThisRole ); + if ( variant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( variant ) ); + } + + // General Purpose roles that should return a QSize + variant = model->data ( model->index ( 0, 0 ), Qt::SizeHintRole ); + if ( variant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( variant ) ); + } + + // General Purpose roles that should return a QFont + QVariant fontVariant = model->data ( model->index ( 0, 0 ), Qt::FontRole ); + if ( fontVariant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( fontVariant ) ); + } + + // Check that the alignment is one we know about + QVariant textAlignmentVariant = model->data ( model->index ( 0, 0 ), Qt::TextAlignmentRole ); + if ( textAlignmentVariant.isValid() ) { + int alignment = textAlignmentVariant.toInt(); + Q_ASSERT ( alignment == ( alignment & ( Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask ) ) ); + } + + // General Purpose roles that should return a QColor + QVariant colorVariant = model->data ( model->index ( 0, 0 ), Qt::BackgroundColorRole ); + if ( colorVariant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( colorVariant ) ); + } + + colorVariant = model->data ( model->index ( 0, 0 ), Qt::TextColorRole ); + if ( colorVariant.isValid() ) { + Q_ASSERT ( qVariantCanConvert ( colorVariant ) ); + } + + // Check that the "check state" is one we know about. + QVariant checkStateVariant = model->data ( model->index ( 0, 0 ), Qt::CheckStateRole ); + if ( checkStateVariant.isValid() ) { + int state = checkStateVariant.toInt(); + Q_ASSERT ( state == Qt::Unchecked || + state == Qt::PartiallyChecked || + state == Qt::Checked ); + } +} + +/*! + Store what is about to be inserted to make sure it actually happens + + \sa rowsInserted() + */ +void ModelTest::rowsAboutToBeInserted ( const QModelIndex &parent, int start, int end ) +{ + Q_UNUSED(end); + +// qDebug() << "rowsAboutToBeInserted" << "start=" << start << "end=" << end << "parent=" << model->data ( parent ).toString() +// << "current count of parent=" << model->rowCount ( parent ); // << "display of last=" << model->data( model->index(start-1, 0, parent) ); +// qDebug() << model->index(start-1, 0, parent) << model->data( model->index(start-1, 0, parent) ); + Changing c; + c.parent = parent; + c.oldSize = model->rowCount ( parent ); + c.last = model->data ( model->index ( start - 1, 0, parent ) ); + c.next = model->data ( model->index ( start, 0, parent ) ); + insert.push ( c ); +} + +/*! + Confirm that what was said was going to happen actually did + + \sa rowsAboutToBeInserted() + */ +void ModelTest::rowsInserted ( const QModelIndex & parent, int start, int end ) +{ + Changing c = insert.pop(); + Q_ASSERT ( c.parent == parent ); +// qDebug() << "rowsInserted" << "start=" << start << "end=" << end << "oldsize=" << c.oldSize +// << "parent=" << model->data ( parent ).toString() << "current rowcount of parent=" << model->rowCount ( parent ); + +// for (int ii=start; ii <= end; ii++) +// { +// qDebug() << "itemWasInserted:" << ii << model->data ( model->index ( ii, 0, parent )); +// } +// qDebug(); + + Q_ASSERT ( c.oldSize + ( end - start + 1 ) == model->rowCount ( parent ) ); + Q_ASSERT ( c.last == model->data ( model->index ( start - 1, 0, c.parent ) ) ); + + if (c.next != model->data(model->index(end + 1, 0, c.parent))) { + qDebug() << start << end; + for (int i=0; i < model->rowCount(); ++i) + qDebug() << model->index(i, 0).data().toString(); + qDebug() << c.next << model->data(model->index(end + 1, 0, c.parent)); + } + + Q_ASSERT ( c.next == model->data ( model->index ( end + 1, 0, c.parent ) ) ); +} + +void ModelTest::layoutAboutToBeChanged() +{ + for ( int i = 0; i < qBound ( 0, model->rowCount(), 100 ); ++i ) + changing.append ( QPersistentModelIndex ( model->index ( i, 0 ) ) ); +} + +void ModelTest::layoutChanged() +{ + for ( int i = 0; i < changing.count(); ++i ) { + QPersistentModelIndex p = changing[i]; + Q_ASSERT ( p == model->index ( p.row(), p.column(), p.parent() ) ); + } + changing.clear(); +} + +/*! + Store what is about to be inserted to make sure it actually happens + + \sa rowsRemoved() + */ +void ModelTest::rowsAboutToBeRemoved ( const QModelIndex &parent, int start, int end ) +{ +qDebug() << "ratbr" << parent << start << end; + Changing c; + c.parent = parent; + c.oldSize = model->rowCount ( parent ); + c.last = model->data ( model->index ( start - 1, 0, parent ) ); + c.next = model->data ( model->index ( end + 1, 0, parent ) ); + remove.push ( c ); +} + +/*! + Confirm that what was said was going to happen actually did + + \sa rowsAboutToBeRemoved() + */ +void ModelTest::rowsRemoved ( const QModelIndex & parent, int start, int end ) +{ + qDebug() << "rr" << parent << start << end; + Changing c = remove.pop(); + Q_ASSERT ( c.parent == parent ); + Q_ASSERT ( c.oldSize - ( end - start + 1 ) == model->rowCount ( parent ) ); + Q_ASSERT ( c.last == model->data ( model->index ( start - 1, 0, c.parent ) ) ); + Q_ASSERT ( c.next == model->data ( model->index ( start, 0, c.parent ) ) ); +} + + diff --git a/massif-visualizer/test/modeltest.h b/massif-visualizer/test/modeltest.h new file mode 100644 index 00000000..244adbe0 --- /dev/null +++ b/massif-visualizer/test/modeltest.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef MODELTEST_H +#define MODELTEST_H + +#include +#include +#include + +class ModelTest : public QObject +{ + Q_OBJECT + +public: + ModelTest( QAbstractItemModel *model, QObject *parent = 0 ); + +private Q_SLOTS: + void nonDestructiveBasicTest(); + void rowCount(); + void columnCount(); + void hasIndex(); + void index(); + void parent(); + void data(); + +protected Q_SLOTS: + void runAllTests(); + void layoutAboutToBeChanged(); + void layoutChanged(); + void rowsAboutToBeInserted( const QModelIndex &parent, int start, int end ); + void rowsInserted( const QModelIndex & parent, int start, int end ); + void rowsAboutToBeRemoved( const QModelIndex &parent, int start, int end ); + void rowsRemoved( const QModelIndex & parent, int start, int end ); + +private: + void checkChildren( const QModelIndex &parent, int currentDepth = 0 ); + + QAbstractItemModel *model; + + struct Changing { + QModelIndex parent; + int oldSize; + QVariant last; + QVariant next; + }; + QStack insert; + QStack remove; + + bool fetchingMore; + + QList changing; +}; + +#endif diff --git a/massif-visualizer/visualizer/CMakeLists.txt b/massif-visualizer/visualizer/CMakeLists.txt new file mode 100644 index 00000000..ed87f87c --- /dev/null +++ b/massif-visualizer/visualizer/CMakeLists.txt @@ -0,0 +1,23 @@ +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + +set(visualizer_SRCS + totalcostmodel.cpp + detailedcostmodel.cpp + datatreemodel.cpp + filtereddatatreemodel.cpp + dotgraphgenerator.cpp + allocatorsmodel.cpp +) + +add_library(mv-visualizer STATIC ${visualizer_SRCS}) + +target_link_libraries(mv-visualizer LINK_PRIVATE + mv-massifdata + mv-kdchart + ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} + ${KDE4_KDECORE_LIBS} +) diff --git a/massif-visualizer/visualizer/allocatorsmodel.cpp b/massif-visualizer/visualizer/allocatorsmodel.cpp new file mode 100644 index 00000000..8520349d --- /dev/null +++ b/massif-visualizer/visualizer/allocatorsmodel.cpp @@ -0,0 +1,195 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "allocatorsmodel.h" + +#include "massifdata/snapshotitem.h" +#include "massifdata/filedata.h" +#include "massifdata/treeleafitem.h" + +#include + +using namespace Massif; + +namespace { + +ParsedLabel labelForNode(const TreeLeafItem* node) +{ + ParsedLabel label; + if (!isBelowThreshold(node->label())) { + label = parseLabel(node->label()); + label.address.clear(); + } + return label; +} + +} + +AllocatorsModel::AllocatorsModel(const FileData* data, QObject* parent) + : QAbstractItemModel(parent) +{ + m_data.reserve(1024); + + QHash labelToData; + foreach (const SnapshotItem* snapshot, data->snapshots()) { + if (!snapshot->heapTree()) { + continue; + } + foreach (const TreeLeafItem* node, snapshot->heapTree()->children()) { + const ParsedLabel label = labelForNode(node); + + int idx = labelToData.value(label, -1); + if (idx == -1) { + idx = m_data.size(); + labelToData[label] = idx; + Data data; + data.label = label; + data.peak = node; + m_data << data; + } + + Data& data = m_data[idx]; + if (data.peak->cost() < node->cost()) { + data.peak = node; + } + } + } +} + +AllocatorsModel::~AllocatorsModel() +{ + +} + +int AllocatorsModel::columnCount(const QModelIndex& parent) const +{ + if (parent.isValid()) { + return 0; + } + return NUM_COLUMNS; +} + +int AllocatorsModel::rowCount(const QModelIndex& parent) const +{ + if (parent.isValid()) { + return 0; + } + return m_data.size(); +} + +QModelIndex AllocatorsModel::index(int row, int column, const QModelIndex& parent) const +{ + if (parent.isValid() || row < 0 || column < 0 || row >= m_data.size() || column >= NUM_COLUMNS) { + return QModelIndex(); + } + return createIndex(row, column); +} + +QModelIndex AllocatorsModel::parent(const QModelIndex& /*child*/) const +{ + return QModelIndex(); +} + +QVariant AllocatorsModel::data(const QModelIndex& index, int role) const +{ + if (role != Qt::DisplayRole && role != Qt::ToolTipRole && role != SortRole && role != ItemRole) { + return QVariant(); + } + + if (!index.isValid() || index.parent().isValid() || index.row() < 0 || index.row() >= m_data.size() + || index.column() < 0 || index.column() >= NUM_COLUMNS) + { + return QVariant(); + } + + const Data& data = m_data.value(index.row()); + + if (role == Qt::ToolTipRole) { + QString tooltip = i18n("
peak cost:
%1
", prettyCost(data.peak->cost())); + tooltip += formatLabelForTooltip(data.label); + return finalizeTooltip(tooltip); + } else if (role == ItemRole) { + return QVariant::fromValue(ModelItem(data.peak, 0)); + } + + switch (index.column()) { + case Function: + if (data.label.function.isEmpty()) { + return i18n("below threshold"); + } + return shortenTemplates(data.label.function); + case Location: + return data.label.location; + case Peak: + if (role == SortRole) { + return data.peak->cost(); + } + return prettyCost(data.peak->cost()); + } + + return QVariant(); +} + +QVariant AllocatorsModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (role != Qt::DisplayRole || orientation != Qt::Horizontal || section < 0 || section >= NUM_COLUMNS) { + return QVariant(); + } + + switch (section) { + case Function: + return i18n("Function"); + case Location: + return i18n("Location"); + case Peak: + return i18n("Peak"); + } + + return QVariant(); +} + +QModelIndex AllocatorsModel::indexForItem(const ModelItem& item) const +{ + if (!item.first) { + return QModelIndex(); + } + + const ParsedLabel label = labelForNode(item.first); + + for (int i = 0; i < m_data.size(); ++i) { + if (m_data[i].label == label) { + return createIndex(i, Function); + } + } + + return QModelIndex(); +} + +void AllocatorsModel::settingsChanged() +{ + if (m_data.isEmpty()) { + return; + } + // update shorten templates + dataChanged(createIndex(0, Function), + createIndex(m_data.size() - 1, Function)); +} diff --git a/massif-visualizer/visualizer/allocatorsmodel.h b/massif-visualizer/visualizer/allocatorsmodel.h new file mode 100644 index 00000000..d56080c2 --- /dev/null +++ b/massif-visualizer/visualizer/allocatorsmodel.h @@ -0,0 +1,82 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License or (at your option) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef ALLOCATORSMODEL_H +#define ALLOCATORSMODEL_H + +#include +#include + +#include + +#include "modelitem.h" +#include "visualizer_export.h" + +namespace Massif { + +class TreeLeafItem; + +class FileData; + +class VISUALIZER_EXPORT AllocatorsModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + explicit AllocatorsModel(const FileData* data, QObject* parent = 0); + virtual ~AllocatorsModel(); + + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + + virtual QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const; + virtual QModelIndex parent(const QModelIndex& child) const; + + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + + QModelIndex indexForItem(const Massif::ModelItem& item) const; + void settingsChanged(); + + enum Columns { + Function = 0, + Peak, + Location, + NUM_COLUMNS, + }; + + enum Roles { + SortRole = Qt::UserRole + 1, + ItemRole, + }; +private: + struct Data + { + ParsedLabel label; + const TreeLeafItem* peak; + }; + QVector m_data; +}; + +} + +#endif // ALLOCATORSMODEL_H diff --git a/massif-visualizer/visualizer/datatreemodel.cpp b/massif-visualizer/visualizer/datatreemodel.cpp new file mode 100644 index 00000000..498f8b42 --- /dev/null +++ b/massif-visualizer/visualizer/datatreemodel.cpp @@ -0,0 +1,296 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "datatreemodel.h" + +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include + +#include + +using namespace Massif; + +DataTreeModel::DataTreeModel(QObject* parent) + : QAbstractItemModel(parent), m_data(0) +{ +} + +DataTreeModel::~DataTreeModel() +{ +} + +void DataTreeModel::setSource(const FileData* data) +{ + if (m_data) { + beginRemoveRows(QModelIndex(), 0, rowCount() - 1); + m_data = 0; + m_nodeToRow.clear(); + m_heapRootToSnapshot.clear(); + endRemoveRows(); + } + if (data) { + beginInsertRows(QModelIndex(), 0, data->snapshots().size() - 1); + m_data = data; + int row = 0; + foreach(const SnapshotItem* item, m_data->snapshots()) { + if (item->heapTree()) { + mapNodeToRow(item->heapTree(), row++); + m_heapRootToSnapshot[item->heapTree()] = item; + } else { + row++; + } + } + endInsertRows(); + } +} + +void DataTreeModel::mapNodeToRow(const TreeLeafItem* node, const int row) +{ + m_nodeToRow[node] = row; + int r = 0; + foreach(const TreeLeafItem* child, node->children()) { + mapNodeToRow(child, r++); + } +} + +QVariant DataTreeModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + Q_UNUSED(section) + Q_UNUSED(orientation) + Q_UNUSED(role) + return i18n("Snapshots"); +} + +QVariant DataTreeModel::data(const QModelIndex& index, int role) const +{ + // FIXME kdchart queries (-1, -1) for empty models + if ( index.row() == -1 || index.column() == -1 ) { +// qWarning() << "DataTreeModel::data: FIXME fix kdchart views to not query model data for invalid indices!"; + return QVariant(); + } + + Q_ASSERT(index.row() >= 0 && index.row() < rowCount(index.parent())); + Q_ASSERT(index.column() >= 0 && index.column() < columnCount(index.parent())); + Q_ASSERT(m_data); + + + // custom background for peak snapshot + if ( role == Qt::BackgroundRole ) { +// double maxValue = 1; + const double maxValue = m_data->peak()->cost(); + double currentValue = 0; + if ( !index.parent().isValid() && m_data->peak() ) { +// maxValue = m_data->peak()->memHeap(); + const SnapshotItem* snapshot = m_data->snapshots().at(index.row()); + currentValue = snapshot->cost(); + } else if (index.parent().isValid()) { + Q_ASSERT(index.internalPointer()); + const TreeLeafItem* node = static_cast(index.internalPointer()); + currentValue = node->cost(); + Q_ASSERT(node->parent()); + /* + TreeLeafItem* parent = node->parent(); + while (parent->parent()) { + parent = parent->parent(); + } + maxValue = parent->cost(); + // normalize + maxValue -= parent->children().last()->cost(); + currentValue -= parent->children().last()->cost(); + */ + } + if (currentValue > 0) { + const double ratio = (currentValue / maxValue); + QColor c = QColor::fromHsv(120 - ratio * 120, 255, 255, (-((ratio-1) * (ratio-1))) * 120 + 120); +// QColor c = QColor::fromHsv(120 - ratio * 120, 255, 255, 120); + return QBrush(c); + } else { + return QVariant(); + } + } + + if (role == ModelItemRole) { + return QVariant::fromValue(itemForIndex(index)); + } + + if (role != Qt::DisplayRole && role != Qt::ToolTipRole && role != RawLabelRole && role != TreeItemRole) + { + return QVariant(); + } + + if (!index.parent().isValid()) { + const SnapshotItem* snapshot = m_data->snapshots().at(index.row()); + if (role == Qt::ToolTipRole) { + if (snapshot == m_data->peak()) { + return i18n("Peak snapshot: heap cost of %1", prettyCost(snapshot->cost())); + } else { + return i18n("Snapshot #%1: heap cost of %2", snapshot->number(), prettyCost(snapshot->cost())); + } + } else if (role == RawLabelRole) { + return i18nc("%1: snapshot number", "Snapshot #%1", snapshot->number()); + } else if (role == TreeItemRole) { + return QVariant::fromValue(0); + } + const QString costStr = prettyCost(snapshot->cost()); + if (snapshot == m_data->peak()) { + return i18nc("%1: cost, %2: snapshot number", + "%1: Snapshot #%2 (peak)", costStr, snapshot->number()); + } else { + return i18nc("%1: cost, %2: snapshot number", + "%1: Snapshot #%2", costStr, snapshot->number()); + } + } else { + Q_ASSERT(index.internalPointer()); + const TreeLeafItem* item = static_cast(index.internalPointer()); + if (role == Qt::ToolTipRole) { + return tooltipForTreeLeaf(item, snapshotForTreeLeaf(item), item->label()); + } else if (role == RawLabelRole) { + return item->label(); + } else if (role == TreeItemRole) { + return QVariant::fromValue(item); + } + return i18nc("%1: cost, %2: snapshot label (i.e. func name etc.)", "%1: %2", + prettyCost(item->cost()), QString::fromLatin1(prettyLabel(item->label()))); + } + return QVariant(); +} + +int DataTreeModel::columnCount(const QModelIndex& parent) const +{ + Q_UNUSED(parent) + return 1; +} + +int DataTreeModel::rowCount(const QModelIndex& parent) const +{ + if (!m_data || (parent.isValid() && parent.column() != 0)) { + return 0; + } + + if (parent.isValid()) { + if (!parent.internalPointer()) { + // snapshot without detailed heaptree + return 0; + } + return static_cast(parent.internalPointer())->children().size(); + } else { + return m_data->snapshots().size(); + } +} + +QModelIndex DataTreeModel::index(int row, int column, const QModelIndex& parent) const +{ + if (row < 0 || row >= rowCount(parent) || column < 0 || column >= columnCount(parent)) { + // invalid + return QModelIndex(); + } + + if (parent.isValid()) { + if (parent.column() == 0) { + Q_ASSERT(parent.internalPointer()); + // parent is a tree leaf item + return createIndex(row, column, static_cast(static_cast(parent.internalPointer())->children().at(row))); + } else { + return QModelIndex(); + } + } else { + return createIndex(row, column, static_cast(m_data->snapshots().at(row)->heapTree())); + } +} + +QModelIndex DataTreeModel::parent(const QModelIndex& child) const +{ + if (child.internalPointer()) { + const TreeLeafItem* item = static_cast(child.internalPointer()); + if (item->parent()) { + int row = m_nodeToRow.value(item->parent(), -1); + Q_ASSERT(row != -1); + // somewhere in the detailed heap tree + return createIndex(row, 0, static_cast(item->parent())); + } else { + // snapshot item with heap tree + return QModelIndex(); + } + } else { + // snapshot item without detailed heap tree + return QModelIndex(); + } +} + +QModelIndex DataTreeModel::indexForSnapshot(const SnapshotItem* snapshot) const +{ + int idx = m_data->snapshots().indexOf(const_cast(snapshot)); + if ( idx == -1 ) { + return QModelIndex(); + } + return index(idx, 0); +} + +QModelIndex DataTreeModel::indexForTreeLeaf(const TreeLeafItem* node) const +{ + if (!m_data) { + return QModelIndex(); + } + int row = m_nodeToRow.value(node, -1); + if (row == -1) { + return QModelIndex(); + } + return createIndex(row, 0, const_cast(static_cast(node))); +} + +ModelItem DataTreeModel::itemForIndex(const QModelIndex& idx) const +{ + if (!m_data || !idx.isValid() || idx.row() >= m_data->snapshots().count()) { + return ModelItem(0, 0); + } + if (idx.parent().isValid()) { + Q_ASSERT(idx.internalPointer()); + return ModelItem(static_cast(idx.internalPointer()), 0); + } else { + return ModelItem(0, m_data->snapshots().at(idx.row())); + } +} + +QModelIndex DataTreeModel::indexForItem(const ModelItem& item) const +{ + if (!item.first && !item.second) { + return QModelIndex(); + } + Q_ASSERT((item.first && !item.second) || (!item.first && item.second)); + if (item.first) { + return indexForTreeLeaf(item.first); + } else { + return indexForSnapshot(item.second); + } +} + +const SnapshotItem* DataTreeModel::snapshotForTreeLeaf(const TreeLeafItem* node) const +{ + while (node->parent()) { + node = node->parent(); + } + return m_heapRootToSnapshot.value(node); +} diff --git a/massif-visualizer/visualizer/datatreemodel.h b/massif-visualizer/visualizer/datatreemodel.h new file mode 100644 index 00000000..deb980b8 --- /dev/null +++ b/massif-visualizer/visualizer/datatreemodel.h @@ -0,0 +1,96 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_DATATREEMODEL_H +#define MASSIF_DATATREEMODEL_H + +#include + +#include "modelitem.h" + +#include "visualizer_export.h" + +namespace Massif { + +class FileData; +class TreeLeafItem; +class SnapshotItem; + +/** + * A model that gives a tree representation of the full Massif data. Useful for e.g. ListViews. + */ +class VISUALIZER_EXPORT DataTreeModel : public QAbstractItemModel +{ +public: + DataTreeModel(QObject* parent = 0); + virtual ~DataTreeModel(); + + /** + * That the source data for this model. + */ + void setSource(const FileData* data); + + /** + * @return Item for given index. At maximum one of the pointers in the pair will be valid. + */ + ModelItem itemForIndex(const QModelIndex& idx) const; + + /** + * @return Index for given item. At maximum one of the pointers should be valid in the input pair. + */ + QModelIndex indexForItem(const ModelItem& item) const; + + /** + * @return Index for given snapshot, or invalid if it's not a detailed snapshot. + */ + QModelIndex indexForSnapshot(const SnapshotItem* snapshot) const; + + /** + * @return Index for given TreeLeafItem, or invalid if it's not covered by this model. + */ + QModelIndex indexForTreeLeaf(const TreeLeafItem* node) const; + + enum CustomRoles { + RawLabelRole = Qt::UserRole + 1, + TreeItemRole, + ModelItemRole, + }; + + virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + virtual QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const; + virtual QModelIndex parent(const QModelIndex& child) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + + const SnapshotItem* snapshotForTreeLeaf(const TreeLeafItem* node) const; +private: + const FileData* m_data; + + void mapNodeToRow(const TreeLeafItem* node, const int row); + QHash m_nodeToRow; + QHash m_heapRootToSnapshot; +}; + +} + +#endif // MASSIF_DATATREEMODEL_H diff --git a/massif-visualizer/visualizer/detailedcostmodel.cpp b/massif-visualizer/visualizer/detailedcostmodel.cpp new file mode 100644 index 00000000..5b4cec17 --- /dev/null +++ b/massif-visualizer/visualizer/detailedcostmodel.cpp @@ -0,0 +1,415 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "detailedcostmodel.h" + +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include "KDChartGlobal" +#include "KDChartDataValueAttributes" +#include "KDChartLineAttributes" + +#include +#include +#include + +#include +#include + +#include + +using namespace Massif; + +namespace { + +QVariant colorForColumn(int column, int columnCount, int role) +{ + QColor c = QColor::fromHsv(double(column + 1) / columnCount * 255, 255, 255); + if (role == KDChart::DatasetBrushRole) { + return QBrush(c); + } else { + return QPen(c); + } +} + +} + +DetailedCostModel::DetailedCostModel(QObject* parent) + : QAbstractTableModel(parent), m_data(0), m_maxDatasetCount(10) +{ +} + +DetailedCostModel::~DetailedCostModel() +{ +} + +void DetailedCostModel::setSource(const FileData* data) +{ + if (m_data) { + beginRemoveRows(QModelIndex(), 0, rowCount() - 1); + m_data = 0; + m_columns.clear(); + m_rows.clear(); + m_nodes.clear(); + m_peaks.clear(); + endRemoveRows(); + } + if (data) { + // get top cost points: + // we traverse the detailed heap trees until the first fork + QMultiMap sortColumnMap; + foreach (const SnapshotItem* snapshot, data->snapshots()) { + if (snapshot->heapTree()) { + QVector nodes; + foreach (const TreeLeafItem* node, snapshot->heapTree()->children()) { + if (isBelowThreshold(node->label())) { + continue; + } + // find interesting node, i.e. until first fork + const TreeLeafItem* firstNode = node; + while (node->children().size() == 1 && node->children().at(0)->cost() == node->cost()) { + node = node->children().at(0); + } + if (node->children().isEmpty()) { + // when we traverse the tree down until the end (i.e. no forks), + // we end up in main() most probably, and that's uninteresting + node = firstNode; + } + if (!sortColumnMap.values().contains(node->label())) { + sortColumnMap.insert(node->cost(), node->label()); + m_peaks[node->label()] = qMakePair(node, snapshot); + } else { + quint64 cost = sortColumnMap.key(node->label()); + if (node->cost() > cost) { + sortColumnMap.remove(cost, node->label()); + cost = node->cost(); + sortColumnMap.insert(cost, node->label()); + m_peaks[node->label()].first = node; + m_peaks[node->label()].second = snapshot; + } + } + nodes << node; + } + m_rows << snapshot; + m_nodes[snapshot] = nodes; + } + } + // ugh, yet another bad usage of QList in Qt's API + m_columns = sortColumnMap.values().toVector(); + QAlgorithmsPrivate::qReverse(m_columns.begin(), m_columns.end()); + + if (m_rows.isEmpty()) { + return; + } + // +1 for the offset (+0 would be m_rows.size() -1) + beginInsertRows(QModelIndex(), 0, m_rows.size()); + m_data = data; + endInsertRows(); + } +} + +void DetailedCostModel::setMaximumDatasetCount(int count) +{ + Q_ASSERT(count >= 0); + const int currentCols = qMin(m_columns.size(), m_maxDatasetCount); + const int newCols = qMin(m_columns.size(), count); + if (currentCols == newCols) { + return; + } + if (newCols < currentCols) { + beginRemoveColumns(QModelIndex(), newCols * 2, currentCols * 2 - 1); + } else { + beginInsertColumns(QModelIndex(), currentCols * 2, newCols * 2 - 1); + } + m_maxDatasetCount = count; + if (newCols < currentCols) { + endRemoveColumns(); + } else { + endInsertColumns(); + } + Q_ASSERT(columnCount() == newCols * 2); +} + +int DetailedCostModel::maximumDatasetCount() const +{ + return m_maxDatasetCount; +} + +QVariant DetailedCostModel::data(const QModelIndex& index, int role) const +{ + // FIXME kdchart queries (-1, -1) for empty models + if ( index.row() == -1 || index.column() == -1 ) { +// qWarning() << "DetailedCostModel::data: FIXME fix kdchart views to not query model data for invalid indices!"; + return QVariant(); + } + + Q_ASSERT(index.row() >= 0 && index.row() < rowCount(index.parent())); + Q_ASSERT(index.column() >= 0 && index.column() < columnCount(index.parent())); + Q_ASSERT(m_data); + Q_ASSERT(!index.parent().isValid()); + + if ( role == KDChart::LineAttributesRole ) { + static KDChart::LineAttributes attributes; + attributes.setDisplayArea(true); + if (index == m_selection) { + attributes.setTransparency(255); + } else if (index.column() == m_selection.column()) { + attributes.setTransparency(152); + } else { + attributes.setTransparency(127); + } + return QVariant::fromValue(attributes); + } + + if (role == KDChart::DatasetBrushRole || role == KDChart::DatasetPenRole) { + return colorForColumn(index.column(), columnCount(), role); + } + + if ( role != Qt::DisplayRole && role != Qt::ToolTipRole ) { + return QVariant(); + } + + if (index.row() == 0) { + if (role == Qt::ToolTipRole) { + return QVariant(); + } else { + if (index.column() % 2 == 0) { + // get x-coordinate of the last snapshot with cost below 0.1% of peak cost + QVector< SnapshotItem* >::const_iterator it = m_data->snapshots().constBegin(); + double time = 0; + while (it != m_data->snapshots().constEnd() && (*it)->cost() < m_data->peak()->cost() * 0.001) { + time = (*it)->time(); + ++it; + } + return time; + } else { + // cost to 0 + return 0; + } + } + } + + const SnapshotItem* snapshot; + if (role == Qt::ToolTipRole) { + // hack: the ToolTip will only be queried by KDChart and that one uses the + // left index, but we want it to query the right one + Q_ASSERT(index.row() < m_rows.size()); + snapshot = m_rows.at(index.row()); + } else { + snapshot = m_rows.at(index.row() - 1); + } + + if (index.column() % 2 == 0 && role != Qt::ToolTipRole) { + return snapshot->time(); + } else { + const TreeLeafItem* node = 0; + const QByteArray needle = m_columns.at(index.column() / 2); + foreach(const TreeLeafItem* n, m_nodes[snapshot]) { + if (n->label() == needle) { + node = n; + break; + } + } + if (role == Qt::ToolTipRole) { + return tooltipForTreeLeaf(node, snapshot, needle); + } else { + return node ? node->cost() : 0; + } + } +} + +QVariant DetailedCostModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation == Qt::Horizontal && section % 2 == 0 && section < columnCount()) { + if (role == KDChart::DatasetBrushRole || role == KDChart::DatasetPenRole) { + return colorForColumn(section, columnCount(), role); + } else if (role == Qt::DisplayRole ) { + // only show name without memory address or location + QByteArray label = prettyLabel(m_columns.at(section / 2)); + if (label.indexOf("???") != -1) { + return label; + } + int endPos = label.lastIndexOf('('); + if (endPos == -1) { + return label; + } + label = label.mid(0, endPos - 1); + const int maxLen = 40; + if (label.length() > maxLen) { + label.resize(maxLen - 3); + label.append("..."); + } + return label; + } + } + return QAbstractItemModel::headerData(section, orientation, role); +} + +int DetailedCostModel::columnCount(const QModelIndex&) const +{ + return qMin(m_maxDatasetCount, m_columns.size()) * 2; +} + +int DetailedCostModel::rowCount(const QModelIndex& parent) const +{ + if (!m_data) { + return 0; + } + + if (parent.isValid()) { + return 0; + } else { + // +1 to get a zero row first + return m_rows.count() + 1; + } +} + +DetailedCostModel::Peaks DetailedCostModel::peaks() const +{ + Peaks peaks; + QHash::const_iterator it = m_peaks.constBegin(); + while (it != m_peaks.end()) { + int row = m_rows.indexOf(it->second); + Q_ASSERT(row >= 0); + int column = m_columns.indexOf(it->first->label()); + if (column >= m_maxDatasetCount || column == -1) { + ++it; + continue; + } + Q_ASSERT(column >= 0); + peaks[index(row + 1, column*2)] = it->first; + ++it; + } + Q_ASSERT(peaks.size() == qMin(m_maxDatasetCount, m_columns.size())); + return peaks; +} + +QModelIndex DetailedCostModel::indexForSnapshot(const SnapshotItem* snapshot) const +{ + int row = m_rows.indexOf(snapshot); + if (row == -1) { + return QModelIndex(); + } + return index(row + 1, 0); +} + +QModelIndex DetailedCostModel::indexForTreeLeaf(const TreeLeafItem* node) const +{ + int column = m_columns.indexOf(node->label()); + if (column == -1 || column >= m_maxDatasetCount) { + return QModelIndex(); + } + Nodes::const_iterator it = m_nodes.constBegin(); + while (it != m_nodes.constEnd()) { + if (it->contains(node)) { + return index(m_rows.indexOf(it.key()), column * 2); + } + ++it; + } + return QModelIndex(); +} + +ModelItem DetailedCostModel::itemForIndex(const QModelIndex& idx) const +{ + if (!idx.isValid() || idx.parent().isValid() || idx.row() > rowCount() || idx.column() > columnCount()) { + return ModelItem(0, 0); + } + if (idx.row() == 0) { + return ModelItem(0, 0); + } + const QByteArray needle = m_columns.at(idx.column() / 2); + for (int i = 1; i < 3 && idx.row() - i >= 0; ++i) { + const SnapshotItem* snapshot = m_rows.at(idx.row() - i); + foreach(const TreeLeafItem* n, m_nodes[snapshot]) { + if (n->label() == needle) { + return ModelItem(n, 0); + } + } + } + return ModelItem(0, 0); +} + +QModelIndex DetailedCostModel::indexForItem(const ModelItem& item) const +{ + if (!item.first && !item.second) { + return QModelIndex(); + } + Q_ASSERT((item.first && !item.second) || (!item.first && item.second)); + if (item.first) { + return indexForTreeLeaf(item.first); + } else { + return indexForSnapshot(item.second); + } +} + +void DetailedCostModel::setSelection(const QModelIndex& index) +{ + m_selection = index; +} + +void DetailedCostModel::hideFunction(const TreeLeafItem* node) +{ + beginResetModel(); + Nodes::iterator it = m_nodes.begin(); + while (it != m_nodes.end()) { + QVector< const TreeLeafItem* >::iterator it2 = it.value().begin(); + while (it2 != it.value().end()) { + if ((*it2)->label() == node->label()) { + it2 = it.value().erase(it2); + } else { + ++it2; + } + } + ++it; + } + int idx = m_columns.indexOf(node->label()); + if (idx != -1) { + m_columns.remove(idx); + } + endResetModel(); +} + +void DetailedCostModel::hideOtherFunctions(const TreeLeafItem* node) +{ + beginResetModel(); + m_columns.clear(); + m_columns << node->label(); + + Nodes::iterator it = m_nodes.begin(); + const Nodes::iterator end = m_nodes.end(); + while (it != end) { + QVector< const TreeLeafItem* >::iterator it2 = it.value().begin(); + while (it2 != it.value().end()) { + if ((*it2)->label() != node->label()) { + it2 = it.value().erase(it2); + } else { + ++it2; + } + } + ++it; + } + + endResetModel(); +} diff --git a/massif-visualizer/visualizer/detailedcostmodel.h b/massif-visualizer/visualizer/detailedcostmodel.h new file mode 100644 index 00000000..3675d4e7 --- /dev/null +++ b/massif-visualizer/visualizer/detailedcostmodel.h @@ -0,0 +1,124 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_DETAILEDCOSTMODEL_H +#define MASSIF_DETAILEDCOSTMODEL_H + +#include +#include + +#include "modelitem.h" + +#include "visualizer_export.h" + +namespace Massif { + +class FileData; +class SnapshotItem; +class TreeLeafItem; + +/** + * A model that gives a tabular access on the costs in a massif output file. + */ +class VISUALIZER_EXPORT DetailedCostModel : public QAbstractTableModel +{ +public: + DetailedCostModel(QObject* parent = 0); + virtual ~DetailedCostModel(); + + /** + * That the source data for this model. + */ + void setSource(const FileData* data); + + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + + /** + * Sets the maximum number of datasets in this model to @p count. + */ + void setMaximumDatasetCount(int count); + + int maximumDatasetCount() const; + + typedef QMap Peaks; + /** + * @return List of peaks with their heap tree leaf items. + */ + Peaks peaks() const; + + /** + * @return ModelItem for given index. At maximum one of the pointers in the pair will be valid. + */ + ModelItem itemForIndex(const QModelIndex& idx) const; + + /** + * @return Index for given item. Only one of the pointers in the pair should be valid. + */ + QModelIndex indexForItem(const ModelItem& item) const; + + /** + * @return Index for given snapshot, or invalid if it's not a detailed snapshot. + */ + QModelIndex indexForSnapshot(const SnapshotItem* snapshot) const; + + /** + * @return Index for given TreeLeafItem, or invalid if it's not covered by this model. + */ + QModelIndex indexForTreeLeaf(const TreeLeafItem* node) const; + + /** + * Select @p index, which changes the graphical representation of its data. + */ + void setSelection(const QModelIndex& index); + + /** + * Hide function @p func. + */ + void hideFunction(const TreeLeafItem* node); + + /** + * Hide all functions except for @p func. + */ + void hideOtherFunctions(const TreeLeafItem* node); + +private: + const FileData* m_data; + // columns => label + QVector m_columns; + // only to sort snapshots by number + QVector m_rows; + typedef QHash > Nodes; + // snapshot item => cost intensive nodes + Nodes m_nodes; + // peaks: Label => TreeLeafItem,Snapshot + QHash m_peaks; + // selected item + QModelIndex m_selection; + int m_maxDatasetCount; +}; + +} + +#endif // MASSIF_DETAILEDCOSTMODEL_H diff --git a/massif-visualizer/visualizer/dotgraphgenerator.cpp b/massif-visualizer/visualizer/dotgraphgenerator.cpp new file mode 100644 index 00000000..a1685cbc --- /dev/null +++ b/massif-visualizer/visualizer/dotgraphgenerator.cpp @@ -0,0 +1,320 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "dotgraphgenerator.h" + +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include +#include +#include + +#include +#include + +#include + +namespace Massif { + +struct GraphNode { + const TreeLeafItem* item; + // incoming calls + cost + QHash children; + // outgoing calls + QVector parents; + quint64 accumulatedCost; + bool visited; + quint32 belowThresholdCount; + quint64 belowThresholdCost; +}; + +} + +Q_DECLARE_TYPEINFO(Massif::GraphNode, Q_MOVABLE_TYPE); + +using namespace Massif; + +DotGraphGenerator::DotGraphGenerator(const SnapshotItem* snapshot, const QString& timeUnit, QObject* parent) + : QThread(parent) + , m_snapshot(snapshot) + , m_node(snapshot->heapTree()) + , m_canceled(false) + , m_timeUnit(timeUnit) + , m_highestCost(0) +{ + m_file.open(); +} + +DotGraphGenerator::DotGraphGenerator(const TreeLeafItem* node, const QString& timeUnit, QObject* parent) + : QThread(parent) + , m_snapshot(0) + , m_node(node) + , m_canceled(false) + , m_timeUnit(timeUnit) + , m_highestCost(0) +{ + m_file.open(); +} + +DotGraphGenerator::~DotGraphGenerator() +{ + kDebug() << "closing generator, file will get removed"; +} + +void DotGraphGenerator::cancel() +{ + m_canceled = true; +} + +QString getLabel(const TreeLeafItem* node) +{ + QString label = prettyLabel(node->label()); + const int lineWidth = 40; + if (label.length() > lineWidth) { + int lastPos = 0; + int lastBreak = 0; + while (true) { + lastPos = label.indexOf(',', lastPos); + if (lastPos == -1) { + break; + } else if (lastPos - lastBreak > lineWidth) { + label.insert(lastPos, "\\n\\ \\ "); + lastPos = lastPos + 4; + lastBreak = lastPos; + continue; + } else { + lastPos++; + } + } + } + return label; +} + +QString getColor(quint64 cost, quint64 maxCost) +{ + Q_ASSERT(cost <= maxCost); + const double ratio = (double(cost) / maxCost); + Q_ASSERT(ratio <= 1.0); + return QColor::fromHsv(120 - ratio * 120, (-((ratio-1) * (ratio-1))) * 255 + 255, 255, 255).name(); +// return QColor::fromHsv(120 - ratio * 120, 255, 255).name(); +} + +GraphNode* buildGraph(const TreeLeafItem* item, QMultiHash& knownNodes, + quint64& maxCost, GraphNode* parent = 0) +{ + // merge below-threshold items + if (parent && item->children().isEmpty()) { + static QRegExp matchBT("in ([0-9]+) places, all below massif's threshold", + Qt::CaseSensitive, QRegExp::RegExp2); + if (matchBT.indexIn(QString::fromLatin1(item->label())) != -1) { + parent->belowThresholdCost += item->cost(); + parent->belowThresholdCount += matchBT.cap(1).toInt(); + } + return 0; + } + GraphNode* node = knownNodes.value(item->label(), 0); + if (!node) { + node = new GraphNode; + knownNodes.insert(item->label(), node); + node->item = item; + node->accumulatedCost = 0; + node->visited = false; + node->belowThresholdCost = 0; + node->belowThresholdCount = 0; + } + + if (parent && !node->parents.contains(parent)) { + node->parents << parent; + } + + node->accumulatedCost += item->cost(); + + if (node->accumulatedCost > maxCost) { + maxCost = node->accumulatedCost; + } + + foreach(TreeLeafItem* child, item->children()) { + GraphNode* childNode = buildGraph(child, knownNodes, maxCost, node); + if (!childNode) { + // was below-threshold item + continue; + } + QMultiHash< GraphNode*, quint64 >::iterator it = node->children.find(childNode); + if (it != node->children.end()) { + it.value() += child->cost(); + } else { + node->children.insert(childNode, child->cost()); + } + } + + return node; +} + +void DotGraphGenerator::run() +{ + if (!m_file.isOpen()) { + kWarning() << "could not create temp file for writing Dot-graph"; + return; + } + + if (m_canceled) { + return; + } + + kDebug() << "creating new dot file in" << m_file.fileName(); + QTextStream out(&m_file); + + out << "digraph callgraph {\n" + "rankdir = BT;\n"; + if (m_canceled) { + return; + } + + QString parentId; + if (m_snapshot) { + // also show some info about the selected snapshot + parentId = QString::number((qint64) m_snapshot); + const QString label = i18n("snapshot #%1 (taken at %2%4)\\nheap cost: %3", + m_snapshot->number(), m_snapshot->time(), prettyCost(m_snapshot->cost()), + m_timeUnit); + out << '"' << parentId << "\" [shape=box,label=\"" << label << "\",fillcolor=white];\n"; + + m_maxCost = m_snapshot->cost(); + } else if (m_node) { + const TreeLeafItem* topMost = m_node; + while (topMost->parent()) { + topMost = topMost->parent(); + } + m_maxCost = topMost->cost(); + } + + if (m_node) { + QMultiHash nodes; + GraphNode* root = buildGraph(m_node, nodes, m_maxCost); + m_highestCost = 0; + nodeToDot(root, out, parentId, 0); + qDeleteAll(nodes); + } + out << "}\n"; + m_file.flush(); +} + +void DotGraphGenerator::nodeToDot(GraphNode* node, QTextStream& out, const QString& parentId, quint64 cost) +{ + if (m_canceled) { + return; + } + + const QString nodeId = QString::number((qint64) node); + // write edge with annotated cost + if (!parentId.isEmpty()) { + // edge + out << '"' << nodeId << "\" -> \"" << parentId << '"'; + if (cost) { + out << " [label = \"" << prettyCost(cost) << "\"]"; + } + out << ";\n"; + } + + if (node->visited) { + // don't visit children again - the edge is all we need + return; + } + node->visited = true; + + const bool isRoot = m_snapshot && m_snapshot->heapTree() == node->item; + + // first item we find will be the most cost-intensive one + ///TODO this should take accumulated cost into account! + if (m_highestCost < node->accumulatedCost && !isRoot) { + m_costlyGraphvizId = nodeId; + m_highestCost = node->accumulatedCost; + } + + + QString label = getLabel(node->item); + // group nodes with same cost but different label + // but only if they don't have any other outgoing calls, i.e. parents.size() = 1 + bool wasGrouped = false; + while (node && node->children.count() == 1) + { + GraphNode* child = node->children.begin().key(); + if (child->accumulatedCost != node->accumulatedCost || node->parents.size() != 1 || child->belowThresholdCount ) { + break; + } + if (m_canceled) { + return; + } + node = child; + + label += " | " + prettyLabel(node->item->label()); + wasGrouped = true; + } + + QString shape; + if (wasGrouped) { + label = "{" + label + "}"; + // <...> would be an id, escape it + label = label.replace('<', "\\<"); + label = label.replace('>', "\\>"); + shape = "record"; + } else { + shape = "box"; + } + + const QString color = isRoot ? "white" : getColor(node->accumulatedCost, m_maxCost); + out << '"' << nodeId << "\" [shape=" << shape << ",label=\"" << label << "\",fillcolor=\"" << color << "\"];\n"; + if (!node) { + return; + } + + QMultiHash< GraphNode*, quint64 >::const_iterator it = node->children.constBegin(); + while(it != node->children.constEnd()) { + if (m_canceled) { + return; + } + nodeToDot(it.key(), out, nodeId, it.value()); + ++it; + } + // handle below-threshold + if (node->belowThresholdCount) { + // node + const QString btLabel = i18np("in one place below threshold", "in %1 places, all below threshold", node->belowThresholdCount); + out << '"' << nodeId << "-bt\" [shape=box,label=\"" << btLabel + << "\",fillcolor=\"" << getColor(node->belowThresholdCost, m_maxCost) << "\"];\n"; + // edge + out << '"' << nodeId << "-bt\" -> \"" << nodeId << "\" [label =\"" << prettyCost(node->belowThresholdCost) << "\"];\n"; + } +} + +QString DotGraphGenerator::outputFile() const +{ + return m_file.fileName(); +} + +QString DotGraphGenerator::mostCostIntensiveGraphvizId() const +{ + return m_costlyGraphvizId; +} diff --git a/massif-visualizer/visualizer/dotgraphgenerator.h b/massif-visualizer/visualizer/dotgraphgenerator.h new file mode 100644 index 00000000..257d96a3 --- /dev/null +++ b/massif-visualizer/visualizer/dotgraphgenerator.h @@ -0,0 +1,83 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_DOTGRAPHGENERATOR_H +#define MASSIF_DOTGRAPHGENERATOR_H + +#include +#include +#include + +#include "visualizer_export.h" + +namespace Massif { + +class SnapshotItem; +class TreeLeafItem; +struct GraphNode; + +class VISUALIZER_EXPORT DotGraphGenerator : public QThread +{ + Q_OBJECT +public: + /** + * Generates a Dot graph file representing @p snapshot + * and writes it to a temporary file. + */ + DotGraphGenerator(const SnapshotItem* snapshot, const QString& timeUnit, QObject* parent = 0); + /** + * Generates a Dot graph file representing @p node + * and writes it to a temporary file. + */ + DotGraphGenerator(const TreeLeafItem* node, const QString& timeUnit, QObject* parent = 0); + ~DotGraphGenerator(); + + /** + * Stops generating the Dot graph file and deletes the temp file. + */ + void cancel(); + + virtual void run(); + /** + * @return A path to the generated Dot graph file. Path might be empty if errors occurred. + */ + QString outputFile() const; + /** + * @return The GraphViz node ID for the most cost-intensive tree leaf item. + */ + QString mostCostIntensiveGraphvizId() const; + +private: + void nodeToDot(GraphNode* node, QTextStream& out, const QString& parentId = QString(), quint64 cost = 0); + const SnapshotItem* m_snapshot; + const TreeLeafItem* m_node; + KTemporaryFile m_file; + bool m_canceled; + quint64 m_maxCost; + QString m_timeUnit; + QString m_costlyGraphvizId; + quint64 m_highestCost; +}; + +} + +#endif // MASSIF_DOTGRAPHGENERATOR_H diff --git a/massif-visualizer/visualizer/filtereddatatreemodel.cpp b/massif-visualizer/visualizer/filtereddatatreemodel.cpp new file mode 100644 index 00000000..947ad3a0 --- /dev/null +++ b/massif-visualizer/visualizer/filtereddatatreemodel.cpp @@ -0,0 +1,80 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "filtereddatatreemodel.h" +#include "datatreemodel.h" + +using namespace Massif; + +FilteredDataTreeModel::FilteredDataTreeModel(DataTreeModel* parent) + : QSortFilterProxyModel(parent) +{ + setDynamicSortFilter(true); + setSourceModel(parent); + m_timer.setSingleShot(true); + m_timer.setInterval(150); + connect(&m_timer, SIGNAL(timeout()), this, SLOT(timeout())); +} + +void FilteredDataTreeModel::setFilter(const QString& needle) +{ + m_needle = needle; + m_timer.start(); +} + +void FilteredDataTreeModel::timeout() +{ + invalidateFilter(); +} + +bool FilteredDataTreeModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const +{ + if (m_needle.isEmpty()) { + return true; + } + + const QModelIndex& dataIdx = sourceModel()->index(source_row, 0, source_parent); + Q_ASSERT(dataIdx.isValid()); + if (sourceModel()->data(dataIdx, DataTreeModel::RawLabelRole).toString().contains(m_needle, Qt::CaseInsensitive)) { + return true; + } else { + const int rows = sourceModel()->rowCount(dataIdx); + for ( int i = 0; i < rows; ++i ) { + if ( filterAcceptsRow(i, dataIdx) ) { + return true; + } + } + return false; + } +} + +bool FilteredDataTreeModel::filterAcceptsColumn(int, const QModelIndex&) const +{ + return true; +} + +void FilteredDataTreeModel::setSourceModel(QAbstractItemModel* sourceModel) +{ + QSortFilterProxyModel::setSourceModel(sourceModel); +} + +#include "filtereddatatreemodel.moc" diff --git a/massif-visualizer/visualizer/filtereddatatreemodel.h b/massif-visualizer/visualizer/filtereddatatreemodel.h new file mode 100644 index 00000000..8da38fd7 --- /dev/null +++ b/massif-visualizer/visualizer/filtereddatatreemodel.h @@ -0,0 +1,68 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_FILTEREDDATATREEMODEL_H +#define MASSIF_FILTEREDDATATREEMODEL_H + +#include +#include + +#include "visualizer_export.h" + +namespace Massif { + +class DataTreeModel; + +/** + * Filter class for DataTreeModel + */ +class VISUALIZER_EXPORT FilteredDataTreeModel : public QSortFilterProxyModel +{ + Q_OBJECT + +public: + explicit FilteredDataTreeModel(DataTreeModel* parent); + +public slots: + void setFilter(const QString& needle); + +protected: + /// true for any branch that has an item in it that matches m_needle + virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; + /// always true + virtual bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const; + +private slots: + void timeout(); + +private: + /// we don't want that + virtual void setSourceModel(QAbstractItemModel* sourceModel); + + /// search string that should be contained in the data (case insensitively) + QString m_needle; + QTimer m_timer; +}; + +} + +#endif // MASSIF_FILTEREDDATATREEMODEL_H diff --git a/massif-visualizer/visualizer/modelitem.h b/massif-visualizer/visualizer/modelitem.h new file mode 100644 index 00000000..643e6475 --- /dev/null +++ b/massif-visualizer/visualizer/modelitem.h @@ -0,0 +1,40 @@ +/* + This file is part of Massif Visualizer + + Copyright 2014 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_MODEL_ITEM_H +#define MASSIF_MODEL_ITEM_H + +#include +#include + +namespace Massif { + +class TreeLeafItem; +class SnapshotItem; + +typedef QPair ModelItem; + +} + +Q_DECLARE_METATYPE(Massif::ModelItem) + +#endif // MODEL_ITEM_H diff --git a/massif-visualizer/visualizer/totalcostmodel.cpp b/massif-visualizer/visualizer/totalcostmodel.cpp new file mode 100644 index 00000000..f2157982 --- /dev/null +++ b/massif-visualizer/visualizer/totalcostmodel.cpp @@ -0,0 +1,194 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#include "totalcostmodel.h" + +#include "massifdata/filedata.h" +#include "massifdata/snapshotitem.h" +#include "massifdata/treeleafitem.h" +#include "massifdata/util.h" + +#include "KDChartGlobal" +#include "KDChartLineAttributes" + +#include + +#include + +using namespace Massif; + +TotalCostModel::TotalCostModel(QObject* parent): QAbstractTableModel(parent), m_data(0) +{ +} + +TotalCostModel::~TotalCostModel() +{ +} + +void TotalCostModel::setSource(const FileData* data) +{ + if (m_data) { + beginRemoveRows(QModelIndex(), 0, rowCount() - 1); + m_data = 0; + endRemoveRows(); + } + if (data) { + beginInsertRows(QModelIndex(), 0, data->snapshots().size() - 1); + m_data = data; + endInsertRows(); + } +} + +QModelIndex TotalCostModel::peak() const +{ + Q_ASSERT(m_data); + if (!m_data->peak()) { + return QModelIndex(); + } + return index(m_data->snapshots().indexOf(m_data->peak()), 0); +} + +QVariant TotalCostModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + Q_ASSERT(orientation != Qt::Horizontal || section < columnCount()); + if (section == 0 && orientation == Qt::Horizontal) { + if ( role == KDChart::DatasetPenRole ) { + return QPen(Qt::red); + } else if ( role == KDChart::DatasetBrushRole ) { + return QBrush(Qt::red); + } else if ( role == Qt::DisplayRole ) { + return i18n("Total Memory Heap Consumption"); + } + } + return QAbstractItemModel::headerData(section, orientation, role); +} + +QVariant TotalCostModel::data(const QModelIndex& index, int role) const +{ + // FIXME kdchart queries (-1, -1) for empty models + if ( index.row() == -1 || index.column() == -1 ) { +// qWarning() << "TotalCostModel::data: FIXME fix kdchart views to not query model data for invalid indices!"; + return QVariant(); + } + + Q_ASSERT(index.row() >= 0 && index.row() < rowCount(index.parent())); + Q_ASSERT(index.column() >= 0 && index.column() < columnCount(index.parent())); + Q_ASSERT(m_data); + Q_ASSERT(!index.parent().isValid()); + + if ( role == KDChart::LineAttributesRole ) { + static KDChart::LineAttributes attributes; + attributes.setDisplayArea(true); + if (index == m_selection) { + attributes.setTransparency(255); + } else { + attributes.setTransparency(50); + } + return QVariant::fromValue(attributes); + } + if ( role == KDChart::DatasetPenRole ) { + return QPen(Qt::red); + } else if ( role == KDChart::DatasetBrushRole ) { + return QBrush(Qt::red); + } + + if ( role != Qt::DisplayRole && role != Qt::ToolTipRole ) { + return QVariant(); + } + + if ( role == Qt::ToolTipRole ) { + // hack: the ToolTip will only be queried by KDChart and that one uses the + // left index, but we want it to query the right one. but we also need to + // take the very last data set into account to prevent an overflow there + const SnapshotItem* snapshot = m_data->snapshots().at(qMin(index.row() + 1, m_data->snapshots().size() - 1)); + return i18n("Snapshot #%1:\n" + "Heap cost of %2\n" + "Extra heap cost of %3\n" + "Stack cost of %4", + snapshot->number(), prettyCost(snapshot->memHeap()), prettyCost(snapshot->memHeapExtra()), + prettyCost(snapshot->memStacks())); + } + + const SnapshotItem* snapshot = m_data->snapshots().at(index.row()); + if (index.column() == 0) { + return snapshot->time(); + } else { + Q_ASSERT(index.column() == 1); + return snapshot->cost(); + } +} + +int TotalCostModel::columnCount(const QModelIndex&) const +{ + return 2; +} + +int TotalCostModel::rowCount(const QModelIndex& parent) const +{ + if (!m_data) { + return 0; + } + + if (parent.isValid()) { + return 0; + } else { + // snapshot item + return m_data->snapshots().count(); + } +} + +QModelIndex TotalCostModel::indexForSnapshot(const SnapshotItem* snapshot) const +{ + int row = m_data->snapshots().indexOf(const_cast(snapshot)); + if (row == -1) { + return QModelIndex(); + } + return index(row, 0); +} + +QModelIndex TotalCostModel::indexForTreeLeaf(const TreeLeafItem* node) const +{ + Q_UNUSED(node) + return QModelIndex(); +} + +ModelItem TotalCostModel::itemForIndex(const QModelIndex& idx) const +{ + if (!idx.isValid() || idx.parent().isValid() || idx.row() > rowCount() || idx.column() > columnCount()) { + return ModelItem(0, 0); + } + const SnapshotItem* snapshot = m_data->snapshots().at(idx.row()); + return ModelItem(0, snapshot); +} + +QModelIndex TotalCostModel::indexForItem(const ModelItem& item) const +{ + if ((!item.first && !item.second) || item.first) { + return QModelIndex(); + } + return indexForSnapshot(item.second); +} + +void TotalCostModel::setSelection(const QModelIndex& index) +{ + m_selection = index; +} diff --git a/massif-visualizer/visualizer/totalcostmodel.h b/massif-visualizer/visualizer/totalcostmodel.h new file mode 100644 index 00000000..347719e8 --- /dev/null +++ b/massif-visualizer/visualizer/totalcostmodel.h @@ -0,0 +1,95 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef MASSIF_TOTALCOSTMODEL_H +#define MASSIF_TOTALCOSTMODEL_H + +#include + +#include "modelitem.h" + +#include "visualizer_export.h" + +namespace Massif { + +class FileData; +class TreeLeafItem; +class SnapshotItem; + +/** + * A model that gives a tabular access on the costs in a massif output file. + */ +class VISUALIZER_EXPORT TotalCostModel : public QAbstractTableModel +{ +public: + TotalCostModel(QObject* parent = 0); + virtual ~TotalCostModel(); + + /** + * That the source data for this model. + */ + void setSource(const FileData* data); + + /** + * @return Index of the peak dataset. + */ + QModelIndex peak() const; + + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + + /** + * @return Item for given index. At maximum one of the pointers in the pair will be valid. + */ + ModelItem itemForIndex(const QModelIndex& idx) const; + + /** + * @return Index for given item. Only one of the pointers in the pair should be valid. + */ + QModelIndex indexForItem(const ModelItem& item) const; + + /** + * @return Index for given snapshot, or invalid if it's not a detailed snapshot. + */ + QModelIndex indexForSnapshot(const SnapshotItem* snapshot) const; + + /** + * @return Index for given TreeLeafItem, or invalid if it's not covered by this model. + */ + QModelIndex indexForTreeLeaf(const TreeLeafItem* node) const; + + /** + * Select @p index, which changes the graphical representation of its data. + */ + void setSelection(const QModelIndex& index); + +private: + const FileData* m_data; + // selected item + QModelIndex m_selection; +}; + +} + +#endif // MASSIF_TOTALCOSTMODEL_H diff --git a/massif-visualizer/visualizer/visualizer_export.h b/massif-visualizer/visualizer/visualizer_export.h new file mode 100644 index 00000000..59320121 --- /dev/null +++ b/massif-visualizer/visualizer/visualizer_export.h @@ -0,0 +1,37 @@ +/* + This file is part of Massif Visualizer + + Copyright 2010 Milian Wolff + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . +*/ + +#ifndef VISUALIZER_EXPORT_H +#define VISUALIZER_EXPORT_H + +/* needed for KDE_EXPORT macros */ +#include + +#ifndef VISUALIZER_EXPORT +# ifdef MAKE_VISUALIZER_LIB +# define VISUALIZER_EXPORT KDE_EXPORT +# else +# define VISUALIZER_EXPORT KDE_IMPORT +# endif +#endif + +#endif // VISUALIZER_EXPORT_H