Commit graph

2859 commits

Author SHA1 Message Date
Ashod Nakashian
6e54fd05f9 loolwsd: merge saveTile and notifyAndRemoveSubscribers
Change-Id: I8282604c02a9fd1a7a1e2a5df29e2f84fca151a6
Reviewed-on: https://gerrit.libreoffice.org/25344
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:54:55 +00:00
Ashod Nakashian
1f8f5da885 loolwsd: localize lock around painting tiles
Change-Id: I727f719fc22643d32d9fb5e4a89048a9991bb250
Reviewed-on: https://gerrit.libreoffice.org/25343
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:53:19 +00:00
Ashod Nakashian
ecaf45f9d3 loolwsd: tests should request tiles after invalidatetile
Change-Id: I32637d7e34a80577e99b764705bddf104df0278a
Reviewed-on: https://gerrit.libreoffice.org/25342
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:53:00 +00:00
Ashod Nakashian
e5aaac7631 loolwsd: Tile versioning and fix to race conditions
Tile invalidation and painting can race with one another.

A race when the user types two characters in quick succession:
1. After the first key press, the tile is invalidated.
2. The client request the tile on receiving the invalidate.
3. TileCache doesn't find it, and adds subscription.
 A. Sometime before rendering, the second key press is received.
 B. This invalidates the very same tile.
 C. The client request the same tile.
 D. TileCache finds a subscription and ignores the new one.
4. The tile is rendered and sent back.
5. Subscription is found and the tile is forwarded to clients.
6. Subcription is removed as the request is fullfilled.
 E. The second tile is rendered and sent back.
 F. TileCache finds no subscription and the tile is dropped.

End result: Only the first character appears on the screen.

Versioning fixes the above situation by making sure that in
step 5 the subscription will show to belong to a different
(and newer version) and so the tile will be ignored.
Instead, at F the TileCache will find both subscription
and a matching version and the lastest version will always
be sent back to the client.

Change-Id: I7d7fe1407cda1908d794683c3ce4c2fd18609a2f
Reviewed-on: https://gerrit.libreoffice.org/25341
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:52:36 +00:00
Ashod Nakashian
55df9b85e1 loolwsd: support versioning in tile requests
Usage and rationale to follow.

Change-Id: Ife4c12481e87f1b4b23d8ba6a6da66797b2be2a5
Reviewed-on: https://gerrit.libreoffice.org/25340
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:50:16 +00:00
Ashod Nakashian
114a6bc373 loolwsd: combined tile rendering
Tiles can be rendered in large batches and sent back
as combined payloads, all reduce latency and overhead
significantly.

Initial tests show a reduction in total latency by 2x.
This without sending tiles back to the client in combined
form, which will reduce latency further.

Change-Id: Iee06503f2a6c741fadb2c890266ea514c809c0dc
Reviewed-on: https://gerrit.libreoffice.org/25339
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:49:54 +00:00
Ashod Nakashian
f5bf8aa64a loolwsd: support for imgsize field in tile and tilecombine messages
When sending back response of tile or tilecombine type the
payload of the PNG image is implicitly the remainder of
the WS message. While this works fine for single-tile cases
it prevents us from combining tile responses into one to
reduce latency and overheads.

Change-Id: Iefeeed7e1a46be322c973ccf74f2bdb668d7cf30
Reviewed-on: https://gerrit.libreoffice.org/25338
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:46:01 +00:00
Ashod Nakashian
126060fd7f loolwsd: TileCombined class to parse, serialize, represent tilecombine
Change-Id: I00457fc0f2cd9d987972a1d5b9a17c204d42984c
Reviewed-on: https://gerrit.libreoffice.org/25337
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:45:40 +00:00
Ashod Nakashian
f4fc6d0c29 loolwsd: new name=value pair parser for strings
Change-Id: I01c56f9c452fe0ac75b3d9f2aa67787c5bb4d8c6
Reviewed-on: https://gerrit.libreoffice.org/25336
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:45:18 +00:00
Ashod Nakashian
65ed424199 loolwsd: new tile performance test
Change-Id: I08d477ec5f04de9f82c49263f35ebbf38a968f31
Reviewed-on: https://gerrit.libreoffice.org/25335
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:44:36 +00:00
Ashod Nakashian
1134b17e96 loolwsd: logging
Change-Id: Ic08b32104db1154573b9e0774cda23167a5cddf3
Reviewed-on: https://gerrit.libreoffice.org/25334
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:42:55 +00:00
Ashod Nakashian
5d9140c3bb loolwsd: simplify checkBlackTiles test
Black tiles are returned when rendering fails.
This happened due to bccu#1610 where internally
core collected cell info on the first 1024 rows
only. Anything beyond that always failed.

This limitation is now removed using dynamic
array to collect the cell info.

Regardless, the test here needs only check that
the last tile (really, anything beyond the 1024th row)
doesn't return a black tile.

