static gboolean _cd_do_fill_bookmark_entry (CDEntry *pEntry)
{
	if (pEntry->cIconName != NULL && pEntry->pIconSurface == NULL)
	{
		cairo_t* pSourceContext = cairo_dock_create_context_from_container (CAIRO_CONTAINER (g_pMainDock));
		GdkPixbuf *pixbuf = gdk_pixbuf_new_from_data (const guchar *data,
			GDK_COLORSPACE_RGB,
			FALSE,  // has_alpha
			8,  // bits_per_sample
			16, 16,  // width, height
			16*3,  // rowstride
			NULL,
			NULL);
		double fImageWidth=0, fImageHeight=0;
		double fZoomX=0, fZoomY=0;
		pEntry->pIconSurface = cairo_dock_create_surface_from_pixbuf (pixbuf,
			pSourceContext,
			1.,
			myDialogs.dialogTextDescription.iSize, myDialogs.dialogTextDescription.iSize,
			0,
			&fImageWidth, &fImageHeight,
			&fZoomX, &fZoomY);
		g_object_unref (pixbuf);
		g_free (pEntry->cIconName);
		pEntry->cIconName = NULL;
		cairo_destroy (pSourceContext);
		return TRUE;
	}
static gboolean _cd_do_fill_bookmark_entry (CDEntry *pEntry)
{
	if (pEntry->pIconSurface != NULL || pEntry->cIconName == NULL)
		return FALSE;
	
	gsize out_len = 0;
	//g_print ("icon : %s\n", pEntry->cIconName);
	guchar *icon = g_base64_decode (pEntry->cIconName, &out_len);
	//g_print ("-> out_len : %d\n", out_len);
	g_return_val_if_fail (icon != NULL, FALSE);
	//g_print ("-> data : %d\n", icon);
	
	GInputStream * is = g_memory_input_stream_new_from_data (icon,
		out_len,
		NULL);
	GdkPixbuf *pixbuf = gdk_pixbuf_new_from_stream (is,
		NULL,
		NULL);
	g_object_unref (is);
	double fImageWidth=0, fImageHeight=0;
	double fZoomX=0, fZoomY=0;
	pEntry->pIconSurface = cairo_dock_create_surface_from_pixbuf (pixbuf,
		1.,
		myDialogsParam.dialogTextDescription.iSize, myDialogsParam.dialogTextDescription.iSize,
		0,
		&fImageWidth, &fImageHeight,
		&fZoomX, &fZoomY);
	g_object_unref (pixbuf);
	g_free (icon);
	
	return TRUE;
}