Revision: 12622 http://harbour-project.svn.sourceforge.net/harbour-project/?rev=12622&view=rev Author: vouchcac Date: 2009-09-27 20:29:12 +0000 (Sun, 27 Sep 2009)
Log Message: ----------- 2009-09-27 12:58 UTC-0800 Pritpal Bedi (prit...@vouchcac.com) * contrib/hbqt/generator/hbqtgen.prg ! Modified TO implement destructors IN a different way. * contrib/hbqt/qth/QAbstractItemModel.qth + Added more CLASS members. * contrib/hbqt/hbqt.ch * contrib/hbqt/hbqt.h * contrib/hbqt/hbqt_slots.cpp * contrib/hbqt/hbqt_slots.h * contrib/hbqt/moc_slots.cpp + Added more members plus re-worked event management to support multi-threads and multi-windows in a different perspective. It is an effort to locate where Harbour's Qt implementation is buggy with respect to ever increasing memory usage plus Qt's Paint Engine which appears to be dependant on thread's idle time. [ This is the way I preceive this fact ] * contrib/hbqt/QAbstractButton.cpp * contrib/hbqt/QAbstractItemModel.cpp * contrib/hbqt/QAbstractItemView.cpp * contrib/hbqt/QAbstractListModel.cpp * contrib/hbqt/QAbstractScrollArea.cpp * contrib/hbqt/QAbstractSlider.cpp * contrib/hbqt/QAbstractSpinBox.cpp * contrib/hbqt/QAbstractTableModel.cpp * contrib/hbqt/QAction.cpp * contrib/hbqt/QApplication.cpp * contrib/hbqt/QBitmap.cpp * contrib/hbqt/QBoxLayout.cpp * contrib/hbqt/QBrush.cpp * contrib/hbqt/QButtonGroup.cpp * contrib/hbqt/QCalendarWidget.cpp * contrib/hbqt/QColor.cpp * contrib/hbqt/QColorDialog.cpp * contrib/hbqt/QComboBox.cpp * contrib/hbqt/QCoreApplication.cpp * contrib/hbqt/QCursor.cpp * contrib/hbqt/QDateTime.cpp * contrib/hbqt/QDesktopWidget.cpp * contrib/hbqt/QDial.cpp * contrib/hbqt/QDialog.cpp * contrib/hbqt/QDir.cpp * contrib/hbqt/QDirModel.cpp * contrib/hbqt/QDockWidget.cpp * contrib/hbqt/QDragMoveEvent.cpp * contrib/hbqt/QErrorMessage.cpp * contrib/hbqt/QEvent.cpp * contrib/hbqt/QEventLoop.cpp * contrib/hbqt/QFileDialog.cpp * contrib/hbqt/QFileSystemModel.cpp * contrib/hbqt/QFocusFrame.cpp * contrib/hbqt/QFont.cpp * contrib/hbqt/QFontComboBox.cpp * contrib/hbqt/QFontInfo.cpp * contrib/hbqt/QFontMetrics.cpp * contrib/hbqt/QFontMetricsF.cpp * contrib/hbqt/QFormLayout.cpp * contrib/hbqt/QFrame.cpp * contrib/hbqt/QFtp.cpp * contrib/hbqt/QGridLayout.cpp * contrib/hbqt/QGroupBox.cpp * contrib/hbqt/QHBoxLayout.cpp * contrib/hbqt/QHeaderView.cpp * contrib/hbqt/QHttp.cpp * contrib/hbqt/QIcon.cpp * contrib/hbqt/QImage.cpp * contrib/hbqt/QImageReader.cpp * contrib/hbqt/QImageWriter.cpp * contrib/hbqt/QInputDialog.cpp * contrib/hbqt/QIODevice.cpp * contrib/hbqt/QKeyEvent.cpp * contrib/hbqt/QKeySequence.cpp * contrib/hbqt/QLabel.cpp * contrib/hbqt/QLayoutItem.cpp * contrib/hbqt/QLCDNumber.cpp * contrib/hbqt/QLineEdit.cpp * contrib/hbqt/QList.cpp * contrib/hbqt/QListView.cpp * contrib/hbqt/QListWidget.cpp * contrib/hbqt/QListWidgetItem.cpp * contrib/hbqt/QMainWindow.cpp * contrib/hbqt/QMenu.cpp * contrib/hbqt/QMenuBar.cpp * contrib/hbqt/QMessageBox.cpp * contrib/hbqt/QModelIndex.cpp * contrib/hbqt/QMouseEvent.cpp * contrib/hbqt/QMoveEvent.cpp * contrib/hbqt/QObject.cpp * contrib/hbqt/QPaintDevice.cpp * contrib/hbqt/QPainter.cpp * contrib/hbqt/QPalette.cpp * contrib/hbqt/QPen.cpp * contrib/hbqt/QPicture.cpp * contrib/hbqt/QPixmap.cpp * contrib/hbqt/QPoint.cpp * contrib/hbqt/QPrintDialog.cpp * contrib/hbqt/QPrintEngine.cpp * contrib/hbqt/QPrinter.cpp * contrib/hbqt/QPrintPreviewDialog.cpp * contrib/hbqt/QProcess.cpp * contrib/hbqt/QProgressDialog.cpp * contrib/hbqt/QPushButton.cpp * contrib/hbqt/QRect.cpp * contrib/hbqt/QRectF.cpp * contrib/hbqt/QRegion.cpp * contrib/hbqt/QResource.cpp * contrib/hbqt/QScrollArea.cpp * contrib/hbqt/QScrollBar.cpp * contrib/hbqt/QSignalMapper.cpp * contrib/hbqt/QSize.cpp * contrib/hbqt/QSizeF.cpp * contrib/hbqt/QSizeGrip.cpp * contrib/hbqt/QSlider.cpp * contrib/hbqt/QSound.cpp * contrib/hbqt/QSplashScreen.cpp * contrib/hbqt/QSplitter.cpp * contrib/hbqt/QStandardItem.cpp * contrib/hbqt/QStandardItemModel.cpp * contrib/hbqt/QStatusBar.cpp * contrib/hbqt/QStyle.cpp * contrib/hbqt/QStyledItemDelegate.cpp * contrib/hbqt/QStyleOption.cpp * contrib/hbqt/QSystemTrayIcon.cpp * contrib/hbqt/QTabBar.cpp * contrib/hbqt/QTableView.cpp * contrib/hbqt/QTableWidget.cpp * contrib/hbqt/QTableWidgetItem.cpp * contrib/hbqt/QTabWidget.cpp * contrib/hbqt/QTextBoundaryFinder.cpp * contrib/hbqt/QTextCursor.cpp * contrib/hbqt/QTextDecoder.cpp * contrib/hbqt/QTextDocument.cpp * contrib/hbqt/QTextDocumentFragment.cpp * contrib/hbqt/QTextDocumentWriter.cpp * contrib/hbqt/QTextEdit.cpp * contrib/hbqt/QTextEncoder.cpp * contrib/hbqt/QTextFormat.cpp * contrib/hbqt/QTextFrame.cpp * contrib/hbqt/QTextLayout.cpp * contrib/hbqt/QTextStream.cpp * contrib/hbqt/QTimer.cpp * contrib/hbqt/QToolBar.cpp * contrib/hbqt/QToolBox.cpp * contrib/hbqt/QToolButton.cpp * contrib/hbqt/QTreeView.cpp * contrib/hbqt/QTreeWidget.cpp * contrib/hbqt/QTreeWidgetItem.cpp * contrib/hbqt/QUrl.cpp * contrib/hbqt/QVariant.cpp * contrib/hbqt/QVBoxLayout.cpp * contrib/hbqt/QWebHistoryInterface.cpp * contrib/hbqt/QWebHistoryItem.cpp * contrib/hbqt/QWebHitTestResult.cpp * contrib/hbqt/QWebPage.cpp * contrib/hbqt/QWebPluginFactory.cpp * contrib/hbqt/QWebSecurityOrigin.cpp * contrib/hbqt/QWebView.cpp * contrib/hbqt/QWidget.cpp * contrib/hbqt/QWidgetAction.cpp * contrib/hbqt/QWindowsStyle.cpp * contrib/hbqt/QWindowsXPStyle.cpp * contrib/hbqt/QWizard.cpp * contrib/hbqt/TQAbstractItemModel.prg ! Result of change in implemention of destructors in hbqtgen.prg. [ In this commit I had concentrated on two pit-falls which may certainly prevent Qt's efficacy in Habour applications: 1. Ever-growing memory usage. 2. GPF in multi-threaded multi-windows Though I have tried my level best to pin-point where memory usage keeps up growing, I could not find anything worth control. I changed the way destructors were implemented before, but that also seems to be insufficent. But as we have better control over the events, some of you will be able to locate what exactly is the problem. GPF in multi-threaded multi-window scenario is caused by PAINT event which produces GPF is CPU is not released momentarily for that thread. So I inserted hb_idleSleep( 0.2 ) in the code where PAINT event is about to be returning, and the GPF went away. But this insertion has a greater damaging effect that it slows down the application considerably as with each single keystroke, appln becomes idle for that much period. I have guarded this under QT_EXECUTE_IN_THREADS constant for now. If you want to play with this feature than compile HBQT with it and then open <Dialogs><One more instance> menu option. Do not bother about how slow appln executes but simply open as mamny dialogs as you want and navigate different components. NOTE: you may require to increase nMilliSeconds in hb_idleSleep( 0.2 ) from 0.2 to 0.5 as this value is heavily CPU dependant. Hope someone will be able to locate exact fixes to above two issues. ] Modified Paths: -------------- trunk/harbour/ChangeLog trunk/harbour/contrib/hbqt/QAbstractButton.cpp trunk/harbour/contrib/hbqt/QAbstractItemModel.cpp trunk/harbour/contrib/hbqt/QAbstractItemView.cpp trunk/harbour/contrib/hbqt/QAbstractListModel.cpp trunk/harbour/contrib/hbqt/QAbstractScrollArea.cpp trunk/harbour/contrib/hbqt/QAbstractSlider.cpp trunk/harbour/contrib/hbqt/QAbstractSpinBox.cpp trunk/harbour/contrib/hbqt/QAbstractTableModel.cpp trunk/harbour/contrib/hbqt/QAction.cpp trunk/harbour/contrib/hbqt/QApplication.cpp trunk/harbour/contrib/hbqt/QBitmap.cpp trunk/harbour/contrib/hbqt/QBoxLayout.cpp trunk/harbour/contrib/hbqt/QBrush.cpp trunk/harbour/contrib/hbqt/QButtonGroup.cpp trunk/harbour/contrib/hbqt/QCalendarWidget.cpp trunk/harbour/contrib/hbqt/QColor.cpp trunk/harbour/contrib/hbqt/QColorDialog.cpp trunk/harbour/contrib/hbqt/QComboBox.cpp trunk/harbour/contrib/hbqt/QCoreApplication.cpp trunk/harbour/contrib/hbqt/QCursor.cpp trunk/harbour/contrib/hbqt/QDateTime.cpp trunk/harbour/contrib/hbqt/QDesktopWidget.cpp trunk/harbour/contrib/hbqt/QDial.cpp trunk/harbour/contrib/hbqt/QDialog.cpp trunk/harbour/contrib/hbqt/QDir.cpp trunk/harbour/contrib/hbqt/QDirModel.cpp trunk/harbour/contrib/hbqt/QDockWidget.cpp trunk/harbour/contrib/hbqt/QDragMoveEvent.cpp trunk/harbour/contrib/hbqt/QErrorMessage.cpp trunk/harbour/contrib/hbqt/QEvent.cpp trunk/harbour/contrib/hbqt/QEventLoop.cpp trunk/harbour/contrib/hbqt/QFileDialog.cpp trunk/harbour/contrib/hbqt/QFileSystemModel.cpp trunk/harbour/contrib/hbqt/QFocusFrame.cpp trunk/harbour/contrib/hbqt/QFont.cpp trunk/harbour/contrib/hbqt/QFontComboBox.cpp trunk/harbour/contrib/hbqt/QFontInfo.cpp trunk/harbour/contrib/hbqt/QFontMetrics.cpp trunk/harbour/contrib/hbqt/QFontMetricsF.cpp trunk/harbour/contrib/hbqt/QFormLayout.cpp trunk/harbour/contrib/hbqt/QFrame.cpp trunk/harbour/contrib/hbqt/QFtp.cpp trunk/harbour/contrib/hbqt/QGridLayout.cpp trunk/harbour/contrib/hbqt/QGroupBox.cpp trunk/harbour/contrib/hbqt/QHBoxLayout.cpp trunk/harbour/contrib/hbqt/QHeaderView.cpp trunk/harbour/contrib/hbqt/QHttp.cpp trunk/harbour/contrib/hbqt/QIODevice.cpp trunk/harbour/contrib/hbqt/QIcon.cpp trunk/harbour/contrib/hbqt/QImage.cpp trunk/harbour/contrib/hbqt/QImageReader.cpp trunk/harbour/contrib/hbqt/QImageWriter.cpp trunk/harbour/contrib/hbqt/QInputDialog.cpp trunk/harbour/contrib/hbqt/QKeyEvent.cpp trunk/harbour/contrib/hbqt/QKeySequence.cpp trunk/harbour/contrib/hbqt/QLCDNumber.cpp trunk/harbour/contrib/hbqt/QLabel.cpp trunk/harbour/contrib/hbqt/QLayoutItem.cpp trunk/harbour/contrib/hbqt/QLineEdit.cpp trunk/harbour/contrib/hbqt/QList.cpp trunk/harbour/contrib/hbqt/QListView.cpp trunk/harbour/contrib/hbqt/QListWidget.cpp trunk/harbour/contrib/hbqt/QListWidgetItem.cpp trunk/harbour/contrib/hbqt/QMainWindow.cpp trunk/harbour/contrib/hbqt/QMenu.cpp trunk/harbour/contrib/hbqt/QMenuBar.cpp trunk/harbour/contrib/hbqt/QMessageBox.cpp trunk/harbour/contrib/hbqt/QModelIndex.cpp trunk/harbour/contrib/hbqt/QMouseEvent.cpp trunk/harbour/contrib/hbqt/QMoveEvent.cpp trunk/harbour/contrib/hbqt/QObject.cpp trunk/harbour/contrib/hbqt/QPaintDevice.cpp trunk/harbour/contrib/hbqt/QPainter.cpp trunk/harbour/contrib/hbqt/QPalette.cpp trunk/harbour/contrib/hbqt/QPen.cpp trunk/harbour/contrib/hbqt/QPicture.cpp trunk/harbour/contrib/hbqt/QPixmap.cpp trunk/harbour/contrib/hbqt/QPoint.cpp trunk/harbour/contrib/hbqt/QPrintDialog.cpp trunk/harbour/contrib/hbqt/QPrintEngine.cpp trunk/harbour/contrib/hbqt/QPrintPreviewDialog.cpp trunk/harbour/contrib/hbqt/QPrinter.cpp trunk/harbour/contrib/hbqt/QProcess.cpp trunk/harbour/contrib/hbqt/QProgressDialog.cpp trunk/harbour/contrib/hbqt/QPushButton.cpp trunk/harbour/contrib/hbqt/QRect.cpp trunk/harbour/contrib/hbqt/QRectF.cpp trunk/harbour/contrib/hbqt/QRegion.cpp trunk/harbour/contrib/hbqt/QResource.cpp trunk/harbour/contrib/hbqt/QScrollArea.cpp trunk/harbour/contrib/hbqt/QScrollBar.cpp trunk/harbour/contrib/hbqt/QSignalMapper.cpp trunk/harbour/contrib/hbqt/QSize.cpp trunk/harbour/contrib/hbqt/QSizeF.cpp trunk/harbour/contrib/hbqt/QSizeGrip.cpp trunk/harbour/contrib/hbqt/QSlider.cpp trunk/harbour/contrib/hbqt/QSound.cpp trunk/harbour/contrib/hbqt/QSplashScreen.cpp trunk/harbour/contrib/hbqt/QSplitter.cpp trunk/harbour/contrib/hbqt/QStandardItem.cpp trunk/harbour/contrib/hbqt/QStandardItemModel.cpp trunk/harbour/contrib/hbqt/QStatusBar.cpp trunk/harbour/contrib/hbqt/QStyle.cpp trunk/harbour/contrib/hbqt/QStyleOption.cpp trunk/harbour/contrib/hbqt/QStyledItemDelegate.cpp trunk/harbour/contrib/hbqt/QSystemTrayIcon.cpp trunk/harbour/contrib/hbqt/QTabBar.cpp trunk/harbour/contrib/hbqt/QTabWidget.cpp trunk/harbour/contrib/hbqt/QTableView.cpp trunk/harbour/contrib/hbqt/QTableWidget.cpp trunk/harbour/contrib/hbqt/QTableWidgetItem.cpp trunk/harbour/contrib/hbqt/QTextBoundaryFinder.cpp trunk/harbour/contrib/hbqt/QTextCursor.cpp trunk/harbour/contrib/hbqt/QTextDecoder.cpp trunk/harbour/contrib/hbqt/QTextDocument.cpp trunk/harbour/contrib/hbqt/QTextDocumentFragment.cpp trunk/harbour/contrib/hbqt/QTextDocumentWriter.cpp trunk/harbour/contrib/hbqt/QTextEdit.cpp trunk/harbour/contrib/hbqt/QTextEncoder.cpp trunk/harbour/contrib/hbqt/QTextFormat.cpp trunk/harbour/contrib/hbqt/QTextFrame.cpp trunk/harbour/contrib/hbqt/QTextLayout.cpp trunk/harbour/contrib/hbqt/QTextStream.cpp trunk/harbour/contrib/hbqt/QTimer.cpp trunk/harbour/contrib/hbqt/QToolBar.cpp trunk/harbour/contrib/hbqt/QToolBox.cpp trunk/harbour/contrib/hbqt/QToolButton.cpp trunk/harbour/contrib/hbqt/QTreeView.cpp trunk/harbour/contrib/hbqt/QTreeWidget.cpp trunk/harbour/contrib/hbqt/QTreeWidgetItem.cpp trunk/harbour/contrib/hbqt/QUrl.cpp trunk/harbour/contrib/hbqt/QVBoxLayout.cpp trunk/harbour/contrib/hbqt/QVariant.cpp trunk/harbour/contrib/hbqt/QWebHistoryInterface.cpp trunk/harbour/contrib/hbqt/QWebHistoryItem.cpp trunk/harbour/contrib/hbqt/QWebHitTestResult.cpp trunk/harbour/contrib/hbqt/QWebPage.cpp trunk/harbour/contrib/hbqt/QWebPluginFactory.cpp trunk/harbour/contrib/hbqt/QWebSecurityOrigin.cpp trunk/harbour/contrib/hbqt/QWebView.cpp trunk/harbour/contrib/hbqt/QWidget.cpp trunk/harbour/contrib/hbqt/QWidgetAction.cpp trunk/harbour/contrib/hbqt/QWindowsStyle.cpp trunk/harbour/contrib/hbqt/QWindowsXPStyle.cpp trunk/harbour/contrib/hbqt/QWizard.cpp trunk/harbour/contrib/hbqt/TQAbstractItemModel.prg trunk/harbour/contrib/hbqt/generator/hbqtgen.prg trunk/harbour/contrib/hbqt/hbqt.ch trunk/harbour/contrib/hbqt/hbqt.h trunk/harbour/contrib/hbqt/hbqt_slots.cpp trunk/harbour/contrib/hbqt/hbqt_slots.h trunk/harbour/contrib/hbqt/moc_slots.cpp trunk/harbour/contrib/hbqt/qth/QAbstractItemModel.qth This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour