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

Reply via email to