GSoC 2012 Multithreading ajreddy

From Scribus Wiki
(Redirected from Gsoc2012multithreading)
Jump to navigation Jump to search

GSoC 2012 Project : Rendering and Multithreading


Short description:

Scribus is a great DTP application which is used to print many magazines and books. And a lot of these books contain many images. But loading of books/document for the first time takes much time. Reloading time of documents takes reasonable time (It gets the images from the cache). Moreover toggle from display to other modes is also slow. The idea of this project is to prepare preview images using multithreading. The idea is to fill the cache by worker threads and let the render thread use a dummy or previous version of the image.

Success Stories:

Problem Description :

As the loading of images and their conversion to low resolution consumes a lot of time, the image cache helps to massively speed up the loading of images that have been previously loaded under the same conditions. It will also speed up operations like undoing or redoing image effects.The image cache was designed to be accessible simultaneously by multiple instances of Scribus. So we can implement generating image previews with MultiThreading.

  • A worker thread will be written which generates the preview for the images using QtConcurrent to make use of multicore Cpu's.
  • A render thread will be written which uses a dummy or previous version of image until cache is ready.

Implementation Details :

I sincerely apologize for this. Actually I started applying(preparation) for gsoc very late.I will update this in one day.

Contingency :

This project might be completed before gsoc. Then i will start implementing the following features using multithreading

1) DocumentChecker (specialy for checking for issues in text frames)

2) output/printing

3) image effects

Remaining things i will try to complete after gsoc one by one.

Timeline :

My college exams get over by the last week of April. And i will start working on the Project from first week of May.

GSoC is a full time work and i am going to spend atleast 35 hr a week for the project.

Till May 20 : Go through the scribus code and get familiar with it and prepare rough plan(code) for the project.

Official GSoC start date : May 21

May 21 - May 31 : Implementing a render thread to fetch images from cache, uses dummy or previous image until it is not ready

June 1 - June 25 : Implementing worker thread to generate previes

June 26 - July 8 : Extensive testing and code improvements

July 9 : Mid Term Evaluation begins.

July 10 - August 3 : Multithreading for Image effects

August 3 onwards : Spare time for any difficulties, Integration into Scribus Trunk.

August 13 - Suggested Pencils down date.

After GSOC :

I am highly motivated and interested in working for Scribus even after GSoC. I will continue working with the Scribus team, fixing bugs, and also on some of the specific projects i am interested in.

   Speeding up Scribus 
   Using Multithreading.
   I would like to use Qtconcurrent for the multithreading.    
   * relayouting whole document after doc->invalidateAll 
   * relayouting visible area in low zoom level (multiple pages visible) 
   * search&replace for whole document & updating markers 

Biography :

I am Janardhan Reddy, second year Undergraduate Student in Computer Science from Vijayawada, India.

I study at Indian Institute of Technology Madras, one of the most prestigious institutions in the Engineering field in India.

I have a sound knowledge and experience in C++ ,kde and Qt. I have submitted 8-10 patches in dolphin in kde and got them committed.

I have already ported kipi plugins in kde to use threadweaver (kde counterpart of QtConcurrent) for parallel processing. I have also implemented a base class through which kipi plugins can take advantage of multi core cpu's. (All one needs to do is to subclass this class)

I have also contributed for Yakuake

Contact Information :

Student : Janardhan Reddy A

Email ID :

Freenode irc nick : Janardhan

Location : Vijayawada, India ( UTC + 530 )