Bug 422312 - Krita for Android opens vector layers as empty.
Summary: Krita for Android opens vector layers as empty.
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tools/Vector (show other bugs)
Version: 4.2.9
Platform: Android Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-06-01 07:42 UTC by wolthera
Modified: 2020-09-24 06:02 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
test file from desktop version (2.11 MB, application/x-krita)
2020-06-01 20:10 UTC, Anna Medonosova
Details
test file from android version (1.70 MB, application/x-krita)
2020-06-01 20:14 UTC, Anna Medonosova
Details
logfile for saving and loading vectors. (5.47 KB, text/plain)
2020-06-03 10:44 UTC, wolthera
Details

Note You need to log in before you can comment on or make changes to this bug.
Description wolthera 2020-06-01 07:42:26 UTC
SUMMARY
When opening a file with vector layers on Krita for Android, these layers are completely empty.

STEPS TO REPRODUCE
1. Open up a file with vectors in them, for example one of the comic templates.
2. Do this on both desktop and android krita.
3. Observe differences

OBSERVED RESULT
The file on android krita will have no vectors visible.

EXPECTED RESULT
The file on android Krita opens as close as possible to desktop version.
Comment 1 wolthera 2020-06-01 08:52:07 UTC
Log viewer on android
=====================
Warning: requested data for unknown action "toggle-edit-mode"
Warning: requested data for unknown action "align-relative"
Warning: requested data for unknown action "align-left"
Warning: requested data for unknown action "align-centerh"
Warning: requested data for unknown action "align-right"
Warning: requested data for unknown action "align-top"
Warning: requested data for unknown action "align-centerv"
Warning: requested data for unknown action "align-bottom"
Warning: requested data for unknown action "escape-all"
Warning: requested data for unknown action "escape-horizontal"
Warning: requested data for unknown action "escape-vertical"
Warning: requested data for unknown action "escape-left"
Warning: requested data for unknown action "escape-right"
Warning: requested data for unknown action "escape-up"
Warning: requested data for unknown action "escape-down"
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Empty filename passed to function
inotify_add_watch(/) failed: (Permission denied)
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
inotify_add_watch(/storage/emulated) failed: (Permission denied)
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation


Log viewer on krita 5, desktop
==============================
Warning: requested data for unknown action "toggle-edit-mode"
Warning: requested data for unknown action "align-relative"
Warning: requested data for unknown action "align-left"
Warning: requested data for unknown action "align-centerh"
Warning: requested data for unknown action "align-right"
Warning: requested data for unknown action "align-top"
Warning: requested data for unknown action "align-centerv"
Warning: requested data for unknown action "align-bottom"
Warning: requested data for unknown action "escape-all"
Warning: requested data for unknown action "escape-horizontal"
Warning: requested data for unknown action "escape-vertical"
Warning: requested data for unknown action "escape-left"
Warning: requested data for unknown action "escape-right"
Warning: requested data for unknown action "escape-up"
Warning: requested data for unknown action "escape-down"
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
QFont::setPointSizeF: Point size <= 0 (-0.900000), must be greater than 0
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Empty filename passed to function
inotify_add_watch(/) failed: (Permission denied)
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
inotify_add_watch(/storage/emulated) failed: (Permission denied)
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Case insensitive sorting unsupported in the posix collation implementation
Numeric mode unsupported in the posix collation implementation
Comment 2 wolthera 2020-06-01 08:52:37 UTC
Ack, I mean for the last one:

KisResourceModel::resetQuery for "brushes" took 13 ms
KisResourceModel::resetQuery for "gamutmasks" took 1 ms
KisResourceModel::resetQuery for "gradients" took 3 ms
KisResourceModel::resetQuery for "layerstyles" took 0 ms
KisResourceModel::resetQuery for "paintoppresets" took 39 ms
KisResourceModel::resetQuery for "palettes" took 6 ms
KisResourceModel::resetQuery for "patterns" took 40 ms
KisResourceModel::resetQuery for "preset" took 0 ms
KisResourceModel::resetQuery for "sessions" took 0 ms
KisResourceModel::resetQuery for "symbols" took 1 ms
KisResourceModel::resetQuery for "tasksets" took 1 ms
KisResourceModel::resetQuery for "windowlayouts" took 1 ms
KisResourceModel::resetQuery for "workspaces" took 3 ms
KisStorageModel::resetQuery took 0 ms
>>>> loadPalettes QVector()
SET PALETTE LIST 0 storage [RESOURCESTORAGE] Name: "{92d02fdd-a26e-4963-946d-a2bac3c84a23}" Version: "{92d02fdd-a26e-4963-946d-a2bac3c84a23}" Valid: true Storage: "Memory" Timestamp: QDateTime(2020-06-01 10:51:30.087 CEST Qt::LocalTime)
Warning: requested data for unknown action "toggle-edit-mode"
Warning: requested data for unknown action "align-relative"
Warning: requested data for unknown action "align-left"
Warning: requested data for unknown action "align-centerh"
Warning: requested data for unknown action "align-right"
Warning: requested data for unknown action "align-top"
Warning: requested data for unknown action "align-centerv"
Warning: requested data for unknown action "align-bottom"
Warning: requested data for unknown action "escape-all"
Warning: requested data for unknown action "escape-horizontal"
Warning: requested data for unknown action "escape-vertical"
Warning: requested data for unknown action "escape-left"
Warning: requested data for unknown action "escape-right"
Warning: requested data for unknown action "escape-up"
Warning: requested data for unknown action "escape-down"
resourceByName "Default"
resourceByName "Default"
resourceByName "Default"
resourceByName "Default"
resourceByName "b)_Basic-5_Size_Opacity"
Comment 3 Anna Medonosova 2020-06-01 20:09:13 UTC
I can confirm this bug on krita/4.3 branch, Android 10.

