I built and tested 0bbbbd1. It looks solid. The only SEGV I saw
was http://paste.ubuntu.com/899526/ but I couldn't repro and I'm on
12.04 nightly so it might not be shotwell? Anyway. here is some stuff
I noted:
*** Even if I have the youtube plugin enabled in preferences, I can't
see youtube listed when selecting a video and clicking PUBLISH ? Not
sure how that's supposed to work?
*** If I record a _single_ video recording with a Canon Legria HF200,
then import everything that's on the memory card into shotwell; then
the library shows 5 copies of a stock "movie tape" icon (if I click
them totem opens and says "unable to determine stream type"), also I
see one video thumbnail that is showed as a photo (not that strange
since it's a JPG) and also the actual video clip I recorded. It would
be nice if Shotwell didn't create all these other extra thumbnails
that cannot be played anyway. I've compressed everything on the memory
card after shooting a single recording and uploaded in a tgz here:
http://temp.minimum.se/shotwell_issues/straight_from_memcard_on_hdcamera_canon_legria_hf200.tgz
These kinds of AVCHD cameras (which is a standard btw, it's not just
Canon cameras that use this) have a pretty extensive directory tree of
video files, video thumbnails and other metadata and I think it's fair
to say that the typical user might not even be able to determine which
of these files are the actual movies and which ones a metadata. So I
think it's pretty important that Shotwell learns about these directory
structures so that A) it doesn't create those stock movie tape
thumbnail entries that can't be clicked anyway, and so that B) it can
couple the video thumbnail to the actual video like the RAW+JPG thing
(or maybe just ignore the video thumbnails if shotwell generates
thumbnails automatically from the video content itself). Note that
during the import of the memcard contents, I see errors such as:
L 30416 2012-03-25 16:54:58 [DBG] VideoMetadata.vala:95: Error while
testing for QuickTime file for
/home/molsson/fuzzing/bugs/hdcamera_import_all/PRIVATE/AVCHD/BDMV/PLAYLIST/00000.MPL:
Unexpected early end-of-stream
L 30416 2012-03-25 16:54:58 [DBG] VideoMetadata.vala:95: Error while
testing for QuickTime file for
/home/molsson/Pictures/2012/03/25/00000_1.CPI: Unexpected early
end-of-stream
L 30416 2012-03-25 16:54:58 [WRN] VideoSupport.vala:122: Unable to
read video metadata: File
/home/molsson/Pictures/2012/03/25/00000_1.CPI is not a supported video
format...and hence it might just be that you need to respond to such
an error by not creating a thumbnail. The real video file in this case
is the .MTS file.
*** While processing large images on machines with little RAM,
Shotwell crashes instead of "failing to show the image and/or complete
the operation but otherwise maintaining its composure". For example,
on my laptop with 2GB RAM, I can import this image, but if I select
the imported image in the library and press the ENHANCE button, then
Shotwell crashes:
http://temp.minimum.se/shotwell_issues/white-d21600x21600.jpg
This image is just little over 21k times 21k which is not really that
large (~1.8GB of pixel bytes); many photostitchers and (very) high end
cameras generate such images. I also noticed that I can emulate this
exact crash on my dev machine (with lots of memory), by start a
terminal and running "ulimit -v 3000000 ; ./shotwell", then importing
the file, then selecting it in the library and then pressing ENHANCE.
The crash I see in both cases is a !=NULL assert at:
#3 0x00d56eae in g_assertion_message (domain=0x0, file=0x851b450
"/home/molsson/src/shotwell/src/Photo.vala", line=3140, func=0x851fa42
"photo_get_pixbuf_with_options", message=<optimized out>) at
/build/buildd/glib2.0-2.31.22/./glib/gtestutils.c:1860
#4 0x00d574af in g_assertion_message_expr (domain=0x0, file=0x851b450
"/home/molsson/src/shotwell/src/Photo.vala", line=3140, func=0x851fa42
"photo_get_pixbuf_with_options", expr=0x851c6cd "_tmp42_ != NULL") at
/build/buildd/glib2.0-2.31.22/./glib/gtestutils.c:1871
#5 0x0832f981 in photo_get_pixbuf_with_options (self=0x8aefb80,
scaling=0xb2a9afa8, exceptions=PHOTO_EXCEPTION_NONE,
fetch_mode=BACKING_FETCH_MODE_BASELINE, error=0xb2a9afbc) at
/home/molsson/src/shotwell/src/Photo.vala:3140
#6 0x0832e797 in photo_real_get_pixbuf (base=0x8aefb80,
scaling=0xb2a9b03c, error=0xb2a9b050) at
/home/molsson/src/shotwell/src/Photo.vala:3006
#7 0x081d78c1 in photo_source_get_pixbuf (self=0x8aefb80,
scaling=0xb2a9b03c, error=0xb2a9b050) at
/home/molsson/src/shotwell/src/core/DataSourceTypes.vala:60
#8 0x083cc6c5 in pixbuf_cache_baseline_fetch_job_real_execute
(base=0x95092a8) at /home/molsson/src/shotwell/src/PixbufCache.vala:50
#9 0x080bb6e6 in background_job_execute (self=0x95092a8) at
/home/molsson/src/shotwell/src/threads/BackgroundJob.vala:123
Now, I'm not suggesting that Shotwell should get full OOM safety, but
graceful error paths for the (handful?) of code paths where Shotwell
allocate really large amounts of memory would be nice so that even
users with 2GB RAM can safely do "import all images in homedir" and
possibly some other operations that allocate copies of the image etc
(like I assume enhance does?) without worrying too much. It would be
really cool if you could get to the stage where it's possible to run a
large import, enhance and export round trip session for a sizable set
of images of various large sizes, without actually crashing.
*** When importing this image:
http://temp.minimum.se/shotwell_issues/wilts_bus.jpg
I get the following errors printed to the terminal:
(shotwell:18573): LIBDBUSMENU-GTK-WARNING **: Could not parse '_Delete
Tag "Wilts & Dorset Bus"': Error on line 1: Entity did not end with a
semicolon; most likely you used an ampersand character without
intending to start an entity - escape ampersand as &
(shotwell:18573): LIBDBUSMENU-GTK-WARNING **: Could not parse 'Re_name
Tag "Wilts & Dorset Bus"...': Error on line 1: Entity did not end with
a semicolon; most likely you used an ampersand character without
intending to start an entity - escape ampersand as &
(shotwell:18573): LIBDBUSMENU-GTK-WARNING **: Could not parse 'Remove
Tag "Wilts & Dorset Bus" From _Photos': Error on line 1: Entity did
not end with a semicolon; most likely you used an ampersand character
without intending to start an entity - escape ampersand as &
...this error can most likely be fixed with an extra call to
g_markup_printf_escaped() or similar.
*** The above bug can also be hit if you take any plain JPG, import
it, select it, open "Add Tags" and enter "a&b".
*** "make -j8" fails to do proper dependency checking whereas "make"
does it correctly. This is likely confusing with newbie developers
that want to help out.
*** Shotwell calls Gst.init() but never bothers to call Gst.deinit()
causing a (relatively harmless) memory leak.
*** Right-click an image, select "add tag", enter "blah". Right-click
the "blah" node under "Tags" and select "rename", enter "a,b". Now you
have a tag with a "," in the name. Now select the photo that has this
tag and select "Modify tags", the dialog loads it as "a,b" but when
you press OK it splits the tag into two tags. This is an escaping
inconsistency.
*** If I launch (WARNING: make sure you dont loose data if you run
this command!) Shotwell using:
dconf reset -f /apps/shotwell/ ; rm -rf ~/.cache/shotwell/
~/.shotwell/ ; SHOTWELL_LOG_FILE=:console: SHOTWELL_LOG=1 ./shotwell
Then I can see DirectoryMonitor.vala sniffing around in my homedir
_before_ I even clicked OK in the welcome dialog (i.e. shotwell
doesn't know yet if I want to "Import ~" or not). Is this really
intended? The stuff I see is for example:
L 24260 2012-03-25 15:35:48 [WRN] DirectoryMonitor.vala:912: Skipping
hidden file/directory /home/molsson/blah/yada/.hiddenfile
*** In Edit::Preferences::Plugins, if you click on ABOUT for some
plugin and then LICENSE; then all of them show the license text
"Shotwell is free software; you can redistribute it...". Shouldn't
those be modified to say "PluginThisAndThat is free software; you can
redistribute it"?
*** FEATURE REQUEST: Noise reduction (i.e. if you were forced to crank
up the ISO too high on the camera, then Shotwell should have some
postprocessing magic that eases the pain).
*** Import a photo. After clicking OK on the "imported 1 photo"
dialog, note that the ROTATE/ENHANCE/PUBLISH buttons are not grayed
out, but still not clickable (no photo is selected so imo they should
be grayed out).
*** Import lots of photos so you have like 100 events. Click the
events root node labelled "Events". Now hold down the DOWN arrow for
like 15 seconds in a futile attempt at quickly moving the selection
downward a couple of steps. What happens is that Shotwell expands the
node for each year, month and event and this takes a bit of time which
is fine ofc. The problem is that Shotwell keeps collecting and
queueing new keyboard events while it is doing that, and this has the
effect that even if the user releases the DOWN key, Shotwell will keep
processing old keyboard events for a long long time. On my machine
this results in Shotwell being grayed out as unresponsive and I have
to wait 1-2 minutes before Shotwell becomes usable again depending on
how long I held down the DOWN key. This is kind of a minor issue but a
bit annoying. It would be better if Shotwell didn't accept and queue
new keyboard events while it was expanding and showing an event node.
*** Missing space char in debug print outs:
http://temp.minimum.se/shotwell_issues/0001-Add-missing-space-in-debug-output.patch
*** Fix spelling s/sibbling/sibling/ in debug output:
http://temp.minimum.se/shotwell_issues/0001-Fix-spelling-s-sibbling-sibling-in-debug-output.patch
*** FEATURE REQUEST: Ability to rotate videos.
*** FEATURE REQUEST: Ability to upload to imgur.com (already requested
in http://redmine.yorba.org/issues/2931 )
*** This image makes it past the import but can't be viewed or exported:
http://temp.minimum.se/shotwell_issues/importable_but_not_exportable.jpg
The file is partially corrupt but is viewable in "eog" nevertheless.
While Shotwell processes this file I see:
L 20401 2012-03-25 13:41:14 [CRT] PixbufCache.vala:262: Unable to
readahead [1]
/home/molsson/fuzzing/bugs/importable_but_not_exportable/importable_but_not_exportable.jpg:
Failed to load image
'/home/molsson/fuzzing/bugs/importable_but_not_exportable/importable_but_not_exportable.jpg':
Error interpreting JPEG image file (Unsupported marker type 0x64)
L 20401 2012-03-25 13:41:14 [CRT] data_collection_mark: assertion
`IS_DATA_OBJECT (object)' failed
L 20401 2012-03-25 13:41:14 [CRT] view_collection_select_marked:
assertion `IS_MARKER (marker)' failed
*** In Edit::Preferences::Library, "Directory structure:" and
"Default:" share the same mnemonic. In older GTK versions this caused
CTRL-D presses to alternate between the two but right now none of them
gets focused. Also the ALT-P mnemonic doesn't work at all, not even
after selecting CUSTOM in the "Directory structure" field.
*** UI consistency: The PUBLISH wizard pages for facebook, picasa and
flickr
has different UI padding; looks a bit inconsistent.
*** Disable all plugins and then select "import from app" in file
menu, the dialog explains you got no plugins, but when this dialog is
closed Shotwell prints this error:
L 8214 2012-03-13 20:00:36 [CRT]
spit_data_imports_plugin_host_stop_importing: assertion
`SPIT_DATA_IMPORTS_IS_PLUGIN_HOST (self)' failed
*** UI/USABILITY FEEDBACK: The welcome dialog says "Import photos from
your ~ folder". There are probably quite a new novice Linux users that
do not know what ~ means, perhaps it should say "home folder" instead?
*** UI/USABILITY FEEDBACK: Suppose a user wants to select all photos
from an event and use the "Enhance" functionality on them. This, and
also rotate, doesn't work if there is at least one video included in
the event (i.e. if at least one video is selected the ROTATE/ENHANCE
buttons will be disabled/unclickable). There is no cue or hint in the
UI that explains to the user why those buttons are no longer
clickable. Here are some ideas for fixing this A) when the button is
disabled due to this particular reason, then change the button tooltip
to say "Rotation is not available when one or more videos are
selected", or B) have the button enabled and rotate/enhance only the
photos, silently ignoring the videos that happened to be selected as
well (this would weird, especially if the user selects _only_ videos
although ofc one could make the rotate/enhance buttons be disabled for
that particular case), C) show a warning/confirm dialog saying that
"you have one or more videos selected; these will not be
rotated/enhanced", D) come up with something even better! Also, as
long as Shotwell has this constraint, it might be useful to have a
"Select all photos" menu item next to the "Edit::Select All", which
doesn't just help to alleviate the unable-to-enhance-all problem, it's
also somewhat useful for cases where one wants to PUBLISH only the
photos from an event and not the videos.
*** At first I found it a bit confusing that File::Export and
"File::Send To" gives me the exact same _export_ dialog. It would be
easier to understand if the "Send To" dialog was just a single big
dialog containing both the "format" stuff and the "send to target"
stuff. However, since the "Send To" dialog is a GNOME dialog, this
might not be easy to do.
Martin
On 03/22/2012 07:43 PM, Adam Dingle wrote:
Shotwell users,
We're planning to release Shotwell 0.12.0 next week. Now is your last
chance to build Shotwell from trunk, test and help find bugs!
New features since 0.11 include:
- a new straighten tool
- migrated from GTK 2 to GTK 3 (a large change that touched many
places in the code)
- Flickr login now uses OAuth authentication
- Plugins can now implement new import sources. F-Spot import is now
implemented via such a plugin. (Maybe someone will write a digiKam
import plugin soon.)
- Shotwell now imports only photos from the DCIM directory on Android
devices
- saved searches can exclude all photos tagged with a given string
- many bug fixes
It's not hard to build Shotwell from trunk - see
http://yorba.org/shotwell/install/#source . To build from trunk you'll
need the following prerequisites:
- Vala 0.15.2
- a relatively new version of gexiv2, either version 0.3.92 (available
at http://www.yorba.org/download/gexiv2/0.3/) or pulled from git
- librest, which is a new Shotwell dependency. (On Ubuntu, for
example, you want the librest-dev package.)
If you're having trouble building, feel free to ask for help here.
If you do find bugs, please feel free to report them on this mailing
list and/or file tickets at Yorba Redmine. Thanks!
adam
_______________________________________________
Shotwell mailing list
[email protected]
http://lists.yorba.org/cgi-bin/mailman/listinfo/shotwell
_______________________________________________
Shotwell mailing list
[email protected]
http://lists.yorba.org/cgi-bin/mailman/listinfo/shotwell