surenspost@gmail.com wrote:
I current way I am implementing is that I save the Graphic a temporary file,then to create a new thread ( using osl_createThread from osl/thread.h ) and from within the new thread execute the external application to open the temp ( using osl_executeProcess from osl/process.h). Then on I poll for the exit of the process and after exit, exit the new thread and main thread updates the graphic with the new temporary image. But the current way blocks the main loop and I end up getting an unresponsive libreoffice window which is not desirable at all.
Hi Suren, since you already create a separate thread for the editing - just fire it off, and send the main app a msg - like here: desktop/source/app/officeipcthread.cxx:289 (you'll probably replace STATIC_LINK with LINK, DECL_STATIC_LINK with DECL_LINK, and IMPL_STATIC_LINK_NOINSTANCE with IMPL_LINK) PostUserEvent adds an event into the main app msg queue, which then gets processed like any other input (mouse, keyboard) in the LibO mainloop. Also: just using osl_executeProcess() avoids idly spinning until the external app is finished. Your thread just blocks then. HTH, -- Thorsten
Attachment:
pgp8p28OD7ua4.pgp
Description: PGP signature