No description
Find a file
Michael Meeks 38b59a3f1c Handle canvas / tile memory more frugaly - #6369
Instead of spending time re-compressing canvases as pngs and
base64'ing these into URLs, lets just keep the nice, pre-compressed
zstd keyframe around and its associated deltas, in case we need them.

Move to a simple LRU time for cache eviction of all types: sorting
_tiles by last render time. Collect garbage regularly while working.
Enforce canvas count, compressed arrays and number of tiles limits
under a high watermark. We should have enough canvases around to
keep rendering snappy, while not jeopardising our ability to allocate
larger document canvases to render into.

Re-create canvases if/as/when we need to render them from our
cached compressed versions.

Re-factor and simplify createTile, pass section into foreachTileInArea.

  Includes parts of:

    Partial fix for issue #5876 discard excess canvas contexts

    WKWebView has a hardcoded memory limit for all canvas contexts
    so if canvas.getContext('2d') returns null, convert the canvas
    of other tiles to an image until canvas.getContext('2d') succeeds.

    Thanks to: Patrick Luby <patrick.luby@collabora.com>

Change-Id: I5117b0986aa46d2fffab6cd66d990de39dfcecea
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-06-22 09:35:22 +01:00
.git-hooks
.github
.gitpod-files a11y: add config for enable/disable accessibility in general 2023-06-08 00:00:51 +02:00
android Translated using Weblate (Dutch) 2023-06-12 13:54:21 +02:00
browser Handle canvas / tile memory more frugaly - #6369 2023-06-22 09:35:22 +01:00
common Kill canceltiles support completely. 2023-06-22 09:35:22 +01:00
cypress_test a11y: editable area: cypress tests for list editing 2023-06-15 15:00:18 -04:00
debian configure option to disable building unit tests 2023-06-16 09:12:21 +02:00
docker docker: force mv 2023-06-13 11:36:01 +02:00
etc
fuzzer
gtk
indexing
ios Fix iOS build breakages by adding http::Request to iOS build 2023-06-15 19:01:42 +01:00
kit Kill canceltiles support completely. 2023-06-22 09:35:22 +01:00
kubernetes/helm
man
net Restore commit 80b4e6d4ae 2023-06-16 16:08:42 +01:00
scripts
test Kill canceltiles support completely. 2023-06-22 09:35:22 +01:00
tools cid#318956 AUTO_CAUSES_COPY 2023-06-21 08:40:21 +02:00
wasm
wsd Kill canceltiles support completely. 2023-06-22 09:35:22 +01:00
.cirrus.yml
.clang-format
.clang-tidy
.gitignore
.gitpod.dockerfile
.gitpod.yml
.mailmap
AUTHORS
autogen.sh
browsersync-config.js
ChangeLog
CODE_OF_CONDUCT.md
config.h.in Add possibility to define help root URL from brand package 2023-05-17 08:26:38 +02:00
config_version.h.in
configure.ac configure option to disable building unit tests 2023-06-16 09:12:21 +02:00
CONTRIBUTING.md
coolkitconfig-mobile.xcu Add possibility to define help root URL from brand package 2023-05-17 08:26:38 +02:00
coolkitconfig.xcu.in Add possibility to define help root URL from brand package 2023-05-17 08:26:38 +02:00
coolwsd-generate-proof-key
coolwsd-systemplate-setup
coolwsd-welcome.xml
coolwsd.init.rhel6
coolwsd.service
coolwsd.spec.in configure option to disable building unit tests 2023-06-16 09:12:21 +02:00
coolwsd.xml.in wsd: support providing CSP header in the config 2023-06-19 07:45:02 -04:00
COPYING
discovery.xml
favicon.ico
g
jsstress.in
Makefile.am wsd: add ContentSecurityPolicy manager 2023-06-19 07:45:02 -04:00
NEWS
PROBLEMS
README.CONTRIBUTING.md
README.FILENOTICES.md
README.md
SECURITY.md
trace-event.sample2.json

Build Status Build Status

Build Status Build Status

Open in Gitpod

Collabora Online

Master: Pull request policy

irc Telegram Forum Website L10n Gitpod Ready-to-Code

Your own private Office in the Cloud

Get in touch 💬

Key features

  • View and edit text documents, spreadsheets, presentations & more
  • Collaborative editing features
  • Works in any modern browser no plugin needed
  • Open Source primarily under the MPLv2 license. Some parts are under other open source licences, see e.g. browser/LICENSE.

Website

For many more details, build instructions, downloads and more please visit https://collaboraonline.github.io/

Developer assistance

Please ask your questions on any of the bridged IRC/Matrix/Telegram rooms

Join the conversation on our Discourse server at https://forum.collaboraonline.com/

Watch the tinderbox status (if it's green) at https://cpci.cbg.collabora.co.uk:8080/job/Tinderbox%20for%20online%20master%20against%20co-22.05/

Development bits

This project has several components:

  • wsd/
    • The Web Services Daemon - which accepts external connections
  • kit/
    • The client which lives in its own chroot and renders documents
  • common/
    • Shared code between these processes
  • browser/
    • The client side JavaScript component
  • test/
    • C++ based unit tests
  • cypress_test/
    • JavaScript based integration tests

Please consult the README files in the component's directory for more details:

iOS and Android apps

See the corresponding READMEs:

GitPod

Head over to https://collaboraonline.github.io/post/build-code/ select gitpod from the dropdown and follow the steps.

Interesting things to keep in mind:

  • Make sure your browser is not blocking windows/tabs from opening from the gitpod workspace URL (maybe add *.gitpod.io to your browser's whitelist)
    • The GitPod tasks will run automatically and further instructions will be printed out right in the terminal
    • VNC tab will open automatically if not just click in the left icon Remote explorer and click 6080. You will see a tab completly black, that's normal.
    • As mentioned in those instructions if you are not using the VS Code desktop and if you are only relying on your browser please:
      • Do not try to click the URL from the make run out put instead copy that URL and execute firefox [paste URL here]
      • Head over to the tab where the VNC is opened (black page), you will see Firefox opening there, maximize and have fun.
      • You can also run cypress tests via GitPod but you will need to use Firefox, for that just prepend CYPRESS_BROWSER="firefox" to the desired command. Example: CYPRESS_BROWSER="firefox" make check for every test or CYPRESS_BROWSER="firefox" make check-desktop spec=impress/scrolling_spec.js for one specific test on desktop

Enjoy!