This single tile still takes over 10 seconds to render,
which is the other issue that Core suffers from when
collecting cell info on a huge tab.

Change-Id: I7a1a5b7c2b2ed2cc4399160e096be5e57895af77
Reviewed-on: https://gerrit.libreoffice.org/25333
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-23 01:39:20 +00:00
Henry Castro
22db071689 loolwsd: test: add checkBlackTiles 2016-05-22 19:53:24 -04:00
Henry Castro
166edb66eb loolwsd: test: move getDocSize to helpers 2016-05-22 18:52:36 -04:00
Ashod Nakashian
74304fc08e loolwsd: ChildSession error propegation and cleanup
Change-Id: I8e5c87b6989fd090c98ca35e2584a7dd6d1c6a60
Reviewed-on: https://gerrit.libreoffice.org/25267
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 16:34:54 +00:00
Ashod Nakashian
3f03860a79 loolwsd: moved and localized png bits to Png.hpp
Change-Id: I4f27143bc2e5f638c8e84c32616b2820136a20e5
Reviewed-on: https://gerrit.libreoffice.org/25266
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:57:57 +00:00
Ashod Nakashian
6e033a4c25 loolwsd: use TileDesc in LOOLKit
Change-Id: I8800cc5625db4b333933ec056649c3efbd486f68
Reviewed-on: https://gerrit.libreoffice.org/25265
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:56:14 +00:00
Ashod Nakashian
56ae463bea loolwsd: minor TileDesc comment fix
Change-Id: I35b11797151a26a1c420afa5296c67ca54a5bdc9
Reviewed-on: https://gerrit.libreoffice.org/25264
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:55:49 +00:00
Ashod Nakashian
44a0e5785e loolwsd: cout -> cerr
Change-Id: I80ee313621ce093d75f2c331f3fef6125a187a42
Reviewed-on: https://gerrit.libreoffice.org/25263
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:53:11 +00:00
Ashod Nakashian
fae850189d loolwsd: include cleanup and organization
A source file (.cpp) must include its own header first.
This insures that the header is self-contained and
doesn't depend on arbitrary (and accidental) includes
before it to compile.

Furthermore, system headers should go next, followed by
C then C++ headers, then libraries (Poco, etc) and, finally,
project headers come last.

This makes sure that headers and included in the same dependency
order to avoid side-effects. For example, Poco should never rely on
anything from our project in the same way that a C header should
never rely on anything in C++, Poco, or project headers.

Also, includes ought to be sorted where possible, to improve
readability and avoid accidental duplicates (of which there
were a few).

Change-Id: I62cc1343e4a091d69195e37ed659dba20cfcb1ef
Reviewed-on: https://gerrit.libreoffice.org/25262
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:52:54 +00:00
Ashod Nakashian
b2fa9d6f2e loolwsd: moved TileDesc into own file
Change-Id: I54162f7ebaaca51f9c52a30af1e278db212562fa
Reviewed-on: https://gerrit.libreoffice.org/25261
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 15:49:10 +00:00
Ashod Nakashian
9347adc66f loolwsd: UnitPrefork can't use the more recent child
Change-Id: I6f60761498e61d9ceb48bc5f9a41967152293590
Reviewed-on: https://gerrit.libreoffice.org/25246
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:47:39 +00:00
Ashod Nakashian
5a0162f95c loolwsd: cleanup and improvements to UnitPrefork
Change-Id: I15394fa9199f0d2489a184d4c07602da02cbab64
Reviewed-on: https://gerrit.libreoffice.org/25245
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:43:45 +00:00
Ashod Nakashian
958f6ffcbd loolwsd: fix UnitPrefork deadlock/corruption
Reading from the socket in the test is not
thread-safe, and was causing all sorts of
problems.

The new code adds a test API and reads the
incoming data through it and not directly
from the socket. In addition, the read is
synchronized.

