[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kate
From: Christoph Cullmann <cullmann () kde ! org>
Date: 2010-08-23 19:59:45
Message-ID: 20100823200233.B3A0AAC857 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1167157 by cullmann:
less locks, now that no longer allowed to be accessed from outside gui thread, which NEVER worked correct
M +0 -1 completion/katecompletionwidget.cpp
M +0 -1 document/katedocument.cpp
M +3 -172 document/kateedit.cpp
M +0 -44 document/kateedit.h
M +0 -1 spellcheck/ontheflycheck.cpp
M +0 -1 spellcheck/spellcheck.cpp
M +0 -2 spellcheck/spellingmenu.cpp
M +0 -1 view/kateview.cpp
M +0 -2 view/kateviewinternal.cpp
--- trunk/KDE/kdelibs/kate/completion/katecompletionwidget.cpp #1167156:1167157
@@ -32,7 +32,6 @@
#include <QtGui/QPushButton>
#include <QtGui/QAbstractScrollArea>
#include <QtGui/QScrollBar>
-#include <QtCore/QMutex>
#include <QtCore/QScopedPointer>
#include <kicon.h>
--- trunk/KDE/kdelibs/kate/document/katedocument.cpp #1167156:1167157
@@ -87,7 +87,6 @@
#include <QtCore/QTextStream>
#include <QtCore/QTextCodec>
#include <QtCore/QMap>
-#include <QtCore/QMutex>
//END includes
--- trunk/KDE/kdelibs/kate/document/kateedit.cpp #1167156:1167157
@@ -25,7 +25,6 @@
, m_oldText(oldText)
, m_newRange(newRange)
, m_newText(newText)
- , m_revisionTokenCounter(0)
{
m_translate = (m_newRange.end() - m_newRange.start()) - (m_oldRange.end() - m_oldRange.start());
}
@@ -44,65 +43,11 @@
return m_oldRange;
}
-QStringList KateEditInfo::oldText( const KTextEditor::Range & range ) const
-{
- QStringList ret;
- for (int i = range.start().line(); i <= range.end().line(); ++i) {
- QString original = m_oldText[range.start().line() - m_oldRange.start().line()];
-
- int startCol = 0, length = -1;
- if (range.start().line() == m_oldRange.start().line())
- startCol = range.start().column() - m_oldRange.start().column();
- if (range.end().line() == m_oldRange.end().line())
- length = range.end().column() - startCol;
-
- ret << original.mid(startCol, length);
- }
- return ret;
-}
-
-const QStringList & KateEditInfo::oldText( ) const
-{
- return m_oldText;
-}
-
const KTextEditor::Range & KateEditInfo::newRange( ) const
{
return m_newRange;
}
-QStringList KateEditInfo::newText( const KTextEditor::Range & range ) const
-{
- QStringList ret;
- for (int i = range.start().line(); i <= range.end().line(); ++i) {
- QString original = m_newText[range.start().line() - m_newRange.start().line()];
-
- int startCol = 0, length = -1;
- if (range.start().line() == m_newRange.start().line())
- startCol = range.start().column() - m_oldRange.start().column();
- if (range.end().line() == m_newRange.end().line())
- length = range.end().column() - startCol;
-
- ret << original.mid(startCol, length);
- }
- return ret;
-}
-
-bool KateEditInfo::isReferenced() const
-{
- return m_revisionTokenCounter;
-}
-
-void KateEditInfo::dereferenceRevision()
-{
- --m_revisionTokenCounter;
-}
-
-void KateEditInfo::referenceRevision()
-{
- ++m_revisionTokenCounter;
-}
-
const QStringList & KateEditInfo::newText() const
{
return m_newText;
@@ -115,133 +60,19 @@
KateEditHistory::KateEditHistory( KateDocument * doc )
: QObject(doc)
- , m_mutex (QMutex::Recursive)
- , m_revision(0)
{
}
KateEditHistory::~KateEditHistory()
{
- // just delete all edits, referenced or not
- qDeleteAll (m_edits);
}
-int KateEditHistory::revision()
-{
- // protect the edit history
- QMutexLocker locker (&m_mutex);
-
- // just take the last edit
- if (!m_edits.isEmpty()) {
- KateEditInfo* edit = m_edits.last();
- if (!edit->isReferenced())
- m_revisions.insert(++m_revision, edit);
-
- edit->referenceRevision();
- return m_revision;
- }
-
- // no edits, no revision
- return 0;
-}
-
-void KateEditHistory::releaseRevision(int revision)
-{
- // protect the edit history
- QMutexLocker locker (&m_mutex);
-
- // search for revision, if not found, back out
- QMap<int, KateEditInfo*>::iterator it = m_revisions.find (revision);
- if (it == m_revisions.end())
- return;
-
- // dereference the revision
- KateEditInfo *edit = *it;
- edit->dereferenceRevision();
- if (!edit->isReferenced()) {
- // no longer refed
- m_revisions.remove(revision);
-
- // clean up memory, try to delete any unrefed revisions
-
- // delete unrefed
- int deletedEdits = 0;
- for (int i = 0; i < m_edits.size(); ++i) {
- if (m_edits[i]->isReferenced())
- break;
-
- // already delete edit
- delete m_edits[i];
-
- // remember deleted count
- ++deletedEdits;
- }
-
- // remove unrefed from the list now, already deleted
- if (deletedEdits > 0)
- m_edits.erase (m_edits.begin(), m_edits.begin() + deletedEdits);
- }
-}
-
void KateEditHistory::doEdit (KateEditInfo* edit) {
- {
- QMutexLocker locker (&m_mutex);
-
- // here we go, don't be a memory pirate
- // if we atm only have one edit and it is not referenced, just delete it
- // in other cases, the releaseRevision will clean up
- if (m_edits.size() == 1 && !m_edits.last()->isReferenced()) {
- delete m_edits.takeLast ();
- }
-
- // append the new edit in any case
- m_edits.append(edit);
- }
-
+ // emit it
emit editDone(edit);
-}
-QList<KateEditInfo*> KateEditHistory::editsBetweenRevisions(int from, int to) const
-{
- QList<KateEditInfo*> ret;
-
- if (from == -1)
- return ret;
-
- QMutexLocker locker (&m_mutex);
-
- if (m_edits.isEmpty())
- return ret;
-
- if (to != -1) {
- Q_ASSERT(from <= to);
- Q_ASSERT(m_revisions.contains(to));
+ // kill it
+ delete edit;
}
- int fromIndex = 0;
- if (from != 0) {
- Q_ASSERT(m_revisions.contains(from));
- KateEditInfo* fromEdit = m_revisions[from];
- Q_ASSERT(fromEdit);
-
- fromIndex = m_edits.indexOf(fromEdit);
- if(fromIndex != -1) {
- //Since the "from" edit already known, we need to start one behind it
- ++fromIndex;
- }
- }
-
- KateEditInfo* toEdit = to == -1 ? m_edits.last() : m_revisions[to];
- Q_ASSERT(toEdit);
-
- int toIndex = m_edits.indexOf(toEdit);
- Q_ASSERT(fromIndex != -1);
- Q_ASSERT(toIndex != -1);
-
- for (int i = fromIndex; i <= toIndex; ++i)
- ret.append(m_edits.at(i));
-
- return ret;
-}
-
#include "kateedit.moc"
--- trunk/KDE/kdelibs/kate/document/kateedit.h #1167156:1167157
@@ -21,8 +21,6 @@
#include <QtCore/QStringList>
#include <QtCore/QObject>
-#include <QtCore/QMap>
-#include <QtCore/QMutex>
#include <ktexteditor/range.h>
@@ -98,29 +96,11 @@
const KTextEditor::Range& oldRange() const;
/**
- * Returns the text which occupied \p range before this edit took place.
- * \sa oldText()
- */
- virtual QStringList oldText(const KTextEditor::Range& range) const;
-
- /**
- * Returns all of the text that was in place before the edit occurred.
- * \sa oldText(const KTextEditor::Range&) const
- */
- const QStringList& oldText() const;
-
- /**
* Returns the range of text occupied by the edit region after the edit took place.
*/
const KTextEditor::Range& newRange() const;
/**
- * Returns the text which occupies \p range after this edit took place.
- * \sa newText()
- */
- virtual QStringList newText(const KTextEditor::Range& range) const;
-
- /**
* Returns the text which occupies the edit region now that the edit
* has taken place.
* \sa newText(const KTextEditor::Range&) const
@@ -129,10 +109,6 @@
inline const KTextEditor::Cursor& translate() const { return m_translate; }
- void referenceRevision();
- void dereferenceRevision();
- bool isReferenced() const;
-
private:
Kate::EditSource m_editSource;
KTextEditor::Range m_oldRange;
@@ -140,13 +116,10 @@
KTextEditor::Range m_newRange;
QStringList m_newText;
KTextEditor::Cursor m_translate;
- int m_revisionTokenCounter;
};
/**
* Manages edit history in a document.
- *
- * @warning Smart-lock must be held when using
*/
class KateEditHistory : public QObject
{
@@ -156,27 +129,10 @@
explicit KateEditHistory(KateDocument* doc);
virtual ~KateEditHistory();
- int revision();
- void releaseRevision(int revision);
-
- QList<KateEditInfo*> editsBetweenRevisions(int from, int to = -1) const;
-
void doEdit(KateEditInfo* edit);
- QMutex *mutex () { return &m_mutex; }
-
Q_SIGNALS:
void editDone(KateEditInfo* edit);
-
- private:
- // mutex to protect the edit history
- mutable QMutex m_mutex;
-
- // current revision
- int m_revision;
-
- QList<KateEditInfo*> m_edits;
- QMap<int, KateEditInfo*> m_revisions;
};
#endif
--- trunk/KDE/kdelibs/kate/spellcheck/ontheflycheck.cpp #1167156:1167157
@@ -25,7 +25,6 @@
#include "ontheflycheck.h"
-#include <QMutex>
#include <QTimer>
#include "kateconfig.h"
--- trunk/KDE/kdelibs/kate/spellcheck/spellcheck.cpp #1167156:1167157
@@ -27,7 +27,6 @@
#include <QHash>
#include <QtAlgorithms>
#include <QTimer>
-#include <QThread>
#include <kactioncollection.h>
#include <ktexteditor/view.h>
--- trunk/KDE/kdelibs/kate/spellcheck/spellingmenu.cpp #1167156:1167157
@@ -21,8 +21,6 @@
#include "spellingmenu.h"
#include "spellingmenu.moc"
-#include <QMutexLocker>
-
#include "katedocument.h"
#include "kateglobal.h"
#include "kateview.h"
--- trunk/KDE/kdelibs/kate/view/kateview.cpp #1167156:1167157
@@ -90,7 +90,6 @@
#include <QtGui/QKeyEvent>
#include <QtGui/QLayout>
#include <QtCore/QMimeData>
-#include <QtCore/QMutexLocker>
//#define VIEW_RANGE_DEBUG
--- trunk/KDE/kdelibs/kate/view/kateviewinternal.cpp #1167156:1167157
@@ -56,8 +56,6 @@
#include <QtGui/QPixmap>
#include <QtGui/QKeyEvent>
#include <QtCore/QStack>
-#include <QtCore/QMutex>
-#include <QtCore/QThread>
static const bool debugPainting = false;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic