Most likely, the delay is when shutting down Powerpoint as $ppt goes out of scope.
You can test this theory by explicitly clearing out $ppt yourself:
$presentation->SaveAs("SAVED_" . $filename); $presentation->Close; undef $ppt; # Clean up Powerpoint $mw->messageBox (-title => "message", -message=>"DONE!", -icon=> 'info +');
There is very little way around this, but if you plan to convert more than a single presentation in one go, it might make sense to declare $ppt as a global variable and keep it around:
our $ppt; sub save_PPT { # ... $ppt ||= Win32::OLE->GetActiveObject('PowerPoint.Application'); # ... and also later: $ppt ||= Win32::OLE->new( 'PowerPoint.Application', sub { $_[0]->Quit } ) or return 'error'; # ---
In reply to Re: Win32::OLE freezing Tk
by Corion
in thread Win32::OLE freezing Tk
by Takamoto
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |