Kaydet (Commit) 95632939 authored tarafından Miklos Vajna's avatar Miklos Vajna

gtktiledviewer: invoke paintTile() on the main thread from the callback

Change-Id: Id910c1905d23f16cae5b6b551c74193d46cff256
üst e9c69494
...@@ -149,7 +149,16 @@ void renderDocument( LOKDocView* pDocView ) ...@@ -149,7 +149,16 @@ void renderDocument( LOKDocView* pDocView )
gtk_image_set_from_pixbuf( GTK_IMAGE( pDocView->pCanvas ), pDocView->pPixBuf ); gtk_image_set_from_pixbuf( GTK_IMAGE( pDocView->pCanvas ), pDocView->pPixBuf );
} }
static void lok_docview_callback(int nType, const char* pPayload, void* pData) /// Invoked on the main thread if lok_docview_callback_worker() requests so.
static gboolean lok_docview_callback(gpointer pData)
{
LOKDocView* pDocView = pData;
renderDocument(pDocView);
return G_SOURCE_REMOVE;
}
/// Our LOK callback, runs on the LO thread.
static void lok_docview_callback_worker(int nType, const char* pPayload, void* pData)
{ {
LOKDocView* pDocView = pData; LOKDocView* pDocView = pData;
...@@ -158,7 +167,7 @@ static void lok_docview_callback(int nType, const char* pPayload, void* pData) ...@@ -158,7 +167,7 @@ static void lok_docview_callback(int nType, const char* pPayload, void* pData)
case LOK_CALLBACK_INVALIDATE_TILES: case LOK_CALLBACK_INVALIDATE_TILES:
// TODO for now just always render the document. // TODO for now just always render the document.
(void)pPayload; (void)pPayload;
renderDocument( pDocView ); gdk_threads_add_idle(lok_docview_callback, pDocView);
break; break;
default: default:
break; break;
...@@ -185,7 +194,7 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c ...@@ -185,7 +194,7 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c
else else
{ {
renderDocument( pDocView ); renderDocument( pDocView );
pDocView->pDocument->pClass->registerCallback(pDocView->pDocument, &lok_docview_callback, pDocView); pDocView->pDocument->pClass->registerCallback(pDocView->pDocument, &lok_docview_callback_worker, pDocView);
} }
return TRUE; return TRUE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment