LOK: Add a tiled rendering testbench.
Change-Id: I631c0506f427d974c3dd4c75484aa25603100895
This commit is contained in:
@@ -86,6 +86,7 @@ $(eval $(call gb_Helper_register_executables_for_install,OOO,ooo, \
|
|||||||
))
|
))
|
||||||
|
|
||||||
$(eval $(call gb_Helper_register_executables,OOO, \
|
$(eval $(call gb_Helper_register_executables,OOO, \
|
||||||
|
$(if $(filter LINUX,$(OS)), tilebench) \
|
||||||
$(call gb_Helper_optional,CRASHREP,crashrep) \
|
$(call gb_Helper_optional,CRASHREP,crashrep) \
|
||||||
gnome-open-url.bin \
|
gnome-open-url.bin \
|
||||||
$(if $(filter-out ANDROID IOS MACOSX WNT,$(OS)),oosplash) \
|
$(if $(filter-out ANDROID IOS MACOSX WNT,$(OS)),oosplash) \
|
||||||
|
99
android/mobile-config.py
Executable file
99
android/mobile-config.py
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# This file is part of the LibreOffice project.
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
# this tool rips out configuration pieces that are not useful for
|
||||||
|
# a mobile viewer / editing application without a full UI.
|
||||||
|
#
|
||||||
|
# ideally the postprocess/ makefile would cope with this but its
|
||||||
|
# already over-complicated by rampant conditionals.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
|
||||||
|
main_xcd_discard = [
|
||||||
|
'org.openoffice.Office/TableWizard', # huge
|
||||||
|
|
||||||
|
'org.openoffice.Office/WebWizard',
|
||||||
|
'org.openoffice.Office.DataAccess/Drivers', # no database
|
||||||
|
'org.openoffice.Office/Addons', # no addons
|
||||||
|
|
||||||
|
# no conventional UI; reverse sorted by size
|
||||||
|
'org.openoffice.Office.UI/GenericCommands',
|
||||||
|
'org.openoffice.Office/Accelerators',
|
||||||
|
'org.openoffice.Office/UI',
|
||||||
|
|
||||||
|
'org.openoffice.Office.UI/DrawImpressCommands',
|
||||||
|
'org.openoffice.Office.UI/Sidebar',
|
||||||
|
'org.openoffice.Office.UI/ChartCommands',
|
||||||
|
'org.openoffice.Office.UI/DbuCommands',
|
||||||
|
'org.openoffice.Office.UI/Controller',
|
||||||
|
'org.openoffice.Office/UI',
|
||||||
|
'org.openoffice.Office.UI/StartModuleCommands',
|
||||||
|
'org.openoffice.Office.UI/BasicIDEWindowState',
|
||||||
|
'org.openoffice.Office.UI/GenericCategories',
|
||||||
|
'org.openoffice.Office.UI/ChartWindowState',
|
||||||
|
'org.openoffice.Office.UI/Factories',
|
||||||
|
'org.openoffice.Office.UI/BaseWindowState',
|
||||||
|
'org.openoffice.Office.UI/BasicIDECommands',
|
||||||
|
'org.openoffice.Office.UI/Sidebar',
|
||||||
|
'org.openoffice.Office.UI/BibliographyCommands',
|
||||||
|
'org.openoffice.Office.UI/DbQueryWindowState',
|
||||||
|
'org.openoffice.Office.UI/WindowState',
|
||||||
|
'org.openoffice.Office.UI/Controller',
|
||||||
|
'org.openoffice.Office.UI/DbRelationWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbTableWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbTableDataWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbBrowserWindowState',
|
||||||
|
'org.openoffice.Office.UI/WindowContentFactories',
|
||||||
|
'org.openoffice.Office.UI/Factories',
|
||||||
|
'org.openoffice.Office.UI/StartModuleWindowState',
|
||||||
|
'org.openoffice.Office.UI/GlobalSettings',
|
||||||
|
'org.openoffice.Office.UI/Commands',
|
||||||
|
'org.openoffice.Office.UI/BibliographyCommands',
|
||||||
|
'org.openoffice.Office.UI/StartModuleCommands',
|
||||||
|
'org.openoffice.Office.UI/DrawImpressCommands',
|
||||||
|
'org.openoffice.Office.UI/BasicIDECommands',
|
||||||
|
'org.openoffice.Office.UI/GenericCommands',
|
||||||
|
'org.openoffice.Office.UI/ChartCommands',
|
||||||
|
'org.openoffice.Office.UI/DbuCommands',
|
||||||
|
'org.openoffice.Office.UI/BibliographyWindowState',
|
||||||
|
'org.openoffice.Office.UI/StartModuleWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbTableDataWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbRelationWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbBrowserWindowState',
|
||||||
|
'org.openoffice.Office.UI/BasicIDEWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbTableWindowState',
|
||||||
|
'org.openoffice.Office.UI/DbQueryWindowState',
|
||||||
|
'org.openoffice.Office.UI/ChartWindowState',
|
||||||
|
'org.openoffice.Office.UI/BaseWindowState',
|
||||||
|
'org.openoffice.Office.UI/GenericCategories',
|
||||||
|
'org.openoffice.Office.UI/Category',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
tree = ET.parse(sys.argv[1])
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
print "Foo\n"
|
||||||
|
saved = 0
|
||||||
|
total = 0
|
||||||
|
for child in root:
|
||||||
|
section = child.attrib['{http://openoffice.org/2001/registry}name']
|
||||||
|
package = child.attrib['{http://openoffice.org/2001/registry}package']
|
||||||
|
size = len(ET.tostring(child));
|
||||||
|
total = total + size
|
||||||
|
key = '%s/%s' % (package, section)
|
||||||
|
if key in main_xcd_discard:
|
||||||
|
root.remove(child)
|
||||||
|
print 'removed %s - saving %d' % (key, size)
|
||||||
|
saved = saved + size
|
||||||
|
|
||||||
|
print "saved %d of %d bytes: %2.f%%" % (saved, total, saved*100.0/total)
|
||||||
|
tree.write(sys.argv[2], 'UTF-8', True)
|
||||||
|
|
32
libreofficekit/Executable_tilebench.mk
Normal file
32
libreofficekit/Executable_tilebench.mk
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||||
|
#
|
||||||
|
# This file is part of the LibreOffice project.
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_Executable,tilebench))
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_set_include,tilebench,\
|
||||||
|
$$(INCLUDE) \
|
||||||
|
-I$(SRCDIR)/desktop/inc \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_use_libraries,tilebench,\
|
||||||
|
libreofficekitgtk \
|
||||||
|
sal \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_add_libs,tilebench,\
|
||||||
|
-lm \
|
||||||
|
-ldl \
|
||||||
|
-lpthread \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_add_exception_objects,tilebench,\
|
||||||
|
libreofficekit/qa/tilebench/tilebench \
|
||||||
|
))
|
||||||
|
|
||||||
|
# vim: set noet sw=4 ts=4:
|
@@ -22,6 +22,10 @@ $(eval $(call gb_Module_add_targets,libreofficekit,\
|
|||||||
))
|
))
|
||||||
endif # ($(ENABLE_GTK),)
|
endif # ($(ENABLE_GTK),)
|
||||||
|
|
||||||
|
$(eval $(call gb_Module_add_targets,libreofficekit,\
|
||||||
|
Executable_tilebench \
|
||||||
|
))
|
||||||
|
|
||||||
endif # ($(OS),LINUX)
|
endif # ($(OS),LINUX)
|
||||||
|
|
||||||
# vim: set ts=4 sw=4 et:
|
# vim: set ts=4 sw=4 et:
|
||||||
|
90
libreofficekit/qa/tilebench/tilebench.cxx
Normal file
90
libreofficekit/qa/tilebench/tilebench.cxx
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This file is part of the LibreOffice project.
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <osl/time.h>
|
||||||
|
#include <LibreOfficeKit/LibreOfficeKitInit.h>
|
||||||
|
#include <LibreOfficeKit/LibreOfficeKit.hxx>
|
||||||
|
|
||||||
|
using namespace lok;
|
||||||
|
|
||||||
|
static int help()
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Usage: tilebench <absolute-path-to-libreoffice-install> [path to document]\n" );
|
||||||
|
fprintf( stderr, "renders a selection of small tiles from the document, checksums them and times the process\n" );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static double getTimeNow()
|
||||||
|
{
|
||||||
|
TimeValue aValue;
|
||||||
|
osl_getSystemTime(&aValue);
|
||||||
|
return (double)aValue.Seconds +
|
||||||
|
(double)aValue.Nanosec / (1000*1000*1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main( int argc, char* argv[] )
|
||||||
|
{
|
||||||
|
struct TimeRecord {
|
||||||
|
const char *mpName;
|
||||||
|
double mfTime;
|
||||||
|
|
||||||
|
TimeRecord() : mpName(NULL), mfTime(getTimeNow()) { }
|
||||||
|
explicit TimeRecord(const char *pName) :
|
||||||
|
mpName(pName ), mfTime(getTimeNow()) { }
|
||||||
|
explicit TimeRecord(const TimeRecord *pSrc) :
|
||||||
|
mpName(pSrc->mpName), mfTime(pSrc->mfTime) { }
|
||||||
|
};
|
||||||
|
std::vector< TimeRecord > aTimes;
|
||||||
|
if( argc < 2 ||
|
||||||
|
( argc > 1 && ( !strcmp( argv[1], "--help" ) || !strcmp( argv[1], "-h" ) ) ) )
|
||||||
|
return help();
|
||||||
|
|
||||||
|
if ( argv[1][0] != '/' )
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Absolute path required to libreoffice install\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
aTimes.push_back(TimeRecord("initialization"));
|
||||||
|
Office *pOffice = lok_cpp_init(argv[1]);
|
||||||
|
aTimes.push_back(TimeRecord());
|
||||||
|
|
||||||
|
if (argv[2] != NULL)
|
||||||
|
{
|
||||||
|
aTimes.push_back(TimeRecord("load document"));
|
||||||
|
Document *pDocument(pOffice->documentLoad(argv[2]));
|
||||||
|
aTimes.push_back(TimeRecord());
|
||||||
|
|
||||||
|
aTimes.push_back(TimeRecord("destroy document"));
|
||||||
|
delete pDocument;
|
||||||
|
aTimes.push_back(TimeRecord());
|
||||||
|
}
|
||||||
|
|
||||||
|
delete pOffice;
|
||||||
|
|
||||||
|
double nTotal = 0.0;
|
||||||
|
fprintf (stderr, "profile run:\n");
|
||||||
|
for (size_t i = 0; i < aTimes.size() - 1; i++)
|
||||||
|
{
|
||||||
|
double nDelta = aTimes[i+1].mfTime - aTimes[i].mfTime;
|
||||||
|
fprintf (stderr, " %s - %2.4f(ms)\n", aTimes[i].mpName, nDelta * 1000.0);
|
||||||
|
if (aTimes[i+1].mpName == NULL)
|
||||||
|
i++; // skip it.
|
||||||
|
nTotal += nDelta;
|
||||||
|
}
|
||||||
|
fprintf (stderr, "Total: %2.4f(s)\n", nTotal);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
Reference in New Issue
Block a user