[Kde-pim] multiple selection and hitting assert in KMMainWidget::slotMsgPopup

Szymon Tomasz Stefanek pragma at kvirc.net
Sat Dec 13 13:41:33 GMT 2008


On Saturday 13 December 2008, Thomas McGuire wrote:

> Typical KMail crash. The msg was deleted via unGet() behind our back and
> became invalid. Fixed in r896262.

After 4.2 I strongly suggest planning an attack to the KMFolder & KMMessage
part of KMail. This is also a step in the KMail breakdown plan for the akonadi
port.

We must assume that we have not enough work power for doing all this in a 
short period of time so we should plan carefully a sequence of small, 
compatible moves that can be done directly on trunk (and that would
help a lot keeping the branches synchronized) or in small temporary
branches.

Some sketch ideas (please comment, expand, flame on...):

- move the whole storage part into a source subfolder: KMFolder,
  KMMessage and anything that is more low level. This can be done
  in a rather painless trunk move.
  A good idea would be to move it even one level deeper.
  Say subfolder "storage/core".

- Develop a reference counted abstraction layer for the storage
  (and place it in subfolder "storage"):

	- Wrap KMFolder in a shared reference counted KMail::Folder class.

	- Wrap KMMessage and KMMsgBase (both!) in a KMail::Message object.
	  The Message object should be shared, reference counted and 
	  keep a reference to the folder, in some way.
	  This will be probably a tricky part since complex (and sometimes
	  weird) things happen in the current source at this level. Support
	  from experienced KMail developers will be probably needed.

	This step can be possibly done without touching much stuff
	in the existing source: it would be just a new layer wrapping some classes.

- Move all the outside components to use the layer above instead of
  the original storage classes. This will be probably a large work
  to be splitted in small chunks for every subcomponent that needs
  to be ported.

- When everything of the above is done (and it will take its time)
  think about attaching the akonadi storage layer in place of (or
  in parallel to?) the KMFolder / KMMessage machinery...
  (subfolder "storage/akonadi")


Szymon Tomasz Stefanek
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list