← Back to team overview

linuxdcpp-team team mailing list archive

[Bug 1069493] [NEW] Better resource optimization

 

Public bug reported:

This is actually not a bug, but an improvement suggestion.
Anyway, so far, dc++ uses MDI interface to display multiple child windows (search, file lists, hubs, pms) inside one main window. This is all ok for a low number of child windows opened.
When you have any kind of administrative need to check a lot of user's file lists or to have a lot of hubs/pms opened or similar cases, when you have a need for a lot of multiple child windows, then you are often in a trouble of dc++ freezing, due to the resources (GDI objects mostly) starvation, which windows usually limits to some "reasonable" value. Not to mention that dc++ slows down a lot and working with it, when many child windows are opened, is very difficult and consumes a lot of memory.

There is a very simple improvement technique for this, which may improve
dc++ to scale far better for hundreds or thousands of opened child
windows. The idea is not to open a single MDI child window for each
object (search, pm, mainchat/hub, file list) that we need. Instead, we
can pre-created 4 default MDI child windows, one for each type of object
and when a user switches to another object, we simply switch to one of 4
pre-created child windows, depending on the type of that object only.
This means that all the search objects/windows could be displayed using
only 1 physical MDI window, by simply refreshing the content of that
window, depending on the content of the search object.

For more clarity, here is a screenshot to better describe all this.

Shortly, instead of creating a new MDI child window for each new object
needed, we could just re-use a pre-created MDI child window for that
type of object and repaint/refresh its content, based on the content of
our object.

This way no more than 4 MDI child windows would be needed for 4 basic
objects: search results, private chat, main chat and file list, so the
consumption of system resources (GDI objects) would be the optimal.

** Affects: dcplusplus
     Importance: Undecided
         Status: New


** Tags: child gdi mdi objects optimization resources windows

** Attachment added: "screenshot of 4 basic types of needed child MDI windows"
   https://bugs.launchpad.net/bugs/1069493/+attachment/3407814/+files/dc_screen1.jpg

-- 
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/1069493

Title:
  Better resource optimization

Status in DC++:
  New

Bug description:
  This is actually not a bug, but an improvement suggestion.
  Anyway, so far, dc++ uses MDI interface to display multiple child windows (search, file lists, hubs, pms) inside one main window. This is all ok for a low number of child windows opened.
  When you have any kind of administrative need to check a lot of user's file lists or to have a lot of hubs/pms opened or similar cases, when you have a need for a lot of multiple child windows, then you are often in a trouble of dc++ freezing, due to the resources (GDI objects mostly) starvation, which windows usually limits to some "reasonable" value. Not to mention that dc++ slows down a lot and working with it, when many child windows are opened, is very difficult and consumes a lot of memory.

  There is a very simple improvement technique for this, which may
  improve dc++ to scale far better for hundreds or thousands of opened
  child windows. The idea is not to open a single MDI child window for
  each object (search, pm, mainchat/hub, file list) that we need.
  Instead, we can pre-created 4 default MDI child windows, one for each
  type of object and when a user switches to another object, we simply
  switch to one of 4 pre-created child windows, depending on the type of
  that object only. This means that all the search objects/windows could
  be displayed using only 1 physical MDI window, by simply refreshing
  the content of that window, depending on the content of the search
  object.

  For more clarity, here is a screenshot to better describe all this.

  Shortly, instead of creating a new MDI child window for each new
  object needed, we could just re-use a pre-created MDI child window for
  that type of object and repaint/refresh its content, based on the
  content of our object.

  This way no more than 4 MDI child windows would be needed for 4 basic
  objects: search results, private chat, main chat and file list, so the
  consumption of system resources (GDI objects) would be the optimal.

To manage notifications about this bug go to:
https://bugs.launchpad.net/dcplusplus/+bug/1069493/+subscriptions


Follow ups

References