Kaydet (Commit) 4df957f7 authored tarafından Pranav Kant's avatar Pranav Kant Kaydeden (comit) Miklos Vajna

lokdocview: Don't use extern variable: lokThreadPool

Change-Id: Ia208e3309bb64baf71ceb97cdf1b3b57b6120353
üst f0ca80f4
...@@ -49,6 +49,7 @@ struct _LOKDocViewPrivate ...@@ -49,6 +49,7 @@ struct _LOKDocViewPrivate
LibreOfficeKitDocument* m_pDocument; LibreOfficeKitDocument* m_pDocument;
TileBuffer m_aTileBuffer; TileBuffer m_aTileBuffer;
GThreadPool* lokThreadPool;
gfloat m_fZoom; gfloat m_fZoom;
glong m_nDocumentWidthTwips; glong m_nDocumentWidthTwips;
...@@ -152,8 +153,6 @@ G_DEFINE_TYPE_WITH_CODE (LOKDocView, lok_doc_view, GTK_TYPE_DRAWING_AREA, ...@@ -152,8 +153,6 @@ G_DEFINE_TYPE_WITH_CODE (LOKDocView, lok_doc_view, GTK_TYPE_DRAWING_AREA,
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
#endif #endif
GThreadPool* lokThreadPool;
/// Helper struct used to pass the data from soffice thread -> main thread. /// Helper struct used to pass the data from soffice thread -> main thread.
struct CallbackData struct CallbackData
{ {
...@@ -308,7 +307,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) ...@@ -308,7 +307,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
pLOEvent->m_nCharCode = nCharCode; pLOEvent->m_nCharCode = nCharCode;
pLOEvent->m_nKeyCode = nKeyCode; pLOEvent->m_nKeyCode = nKeyCode;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
else else
...@@ -319,7 +318,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) ...@@ -319,7 +318,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
pLOEvent->m_nCharCode = nCharCode; pLOEvent->m_nCharCode = nCharCode;
pLOEvent->m_nKeyCode = nKeyCode; pLOEvent->m_nKeyCode = nKeyCode;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
...@@ -487,7 +486,7 @@ setTilesInvalid (LOKDocView* pDocView, const GdkRectangle& rRectangle) ...@@ -487,7 +486,7 @@ setTilesInvalid (LOKDocView* pDocView, const GdkRectangle& rRectangle)
for (int j = aStart.y; j < aEnd.y; j++) for (int j = aStart.y; j < aEnd.y; j++)
{ {
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
priv->m_aTileBuffer.setInvalid(i, j, priv->m_fZoom, task); priv->m_aTileBuffer.setInvalid(i, j, priv->m_fZoom, task, priv->lokThreadPool);
g_object_unref(task); g_object_unref(task);
} }
} }
...@@ -762,7 +761,7 @@ renderDocument(LOKDocView* pDocView, cairo_t* pCairo) ...@@ -762,7 +761,7 @@ renderDocument(LOKDocView* pDocView, cairo_t* pCairo)
if (bPaint) if (bPaint)
{ {
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
Tile& currentTile = priv->m_aTileBuffer.getTile(nRow, nColumn, priv->m_fZoom, task); Tile& currentTile = priv->m_aTileBuffer.getTile(nRow, nColumn, priv->m_fZoom, task, priv->lokThreadPool);
GdkPixbuf* pPixBuf = currentTile.getBuffer(); GdkPixbuf* pPixBuf = currentTile.getBuffer();
gdk_cairo_set_source_pixbuf (pCairo, pPixBuf, gdk_cairo_set_source_pixbuf (pCairo, pPixBuf,
twipToPixel(aTileRectangleTwips.x, priv->m_fZoom), twipToPixel(aTileRectangleTwips.x, priv->m_fZoom),
...@@ -900,7 +899,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent) ...@@ -900,7 +899,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom); pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
return FALSE; return FALSE;
...@@ -919,7 +918,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent) ...@@ -919,7 +918,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom); pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
return FALSE; return FALSE;
...@@ -968,7 +967,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent) ...@@ -968,7 +967,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(priv->m_aGraphicHandleRects[i].y + priv->m_aGraphicHandleRects[i].height / 2, priv->m_fZoom); pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(priv->m_aGraphicHandleRects[i].y + priv->m_aGraphicHandleRects[i].height / 2, priv->m_fZoom);
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
return FALSE; return FALSE;
...@@ -996,7 +995,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent) ...@@ -996,7 +995,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
pLOEvent->m_nPostMouseEventCount = nCount; pLOEvent->m_nPostMouseEventCount = nCount;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
break; break;
} }
...@@ -1014,7 +1013,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent) ...@@ -1014,7 +1013,7 @@ lok_doc_view_signal_button(GtkWidget* pWidget, GdkEventButton* pEvent)
pLOEvent->m_nPostMouseEventCount = nCount; pLOEvent->m_nPostMouseEventCount = nCount;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
break; break;
} }
...@@ -1101,7 +1100,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent) ...@@ -1101,7 +1100,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent)
pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom); pLOEvent->m_nSetGraphicSelectionY = pixelToTwip(pEvent->y, priv->m_fZoom);
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
return FALSE; return FALSE;
...@@ -1117,7 +1116,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent) ...@@ -1117,7 +1116,7 @@ lok_doc_view_signal_motion (GtkWidget* pWidget, GdkEventMotion* pEvent)
pLOEvent->m_nPostMouseEventCount = 1; pLOEvent->m_nPostMouseEventCount = 1;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
return FALSE; return FALSE;
...@@ -1355,6 +1354,12 @@ static void lok_doc_view_init (LOKDocView* pDocView) ...@@ -1355,6 +1354,12 @@ static void lok_doc_view_init (LOKDocView* pDocView)
|GDK_BUTTON_MOTION_MASK |GDK_BUTTON_MOTION_MASK
|GDK_KEY_PRESS_MASK |GDK_KEY_PRESS_MASK
|GDK_KEY_RELEASE_MASK); |GDK_KEY_RELEASE_MASK);
priv->lokThreadPool = g_thread_pool_new(lokThreadFunc,
NULL,
1,
FALSE,
NULL);
} }
static void lok_doc_view_set_property (GObject* object, guint propId, const GValue *value, GParamSpec *pspec) static void lok_doc_view_set_property (GObject* object, guint propId, const GValue *value, GParamSpec *pspec)
...@@ -1738,12 +1743,6 @@ static void lok_doc_view_class_init (LOKDocViewClass* pClass) ...@@ -1738,12 +1743,6 @@ static void lok_doc_view_class_init (LOKDocViewClass* pClass)
g_cclosure_marshal_VOID__STRING, g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_NONE, 1,
G_TYPE_STRING); G_TYPE_STRING);
lokThreadPool = g_thread_pool_new(lokThreadFunc,
NULL,
1,
FALSE,
NULL);
} }
/** /**
...@@ -1806,7 +1805,7 @@ lok_doc_view_open_document (LOKDocView* pDocView, ...@@ -1806,7 +1805,7 @@ lok_doc_view_open_document (LOKDocView* pDocView,
priv->m_aDocPath = pPath; priv->m_aDocPath = pPath;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
...@@ -1878,12 +1877,14 @@ lok_doc_view_get_part (LOKDocView* pDocView) ...@@ -1878,12 +1877,14 @@ lok_doc_view_get_part (LOKDocView* pDocView)
SAL_DLLPUBLIC_EXPORT void SAL_DLLPUBLIC_EXPORT void
lok_doc_view_set_part (LOKDocView* pDocView, int nPart) lok_doc_view_set_part (LOKDocView* pDocView, int nPart)
{ {
LOKDocViewPrivate* priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pDocView));
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
LOEvent* pLOEvent = new LOEvent(LOK_SET_PART); LOEvent* pLOEvent = new LOEvent(LOK_SET_PART);
pLOEvent->m_nPart = nPart; pLOEvent->m_nPart = nPart;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
...@@ -1898,12 +1899,13 @@ SAL_DLLPUBLIC_EXPORT void ...@@ -1898,12 +1899,13 @@ SAL_DLLPUBLIC_EXPORT void
lok_doc_view_set_partmode(LOKDocView* pDocView, lok_doc_view_set_partmode(LOKDocView* pDocView,
int nPartMode) int nPartMode)
{ {
LOKDocViewPrivate* priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pDocView));
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
LOEvent* pLOEvent = new LOEvent(LOK_SET_PARTMODE); LOEvent* pLOEvent = new LOEvent(LOK_SET_PARTMODE);
pLOEvent->m_nPartMode = nPartMode; pLOEvent->m_nPartMode = nPartMode;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
...@@ -1926,12 +1928,13 @@ SAL_DLLPUBLIC_EXPORT void ...@@ -1926,12 +1928,13 @@ SAL_DLLPUBLIC_EXPORT void
lok_doc_view_set_edit(LOKDocView* pDocView, lok_doc_view_set_edit(LOKDocView* pDocView,
gboolean bEdit) gboolean bEdit)
{ {
LOKDocViewPrivate* priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pDocView));
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
LOEvent* pLOEvent = new LOEvent(LOK_SET_EDIT); LOEvent* pLOEvent = new LOEvent(LOK_SET_EDIT);
pLOEvent->m_bEdit = bEdit; pLOEvent->m_bEdit = bEdit;
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
...@@ -1961,14 +1964,14 @@ lok_doc_view_post_command (LOKDocView* pDocView, ...@@ -1961,14 +1964,14 @@ lok_doc_view_post_command (LOKDocView* pDocView,
const gchar* pCommand, const gchar* pCommand,
const gchar* pArguments) const gchar* pArguments)
{ {
LOKDocViewPrivate* priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pDocView));
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
LOEvent* pLOEvent = new LOEvent(LOK_POST_COMMAND); LOEvent* pLOEvent = new LOEvent(LOK_POST_COMMAND);
pLOEvent->m_pCommand = pCommand; pLOEvent->m_pCommand = pCommand;
pLOEvent->m_pArguments = g_strdup(pArguments); pLOEvent->m_pArguments = g_strdup(pArguments);
g_task_set_task_data(task, pLOEvent, g_free); g_task_set_task_data(task, pLOEvent, g_free);
g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_thread_pool_push(priv->lokThreadPool, g_object_ref(task), NULL);
g_object_unref(task); g_object_unref(task);
} }
......
...@@ -13,8 +13,6 @@ ...@@ -13,8 +13,6 @@
#define g_info(...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, __VA_ARGS__) #define g_info(...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, __VA_ARGS__)
#endif #endif
extern GThreadPool* lokThreadPool;
/* ------------------ /* ------------------
Utility functions Utility functions
------------------ ------------------
...@@ -62,7 +60,8 @@ void TileBuffer::resetAllTiles() ...@@ -62,7 +60,8 @@ void TileBuffer::resetAllTiles()
} }
} }
void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task) void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task,
GThreadPool* lokThreadPool)
{ {
int index = x * m_nWidth + y; int index = x * m_nWidth + y;
g_info("Setting tile invalid (%d, %d)", x, y); g_info("Setting tile invalid (%d, %d)", x, y);
...@@ -79,7 +78,8 @@ void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task) ...@@ -79,7 +78,8 @@ void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task)
} }
} }
Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task) Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task,
GThreadPool* lokThreadPool)
{ {
int index = x * m_nWidth + y; int index = x * m_nWidth + y;
......
...@@ -103,11 +103,15 @@ class TileBuffer ...@@ -103,11 +103,15 @@ class TileBuffer
@param x the tile along the x-axis of the buffer @param x the tile along the x-axis of the buffer
@param y the tile along the y-axis of the buffer @param y the tile along the y-axis of the buffer
@param aZoom This function needs the zoom factor to draw the tile using paintTile() @param aZoom current zoom factor of the document
@param task GTask object containing the necessary data
@param pool GThreadPool managed by the widget instance used for all the
LOK calls made by widget. It is needed here because getTile invokes one
of the LOK call : paintTile.
@return the tile at the mentioned position (x, y) @return the tile at the mentioned position (x, y)
*/ */
Tile& getTile(int x, int y, float aZoom, GTask* task); Tile& getTile(int x, int y, float aZoom, GTask* task, GThreadPool* pool);
/// Destroys all the tiles in the tile buffer; also frees the memory allocated /// Destroys all the tiles in the tile buffer; also frees the memory allocated
/// for all the Tile objects. /// for all the Tile objects.
void resetAllTiles(); void resetAllTiles();
...@@ -117,8 +121,13 @@ class TileBuffer ...@@ -117,8 +121,13 @@ class TileBuffer
@param x the position of tile along x-axis @param x the position of tile along x-axis
@param y the position of tile along y-axis @param y the position of tile along y-axis
@param zoom zoom factor of the document
@param task GTask object containing the necessary data
@param pool GThreadPool managed by the widget instance used for all the
LOK calls made by widget. It is needed here because setInvalid() invokes one
of the LOK call : paintTile.
*/ */
void setInvalid(int x, int y, float zoom, GTask* task); void setInvalid(int x, int y, float zoom, GTask* task, GThreadPool*);
/// Contains the reference to the LOK Document that this tile buffer is for. /// Contains the reference to the LOK Document that this tile buffer is for.
LibreOfficeKitDocument *m_pLOKDocument; LibreOfficeKitDocument *m_pLOKDocument;
......
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