Change-Id: Id13821a40a59e32fd8a14f733a47306aee42ada8
Reviewed-on: https://gerrit.libreoffice.org/25244
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:43:15 +00:00
Ashod Nakashian
71cd345fd6 loolwsd: cleanup and reformatting of PrisonerSession
Change-Id: I26ea5a1bf5010458b1da9b2d25b4236ef104c4b9
Reviewed-on: https://gerrit.libreoffice.org/25243
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:41:28 +00:00
Ashod Nakashian
80786cc79d loolwsd: propagate error from forwardToPeer
Change-Id: Icea02f3ca48f9f4eb8aed14181c7b6101bfa1c2e
Reviewed-on: https://gerrit.libreoffice.org/25242
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:40:01 +00:00
Ashod Nakashian
81d7ccc2c3 loolwsd: handleInput returns socket send return
Change-Id: I9fb9fabad60993ef558803fb2d5cbfe8aa727f1d
Reviewed-on: https://gerrit.libreoffice.org/25241
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:33:08 +00:00
Ashod Nakashian
3cc295b7d2 loolwsd: remove thin wrapper
Change-Id: Id84a404aecd7f553665e65c1959dcca45309199e
Reviewed-on: https://gerrit.libreoffice.org/25240
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:29:51 +00:00
Ashod Nakashian
32ee3d0650 loolwsd: socket sending returns success or failure
Change-Id: I3f486b236e5b6a83292a9d7f3e4931e5235f3a33
Reviewed-on: https://gerrit.libreoffice.org/25239
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:28:16 +00:00
Ashod Nakashian
7f62bb54fd loolwsd: unified forwardToPeer
Change-Id: Ib12626adad1ff3cf647d6a32f9b1eae35f794b2f
Reviewed-on: https://gerrit.libreoffice.org/25238
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:26:15 +00:00
Ashod Nakashian
c6454ff9ed loolwsd: protect against null lok::Document
Change-Id: Iffa9c7f708d04bede5d98ba311e499a0874605fc
Reviewed-on: https://gerrit.libreoffice.org/25237
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:22:34 +00:00
Ashod Nakashian
46c5ce3041 loolwsd: remove unnecessary dispatchChild and simplify
Change-Id: I6edb5a51bc2d58b58f53f6689e9d37613fc508de
Reviewed-on: https://gerrit.libreoffice.org/25236
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:20:59 +00:00
Ashod Nakashian
7444ad4348 loolwsd: check for null WS before shutdown
Change-Id: I47ad44cdfdbcac61bf64bf9e698f23c502a748a5
Reviewed-on: https://gerrit.libreoffice.org/25235
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:19:46 +00:00
Ashod Nakashian
f3a1e6e81e loolwsd: replenish children on finishing a prisoner socket thread
Change-Id: Id6b1a12439431819910f6c5c99cb630b48c87805
Reviewed-on: https://gerrit.libreoffice.org/25234
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:19:27 +00:00
Ashod Nakashian
e797ae9861 loolwsd: logging improvements
Change-Id: Ic28e8f523f67e3339cae20adcf6cab966b610f24
Reviewed-on: https://gerrit.libreoffice.org/25233
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:19:04 +00:00
Ashod Nakashian
6ce9868a9c loolwsd: more frequent zombie reaping in forkit
Change-Id: I10d859880cfd933c38572852f506eedf603e8fad
Reviewed-on: https://gerrit.libreoffice.org/25232
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-05-21 03:16:56 +00:00
Andras Timar
cebc99c52d loleaflet: uno commands l10n, forgot to add this 2016-05-20 21:47:05 +02:00
Andras Timar
bd6ee3a8b6 loleaflet: initial l10n support of context menus 2016-05-20 18:13:44 +02:00
Andras Timar
625de77dd3 loolwsd: packaging, setcap cap_sys_admin=ep /usr/bin/loolmount 2016-05-20 15:51:05 +02:00
Andras Timar
2c2073231e loolwsd: fix deb dependency, will depend on collaboraoffice metapackage 2016-05-20 15:46:56 +02:00
Andras Timar
7983031827 loleaflet: typo: seperator->separator 2016-05-20 11:06:41 +02:00
Andras Timar
baedc87858 add LibreOfficeKit.hpp to tarball 2016-05-19 17:24:11 +02:00
Miklos Vajna
b0b9648e28 Remove unused 'using' decls
Change-Id: Ibdcf0a0fe2390712059e6e70c47bd60f6416c6be
2016-05-19 16:42:41 +02:00
Jan Holesovsky
6f868ed74d loleaflet: Pack the toolbars a bit to take less space. 2016-05-19 10:13:46 +02:00
Jan Holesovsky
3b6cdcb790 loleaflet: Don't check the 'Take edit' button, only enable/disable. 2016-05-19 08:48:40 +02:00
Jan Holesovsky
58e7bfd971 loleaflet: Adjust various css values to the large icons. 2016-05-19 00:50:17 +02:00
Jan Holesovsky
4d539a5cd3 loleaflet: Switch to using large icons.
Kept the small icons around for the case we'd like to implement switching
between these two (?) - OTOH not sure it makes sense, as the toolbars will not
get smaller by just using the smaller icons...  But always can remove them in
a separate commit.
2016-05-19 00:43:51 +02:00
Jan Holesovsky
b5eee85e20 loleaflet: Rename the icons to what is directly in LibreOffice.
So that it is easier to update to new version etc.
2016-05-19 00:43:51 +02:00
Jan Holesovsky
e3b0d00240 Kill the rest of document_simple_example.html + related controls.
[Those that are not used in the loleaflet.html.]
2016-05-19 00:43:51 +02:00
Jan Holesovsky
1e57be7094 Fix some broken icons, remove the unused ones. 2016-05-19 00:43:51 +02:00