Hi Chris,

Are you sure this is really needed? GAL is also used in other dialogs,
such as footprint browser or pad properties editor, and they do not seem
to take a lot of time to load. What is the initialization time we are
speaking about?

Anyway, if you are determined to optimize it, it is only a win for
everyone. I do not think we have ever tried keeping a GAL instance
without showing it, but IMHO it should be possible. OpenGL GAL/Linux
combination might be whining if you start rendering when the window is
not visible, but you may simply call DRAW_PANEL_GAL::StopDrawing() and
DRAW_PANEL_GAL::StartDrawing() as necessary.

Regarding rendering to memory, it actually happens behind the scenes.
For Cairo the memory is easily accesible (CAIRO_GAL::wxOutput,
CAIRO_GAL::bitmapBuffer). OpenGL renders most of the objects (grid is an
exception) to a framebuffer. Admitted, this is GPU memory, but it might
be read using glReadPixels().

Regards,
Orson

On 03/09/2017 08:27 PM, Chris Pavlina wrote:
> I'm trying to speed up my new component selector, since the previous one
> loaded and searched so quickly. I don't want a serious efficiency
> regression in one of the most used dialogs in eeschema.
> 
> Since optimizing the column sizing cache and data sorting, the slowest
> part is now loading FOOTPRINT_PREVIEW_PANEL, which has to initialize a
> GAL.
> 
> Tom/Orson/anyone else who knows GAL - can you think of a reasonable way
> to either speed up the initialization or retain an initialized copy
> between dialog invocations? I'm thinking about just keeping the dialog
> in memory all the time and hiding it when not in use instead of
> destroying and reinstantiating it - will this cause any problems with
> GAL no longer having something to draw to? (Bear in mind I'm unfamiliar
> with both GAL and how wxWidgets handles graphics here.)
> 
> If it provides any relevant information, I'm currently forcing Cairo
> mode in the component selector, to avoid having to deal with graphics
> support in a simple dialog (since drawing efficiency is not required).
> 

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to