I have also observed following behavior, which may be associated with this bug:

A. embedded reference images are not shown on android
B. data from vector layers created on android are missing from the kra files

Ad B. Steps to reproduce:

1. Create a document with a vector layer on android.
2. Draw something on the vector layer. Newly created shapes are visible.
3. Save and close the document.
4. Upon reopening the document, the vector shapes are gone.

The resulting kra file lists the vector layer in the maindoc.xml, but the directory with the content.svg is missing completely. The preview, however, shows the vector shapes. I'm attaching example files.
Comment 4 Anna Medonosova 2020-06-01 20:10:54 UTC
Created attachment 128980 [details]
test file from desktop version
Comment 5 Anna Medonosova 2020-06-01 20:14:42 UTC
Created attachment 128981 [details]
test file from android version
Comment 6 wolthera 2020-06-03 09:26:56 UTC
That's starting to sound like this bug is in the saving and loading code. Krita on android is capable of making vector objects, but not of saving and loading them? I wonder what could be messing that up, as other XML parts of the kra format do not seem to be affected?

Maybe we should try to load each savable feature one-by-one to see if this extends to other items?
Comment 7 Halla Rempt 2020-06-03 09:29:20 UTC
It might help to open the log docker and enable the file handling debug area and see if it throws up something interesting.
Comment 8 wolthera 2020-06-03 09:59:08 UTC
Erp, for some reason my logs didn't save when I was trying to copy them to the disk (I think android doesn't like the : in the savefilename), but it seems as if the save/load is SKIPPING over the shape file contents almost entirely. As in, detailed information about the raster layers, but no information whatsoever about the vector layers when loading and only a single line when saving.
Comment 9 wolthera 2020-06-03 10:44:46 UTC
Created attachment 129020 [details]
logfile for saving and loading vectors.

So, I tried again, 'layer 3' is the shape layer in both cases, with the first part saving and the second part loading(second part is from a separate file saved with krita desktop).

For reference, for the loading part, on the same file, krita desktop gives:

----------------------------------------------
11 ("mimetype", "maindoc.xml", "documentinfo.xml", "preview.png", "Unnamed/layers/layer2", "Unnamed/layers/layer2.defaultpixel", "Unnamed/layers/layer2.icc", "Unnamed/layers/layer3.shapelayer/content.svg", "Unnamed/annotations/icc", "Unnamed/annotations/proofing/icc", "mergedimage.png")
KOStore "root" "maindoc.xml"
Opening for reading "maindoc.xml"
No attribute color space for layer:  "page_margin_and_bleeds"
Searching color space:  "RGBA" "RGBA" "U8"  for layer:  "sketch"
found colorspace "RGB/Alpha (8-bit integer/channel)" ("RGBA","U8" )
KOStore "documentinfo.xml" "documentinfo.xml"
Opening for reading "documentinfo.xml"
KOStore "Unnamed/annotations/icc" "Unnamed/annotations/icc"
Opening for reading "Unnamed/annotations/icc"
KOStore "Unnamed/annotations/proofing/icc" "Unnamed/annotations/proofing/icc"
Opening for reading "Unnamed/annotations/proofing/icc"
going to load  "xmp" ,  "XMP"  from  "Unnamed/layers/.xmp.metadata"
going to load  "xmp" ,  "XMP"  from  "Unnamed/layers/layer3.xmp.metadata"
KOStore "content.svg" "Unnamed/layers/layer3.shapelayer/content.svg"
Opening for reading "Unnamed/layers/layer3.shapelayer/content.svg"
KOStore "Unnamed/layers/layer2.defaultpixel" "Unnamed/layers/layer2.defaultpixel"
Opening for reading "Unnamed/layers/layer2.defaultpixel"
KOStore "Unnamed/layers/layer2" "Unnamed/layers/layer2"
Opening for reading "Unnamed/layers/layer2"
KOStore "Unnamed/layers/layer2.icc" "Unnamed/layers/layer2.icc"
Opening for reading "Unnamed/layers/layer2.icc"
Data to load:  9080  from  "Unnamed/layers/layer2.icc"  with color space  "RGBA"
Profile size:  9080   true   0   9080
going to load  "xmp" ,  "XMP"  from  "Unnamed/layers/layer2.xmp.metadata"
>>>> loadPalettes QVector()
SET PALETTE LIST 0 storage [RESOURCESTORAGE] Name: "{1052c48d-cec9-4f72-b8be-8c15a21283cb}" Version: "{1052c48d-cec9-4f72-b8be-8c15a21283cb}" Valid: true Storage: "Memory" Timestamp: QDateTime(2020-06-03 12:43:39.477 CEST Qt::LocalTime)
resourceByName "Default"
4 ("mimetype", "colorset.xml", "sRGB-elle-V2-srgbtrc.icc", "profiles.xml")
KOStore "profiles.xml" "profiles.xml"
Opening for reading "profiles.xml"
KOStore "colorset.xml" "colorset.xml"
Opening for reading "colorset.xml"
4 ("mimetype", "colorset.xml", "sRGB-elle-V2-srgbtrc.icc", "profiles.xml")
KOStore "profiles.xml" "profiles.xml"
Opening for reading "profiles.xml"
KOStore "colorset.xml" "colorset.xml"
Opening for reading "colorset.xml"
Comment 10 wolthera 2020-06-03 10:54:46 UTC
hey, if android doesn't like ':', do you think the problem is opening a path named layer3.shapelayer inside the zip file? So, that android doesn't like opening filepaths inside zip files with a period in them?
Comment 11 sh_zam 2020-09-24 06:00:09 UTC
Git commit b9fb413010e3bd5841a6afe3c1cf47af3d206d4e by Sharaf Zaman.
Committed on 23/09/2020 at 11:17.
Pushed by szaman into branch 'krita/4.3'.

Bugfix: Vector/references don't get rendered

KisExternalLayer had no key function, so the typeinfo
was emitted as a weak symbol. So, it may not always be
possible to merge the typeinfo with shared libraries,
correctly. This would make dynamic_cast fail (because
it depends on RTTI in this case).

src: https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#rtti_exceptions-not-working-across-library-boundaries

M  +1    -0    libs/image/CMakeLists.txt
A  +24   -0    libs/image/kis_external_layer_iface.cc     [License: GPL (v2+)]
M  +2    -3    libs/image/kis_external_layer_iface.h

https://invent.kde.org/graphics/krita/commit/b9fb413010e3bd5841a6afe3c1cf47af3d206d4e
Comment 12 sh_zam 2020-09-24 06:00:54 UTC
Git commit b83bcf7d7b32c563fab395181a67d1f78a6f133a by Sharaf Zaman.
Committed on 24/09/2020 at 06:00.
Pushed by szaman into branch 'master'.

Bugfix: Vector/references don't get rendered

KisExternalLayer had no key function, so the typeinfo
was emitted as a weak symbol. So, it may not always be
possible to merge the typeinfo with shared libraries,
correctly. This would make dynamic_cast fail (because
it depends on RTTI in this case).

src: https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#rtti_exceptions-not-working-across-library-boundaries


(cherry picked from commit b9fb413010e3bd5841a6afe3c1cf47af3d206d4e)

M  +1    -0    libs/image/CMakeLists.txt
A  +24   -0    libs/image/kis_external_layer_iface.cc     [License: GPL (v2+)]
M  +2    -3    libs/image/kis_external_layer_iface.h

https://invent.kde.org/graphics/krita/commit/b83bcf7d7b32c563fab395181a67d1f78a6f133a
Comment 13 sh_zam 2020-09-24 06:02:10 UTC
Git commit fb2d5eb4c49175812ac99f5944ad3b7b22d35eb3 by Sharaf Zaman.
Committed on 24/09/2020 at 06:02.
Pushed by szaman into branch 'krita/4.4.0'.

Bugfix: Vector/references don't get rendered

KisExternalLayer had no key function, so the typeinfo
was emitted as a weak symbol. So, it may not always be
possible to merge the typeinfo with shared libraries,
correctly. This would make dynamic_cast fail (because
it depends on RTTI in this case).

src: https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#rtti_exceptions-not-working-across-library-boundaries


(cherry picked from commit b9fb413010e3bd5841a6afe3c1cf47af3d206d4e)

M  +1    -0    libs/image/CMakeLists.txt
A  +24   -0    libs/image/kis_external_layer_iface.cc     [License: GPL (v2+)]
M  +2    -3    libs/image/kis_external_layer_iface.h

https://invent.kde.org/graphics/krita/commit/fb2d5eb4c49175812ac99f5944ad3b7b22d35eb3