Giter VIP home page Giter VIP logo

f-spot's Introduction

F-Spot Photo Manager

No website currently. PLEASE DO NOT VISIT THE OLD WEBSITE

WARNING

The code base is in heavy flux right now. It might be completely broken right now. Known issues:

  • Doesn't start
  • AdjustTimeDialog is completely broken due to removing Gnome.DateTime
  • Autotools stuff is likely doing the wrongs things due to heavy changes.

Chat

Join the chat at https://gitter.im/mono/f-spot

Build Status

Branch Status
Master (Linux) Build Status
Master (Linux) Actions Status
Master (Windows) Build Status

Requirements

- GNOME development libraries 2.4 or later, http://www.gnome.org

- Mono 6.0.0 or later, http://www.mono-project.com

- gtk-sharp 2.12.2 or later, http://www.mono-project.com

- Sqlite 2.8.6 or later

- liblcms 2 or later, http://www.littlecms.com/

- hicolor-icon-theme 0.10 or later, https://www.freedesktop.org/wiki/Software/icon-theme

- adwaita-icon-theme 3.18.0 or later, https://download.gnome.org/sources/adwaita-icon-theme/3.13

- NuGet, https://www.nuget.org/

The following requirements are automatically installed by make via NuGet

- TagLibSharp 2.2.0

Tests

- NUnit 3.12.0

- Moq 4.13.1

Installing missing Certificates

On distributions like Fedora or Mageia, Mono installations come without root certificates installed, and those may not necessarily be synced from the local root certificates as a post installation step either. So on a fresh install, you may need to use the cert-sync tool in order to sync your local root certificates into the Mono truststore

More details in the Mono 3.12 Release Notes

To invoke the tool manually use

sudo cert-sync /path/to/ca-bundle.crt

On Debian systems, that’s

sudo cert-sync /etc/ssl/certs/ca-certificates.crt

and on Red Hat derivatives (Fedora, CentOS, Mageia, etc...) it’s

sudo cert-sync /etc/pki/tls/certs/ca-bundle.crt

Your distribution might use a different path, if it’s not derived from one of those.

Build

To compile, just go through the normal autogen/configure stuff and then make install.

Launch

To launch F-Spot, run $(prefix)/bin/f-spot.

With MonoDevelop

If you want to use to build and run F-Spot here are notes about that process.

There are a few steps you have to run before you can open MonoDevelop:

1.  ./autogen.sh (on ubuntu you have to do ./autogen.sh)
2.  cd build; make
3.  cd lib/libfspot; make
4.  sudo make install (this will install the libfspot.so files)

OR

1. ./prep_linux_build.sh prefix={some/path}

I like to do ~/staging

This will build a couple tools in ./build that are needed to build the projects in ./lib.

Once these two directories are built you can now open and build and run f-spot from there.

Alt

f-spot's People

Contributors

andrejz avatar angryziber avatar chkr-private avatar claudep avatar decriptor avatar dkoeb avatar dmustieles avatar dooteo avatar frandieguez avatar futuretim avatar gburt avatar jordimas avatar jwendell avatar kelemeng avatar lack avatar lewing avatar maxxer avatar mtrmac avatar palango avatar paulwb avatar piotrdrag avatar pmkovar avatar polymeris avatar prokoudine avatar rubenv avatar stephanedelcroix avatar thomasvm avatar tigger avatar wdzierzanowski avatar yeager avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

f-spot's Issues

[BUILD] autogen.sh completes even without gio-sharp and gtk-sharp-beans

While running autogen.sh on a blank mageia 5 install, and after installing all the packages that autogen.sh was complaining about, the script finally complete, albeit with a complaint about a missing gio-sharp and gtk-sharp-beans:

Package gtk-sharp-beans-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk-sharp-beans-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk-sharp-beans-2.0' found
cp: omitting directory ‘/bin’
cp: omitting directory ‘/boot’
cp: cannot open ‘/dead.letter’ for reading: Permission denied
cp: omitting directory ‘/dev’
cp: omitting directory ‘/etc’
cp: omitting directory ‘/home’
cp: omitting directory ‘/initrd’
cp: omitting directory ‘/lib’
cp: omitting directory ‘/lib64’
cp: omitting directory ‘/lost+found’
cp: omitting directory ‘/media’
cp: omitting directory ‘/mnt’
cp: omitting directory ‘/opt’
cp: omitting directory ‘/proc’
cp: omitting directory ‘/root’
cp: omitting directory ‘/run’
cp: omitting directory ‘/sbin’
cp: omitting directory ‘/srv’
cp: omitting directory ‘/sys’
cp: omitting directory ‘/tmp’
cp: omitting directory ‘/usr’
cp: omitting directory ‘/var’
Package gio-sharp-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gio-sharp-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gio-sharp-2.0' found

Those two packages should cause the autogen.sh script to fail.

Build errors w/Debian, solved by setting TargetFrameworkVersion to v4.5

When building on Debian (sid, using mono 4.2.1.102) a host of build errors are produced:

   CSC: error CS0518: The predefined type `System.Object' is not defined or imported
   CSC: error CS0518: The predefined type `System.(lots-of-other-types)' is not defined or imported
   ...

These errors can be avoided by setting TargetFrameworkVersion to v4.5 in the relevant .csproj files. The affected files are:

/external/flickrnet/FlickrNet/FlickrNet.csproj
/external/mono-addins/Mono.Addins/Mono.Addins.csproj
/external/mono-addins/Mono.Addins.Setup/Mono.Addins.Setup.csproj
/external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui.csproj

As it is not clear as to whether this error only occurs on Debian, only on mono 4.2.1 or whether it is limited by some other environmental factor I did not make a pull request.

F-Spot has major performance problems

When I for example maximise F-Spot window (this is important as it effects the performance of F-Spot great amount) in Gnome 3 X11 environment in Fedora 26, and then grab sidebar's separator and make sidebar larger and smaller I get awfully lot of following kind of messages to terminal:

Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Allocated from:
  at System.Environment.get_StackTrace () [0x00000] in <373b6e083d6e45e498c9082a8eebd27f>:0 
  at Cairo.CairoDebug.OnAllocated (System.IntPtr obj) [0x00000] in <a300e5fd77794b74940fa2ff01d7de01>:0 
  at Cairo.Surface..ctor (System.IntPtr handle, System.Boolean owner) [0x00000] in <a300e5fd77794b74940fa2ff01d7de01>:0 
  at Cairo.XlibSurface..ctor (System.IntPtr ptr, System.Boolean own) [0x00000] in <a300e5fd77794b74940fa2ff01d7de01>:0 
  at Cairo.Surface.Lookup (System.IntPtr surface, System.Boolean owned) [0x00000] in <a300e5fd77794b74940fa2ff01d7de01>:0 
  at Cairo.Context.GetTarget () [0x00000] in <a300e5fd77794b74940fa2ff01d7de01>:0 
  at Hyena.Gui.CairoExtensions.CreateSurfaceForPixbuf (Cairo.Context cr, Gdk.Pixbuf pixbuf) [0x00000] in <13a03b1deb1f49ca97548f1abc5fc036>:0 
  at FSpot.Widgets.RatingRenderer.Render (Cairo.Context cr, Gdk.Rectangle area, Cairo.Color color, System.Boolean showEmptyStars, System.Boolean isHovering, System.Int32 hoverValue, System.Double fillOpacity, System.Double hoverFillOpacity, System.Double strokeOpacity) [0x00000] in <6052d1b62eaf4306aae46beef48a3a92>:0 
  at Hyena.Widgets.RatingEntry.OnExposeEvent (Gdk.EventExpose evnt) [0x00000] in <13a03b1deb1f49ca97548f1abc5fc036>:0 
  at Gtk.Widget.exposeevent_cb (System.IntPtr widget, System.IntPtr evnt) [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at Gdk.Window.gdk_window_process_updates (System.IntPtr , System.Boolean ) [0x00000] in <247d3298cc1240adb6e328c488f64545>:0 
  at Gdk.Window.ProcessUpdates (System.Boolean update_children) [0x00000] in <247d3298cc1240adb6e328c488f64545>:0 
  at FSpot.Widgets.CellGridView.SetSize (System.Int32 x, System.Int32 y, System.Int32 width, System.Int32 height) [0x00000] in <6052d1b62eaf4306aae46beef48a3a92>:0 
  at FSpot.Widgets.CellGridView.UpdateLayout (Gdk.Rectangle allocation) [0x00000] in <6052d1b62eaf4306aae46beef48a3a92>:0 
  at FSpot.Widgets.CellGridView.OnSizeAllocated (Gdk.Rectangle allocation) [0x00000] in <6052d1b62eaf4306aae46beef48a3a92>:0 
  at Gtk.Widget.sizeallocated_cb (System.IntPtr widget, System.IntPtr allocation) [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at Gtk.Application.gtk_main () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at Gtk.Application.Run () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at FSpot.Driver.Startup () [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in <13a03b1deb1f49ca97548f1abc5fc036>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose

F-Spot performance is quite poor constantly. Similar terminal output to the above come out when I move any F-Spot UI element, click any buttons, click any images, transform any images, and so on. And while F-Spot doesn't crash, its speed can come down a lot to the point of chocking and almost hungs up completely but then comes back to it's stuttering self after few seconds.

Some items like moving the sidebar separator in browsing mode are clearly worse than others. Scrolling through the photo library by dragging scrollbar is quite bad as well and it can take many seconds for it to move to dragged spot and then even longer for images to show up on the browse view as thumbnails.

Hell, even the about dialog takes few seconds to pop-up and get drawn...

"Metadata of file may be corrupt"

When I import my jpgs at some point I get very many warnings of the same kind:

...
[Warn 23:52:28.957] Metadata of file file:///home/david/Fotos/2007/05/05/DSC_0004.JPG may be corrupt, refusing to write to it, falling back to XMP sidecar.
[Warn 23:52:29.473] Metadata of file file:///home/david/Fotos/2007/05/05/DSC_0003.JPG may be corrupt, refusing to write to it, falling back to XMP sidecar.
...

What do you suggest me doing for fixing it?

README is out of date

When minimum versions of dependencies are updated, it would be really helpful if any associated mention in README is also updated. It looks like at minimum mono, liblcms, dbus-sharp, and dbus-sharp-glib need updating.

[Flickr Export] Unable to login anymore for new users

Steps to reproduce:

  1. clean F-Spot instance (otherwise, you should logout first when you get the flickr export dialog)
  2. Pick a file, select "Export to Flickr"
  3. on the dialog, click "Authorize"
    Expected: browser opens, you are prompted to give permission to f-spot to use the flickr API on your behalf, and once done you can go back to F-Spot to Complete authentication
    Actual: Redirect in the browser gives you the flickr homepage, 'Complete authentication' button in F-Spot doesn't log you in.

Root cause: 'Frob' authentication to the Flickr API is deprecated in favor of OAuth.

filmstrip broken

the filmstrip doesn't appear (navigation thumbnails above the full picture edit/view). following strack trace:

#0  g_return_if_fail_warning (log_domain=log_domain@entry=0x7fffec7b01fe "GdkPixbuf", pretty_function=pretty_function@entry=0x7fffec7b04d0 <__PRETTY_FUNCTION__.24369> "gdk_pixbuf_get_width", 
    expression=expression@entry=0x7fffec7b0236 "GDK_IS_PIXBUF (pixbuf)") at gmessages.c:1018
#1  0x00007fffec79ee24 in gdk_pixbuf_get_width (pixbuf=0x0) at gdk-pixbuf.c:581
#2 0x400e834b in  (wrapper managed-to-native) Gdk.Pixbuf:gdk_pixbuf_get_width (intptr) + 0x5b (0x400e82f0 0x400e8376) [0x7ffff7f73cc0 - f-spot.exe]

"Main Thread" tid=0x0x7ffff7fbe740 this=0x0x7ffff7e38e70 thread handle 0x403 state : not waiting owns ()
  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) Gdk.Pixbuf.gdk_pixbuf_get_width (intptr) <IL 0x00011, 0xffffffff>
  at Gdk.Pixbuf.get_Width () [0x00001] in /home/abuild/rpmbuild/BUILD/gtk-sharp-2.12.10/gdk/generated/Pixbuf.cs:207
  at FSpot.Widgets.Filmstrip.OnExposeEvent (Gdk.EventExpose) [0x002cc] in f-spot-local/src/Clients/MainApp/FSpot.Widgets/Filmstrip.cs:348
  at Gtk.Widget.exposeevent_cb (intptr,intptr) [0x0000f] in /home/abuild/rpmbuild/BUILD/gtk-sharp-2.12.10/gtk/generated/Widget.cs:1979
  at (wrapper native-to-managed) Gtk.Widget.exposeevent_cb (intptr,intptr) <IL 0x00024, 0xffffffff>
  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) Gtk.Adjustment.gtk_adjustment_value_changed (intptr) <IL 0x0000f, 0xffffffff>
  at Gtk.Adjustment.ChangeValue () [0x00001] in /home/abuild/rpmbuild/BUILD/gtk-sharp-2.12.10/gtk/generated/Adjustment.cs:225
  at FSpot.Widgets.CellGridView.ScrollTo (int,bool) [0x00060] in f-spot-local/src/Core/FSpot.Gui/FSpot.Widgets/CellGridView.cs:308
  at FSpot.Widgets.CellGridView.ScrollTo (int) [0x00001] in f-spot-local/src/Core/FSpot.Gui/FSpot.Widgets/CellGridView.cs:287
  at FSpot.Widgets.SelectionCollectionGridView.OnKeyPressEvent (Gdk.EventKey) [0x002c3] in f-spot-local/src/Clients/MainApp/FSpot.Widgets/SelectionCollectionGridView.cs:523
  at Gtk.Widget.keypressevent_cb (intptr,intptr) [0x0000f] in /home/abuild/rpmbuild/BUILD/gtk-sharp-2.12.10/gtk/generated/Widget.cs:2555
  at (wrapper native-to-managed) Gtk.Widget.keypressevent_cb (intptr,intptr) <IL 0x00024, 0xffffffff>
  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) Gtk.Application.gtk_main () <IL 0x0000e, 0xffffffff>
  at Gtk.Application.Run () [0x00001] in /home/abuild/rpmbuild/BUILD/gtk-sharp-2.12.10/gtk/Application.cs:135
  at FSpot.Driver.Startup () [0x0015f] in f-spot-local/src/Clients/MainApp/FSpot/main.cs:389
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup/StartupInvocationHandler) [0x00044] in f-spot-local/external/Hyena/Hyena.Gui/Hyena.Gui/CleanRoomStartup.cs:54
  at FSpot.Driver.Main (string[]) [0x003ed] in f-spot-local/src/Clients/MainApp/FSpot/main.cs:307
  at (wrapper runtime-invoke) <Module>.runtime_invoke_int_object (object,intptr,intptr,intptr) <IL 0x0005c, 0xffffffff>

note how pixbuf is null however the managed object is not null

DllNotFoundException: libgtk-win32-2.0-0.dll

Under some systems (Gentoo, Mageia 5), users have been facing a DllNotFoundException: libgtk-win32-2.0-0.dll issue.

line 133:  Mono: DllImport attempting to load: 'libgtk-x11-2.0.so.0'.
line 136:  Mono: DllImport loaded library 'libgtk-x11-2.0.so.0'.
...
line 927:  Mono: DllImport attempting to load: 'libgtk-win32-2.0-0.dll'.
lines 928..237 error loading library with variations on libgtk-win32 location
line 938:  Mono: DllImport unable to load library 'libgtk-win32-2.0-0: cannot open shared object file: No such file or directory'.
line 939..949 repeat of above errors
line 950:  System.TypeInitializationException: An exception was thrown by the type initializer for GtkBeans.Builder ---> System.DllNotFoundException: libgtk-win32-2.0-0.dll
 followed by exception backtrace without filenames or lines
line 963:  Mono: DllImport unable to load library 'libgtk-win32-2.0-0: cannot open shared object file: No such file or directory'.
line 964:  Mono: DllImport searching in: 'libgtk-x11-2.0.so.0' ('libgtk-x11-2.0.so.0').

This issue is caused by the fact that in the f-spot bin folder (and then in the runtime directory), gtk-sharp-beans.dll is copied without its gtk-sharp-beans.dll.config. This happens with versions of gtk-sharp-beans prior to 2.14, where the DLLs were installed in the GAC, and some symlinks were missing from /usr/lib/mono/gtk-sharp-beans-2.0, that f-spot uses to copy the gtk-sharp-beans locally.

Required gtk-sharp-beans version needs to be bumped to 2.14

repeatable crash - possibly due to specific photo

I've been trying to track down a crash importing photos, but I found every time I try to scoll to a specific date range, I get what seems to be the same crash. If I'm in browse view, it doesn't matter if I use the scroll bar, the mouse wheel, or up- or down-arrow to get the the offending date or image. In filmstip view, it also crashes when I get to near a particular image/date. I can select from the time-line either before or after, but if I select the right time - crash.
The following is one line I've seen repeatedly, which seems really strange to me, and I hope will help track this down:
System.Exception: Something is horribly wrong, this should never happen: no default version!

scroll_crash.txt
scroll_crash2.txt

Note I've looked at every image within the area that causes the crash, and I don't see anything special about any one of them.

Test

Are you seeing this?

Website from README definetly needs to be removed

I would have written this as a comment on #32 but I guess this needs quite some maximum attention from the devs now that the development of this program started again. The website for f-spot is now NSFW and I don't think you'd like people to access this repo just to have a look on it outside working hours (or even at work, who am I to judge?).

I think you guys would rather have it removed from the README.md, but I don't mind you keeping it.

( ͡° ͜ʖ ͡°)

Preferences dialog is broken.

Click on preferences menu item causes an exception:

Marshaling activate signal
Unhandeled exception handler:
Message: Exception has been thrown by the target of an invocation.
Stack trace: at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00051] in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <0f8aeac9d63d4b8aa575761bb4e65b79>:0
at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) [0x0007d] in :0
at GLib.Signal+SignalClosure.Invoke (GLib.ClosureInvokedArgs args) [0x0000c] in :0
at GLib.Signal+SignalClosure.MarshalCallback (System.IntPtr raw_closure, GLib.Value* return_val, System.UInt32 n_param_vals, GLib.Value* param_values, System.IntPtr invocation_hint, System.IntPtr marshal_data) [0x00050] in :0

Unhandled exception on 'Import Photos...' on Ubuntu Xenial

Steps to reproduce:

Set up a Xenial machine using http://cdimage.ubuntu.com/daily-live/current/xenial-desktop-amd64.iso

Add PPA

sudo add-apt-repository ppa:christopher-hoskin/ppa
sudo apt-get update
sudo apt-get install f-spot

Start f-spot in debug mode:

f-spot --debug

Press 'Import Photos...'

Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.MissingMethodException: Method 'File.get_Uri' not found.
  at FSpot.UI.Dialog.ImportDialog.<ScanSources>m__1 () <0x41898fd0 + 0x0005b> in <filename unknown>:0 
  at GLib.Idle+IdleProxy.Handler () <0x4188a470 + 0x0003f> in <filename unknown>:0 
  at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, Boolean is_terminal) [0x00000] in <filename unknown>:0 
  at GLib.Idle+IdleProxy.Handler () [0x00000] in <filename unknown>:0 
  at Gtk.Application.gtk_main () [0x00000] in <filename unknown>:0 
  at Gtk.Application.Run () [0x00000] in <filename unknown>:0 
  at FSpot.Driver.Startup () [0x00000] in <filename unknown>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00000] in <filename unknown>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 
Finalizer called on FSpot.Database.Db. Should be Disposed
[FSpot.Core.Tag] Finalizer called on FSpot.Core.Category. Should be Disposed
Finalizer called on FSpot.PhotoView. Should be Disposed
Finalizer called on FSpot.Widgets.Filmstrip. Should be Disposed

Unhandled Exception:
System.NotSupportedException: Stream does not support writing
  at System.IO.FileStream.Write (System.Byte[] array, Int32 offset, Int32 count) <0x7f2ef355e7c0 + 0x001ab> in <filename unknown>:0 
  at System.IO.StreamWriter.Flush (Boolean flushStream, Boolean flushEncoder) <0x7f2ef33cfda0 + 0x000fa> in <filename unknown>:0 
  at System.IO.StreamWriter.Write (System.Char[] buffer, Int32 index, Int32 count) <0x7f2ef33d0370 + 0x001fe> in <filename unknown>:0 
  at System.IO.CStreamWriter.Write (System.Char[] buffer, Int32 index, Int32 count) <0x7f2ef365eff0 + 0x0009b> in <filename unknown>:0 
  at System.IO.TextWriter.WriteLine (System.String value) <0x7f2ef33d4b90 + 0x00141> in <filename unknown>:0 
  at System.IO.TextWriter.WriteLine (System.String format, System.Object arg0) <0x7f2ef33d4e90 + 0x00073> in <filename unknown>:0 
  at System.IO.TextWriter+SyncTextWriter.WriteLine (System.String format, System.Object arg0) <0x7f2ef33d6570 + 0x0002e> in <filename unknown>:0 
  at (wrapper synchronized) System.IO.TextWriter+SyncTextWriter:WriteLine (string,object)
  at System.Console.WriteLine (System.String format, System.Object arg0) <0x7f2ef3660830 + 0x00041> in <filename unknown>:0 
  at FSpot.Core.Tag.Dispose (Boolean disposing) <0x4189af00 + 0x0008e> in <filename unknown>:0 
  at FSpot.Core.Tag.Finalize () <0x4189aec0 + 0x0001a> in <filename unknown>:0 

[BUILD] unable to compile with dbus-sharp 0.7 and dbus-sharp-glib 0.5

While using dbus-sharp 0.7.0 and dbus-sharp-glib 0.5.0, the autogen.sh passes. However, the make step fails with the following error.

/usr/lib/mono/4.5/Microsoft.Common.targets:  warning : Reference 'dbus-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5675b0c3093115b5' not resolved
/usr/lib/mono/4.5/Microsoft.Common.targets:  warning : Reference 'dbus-sharp-glib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5675b0c3093115b5' not resolved

Since dbus-sharp jumped to API 2.0 from version 0.8, and dbus-sharp-glib from 0.6, the autogen.sh script and README need to be updated to reflect the updated version requirement.

migrate to lcms2

lcms1 is depracated and likely to be completely removed from Gentoo, and is one of the reasons given for removing f-spot itself from their tree. I've started looking at this, and will provide a patch if I succeed, but I suspect it will be a bit beyond me to actually complete.

request enhancement to image deletion on import for detected duplicates

Currently, the checkbox on the import dialog to delete images after import only applies to images actually imported. If the import directory contains duplicates of images previously imported, and the user has selected to check for duplicates, then only those images actually imported (i.e., not duplicates) will be deleted from the source directory.

I sometimes do NOT check the delete after import, especially if I absolutely want to confirm the import before deleting. I know I can manually go the the import directory and delete the files, but I would like to be able to check the delete box, repeat the import, and have f-spot delete the files. I am NOT requesting that the default behaviour be changed, but that some option be presented such as "Also delete images not imported because they were detected as duplicates." It might also be less confusing if this checkbox only appears if the main "delete after import" and "detect duplicates" are both checked.

build notes on new Ubuntu 18.04

Not a bug, but notes from my recent build from git head on a newly installed Ubuntu 18.04 in a VirtualBox on a Gentoo host. Probably most useful in updated requirements in README. It's pretty abbreviated, so ask if any explanation or expansion is needed.

Notes.txt

Images don't appear rotated

If you rotate an image when its in editing mode it doesn't appear rotated. Going back to the browsing mode shows the image as rotated.

F-Spot quits unexpectedly on 'Export to'

Using commit 9e21938 with the package here:

https://launchpad.net/~christopher-hoskin/+archive/ubuntu/f-spot

Steps to reproduce:

Start F-Spot, select one or more images. From the 'Photo' menu, choose 'Export To...' Choose any of the options, e.g. 'Folder..' F-spot then quits unexpectedly.

Output of f-spot --debug

Marshaling activate signal
Exception in Gtk# callback delegate
Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
at FSpot.Extensions.ExportMenuItemNode.OnActivated (System.Object o, System.EventArgs e) <0x4071ca90 + 0x000c7> in :0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x7f66ae9ab9e0 + 0x000a1> in :0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x7f66ae9ab9e0 + 0x000ef> in :0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) <0x7f66ae7e3cf0 + 0x0002a> in :0
at System.Delegate.DynamicInvokeImpl (System.Object[] args) <0x7f66aea63f60 + 0x0024c> in :0
at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) <0x7f66aea6c040 + 0x00035> in :0
at System.Delegate.DynamicInvoke (System.Object[] args) <0x7f66aea63e80 + 0x00019> in :0
at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) <0x40673df0 + 0x00153> in :0
at GLib.SignalClosure.Invoke (GLib.ClosureInvokedArgs args) <0x40673db0 + 0x0002f> in :0
at GLib.SignalClosure.MarshalCallback (IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) <0x40673320 + 0x002bb> in :0
at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, Boolean is_terminal) [0x00000] in :0
at GLib.SignalClosure.MarshalCallback (IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) [0x00000] in :0
at Gtk.Application.gtk_main () [0x00000] in :0
at Gtk.Application.Run () [0x00000] in :0
at FSpot.Driver.Startup () [0x00000] in :0
at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00000] in :0
at FSpot.Driver.Main (System.String[] args) [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 489 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 463 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 465 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 467 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 469 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 471 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 473 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 475 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 477 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 479 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 481 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 483 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 485 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 487 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 452 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 454 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0
Domain: 'GLib' Level: Critical
Message: Source ID 456 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00000] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00000] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00000] in :0

error icon doesn't get installed

(I've seen this on both Gentoo and Arch) The source includes f-spot-question-mark, but it doesn't get installed anywhere, leading to a null reference exception. Manually putting this file in /usr/share/f-spot/icons/hicolor/status eliminates the exception. (Oddly, I don't actually see that icon displayed anywhere on screen, so I'm not sure in my case why it's trying to load/dislay it.) The actual error is:

Object reference not set to an instance of an object
System.NullReferenceException: Object reference not set to an instance of an object
at FSpot.Widgets.PhotoImageView.LoadErrorImage (System.Exception e) [0x00000] in :0
at FSpot.Widgets.PhotoImageView.HandlePhotoItemChanged (System.Object sender, FSpot.Core.BrowsablePointerChangedEventArgs args) [0x00000] in :0
at (wrapper delegate-invoke) :invoke_void__this___object_BrowsablePointerChangedEventArgs (object,FSpot.Core.BrowsablePointerChangedEventArgs)
at FSpot.Core.BrowsablePointer.SetIndex (Int32 value, IBrowsableItemChanges changes) [0x00000] in :0
at FSpot.Core.BrowsablePointer.HandleCollectionChanged (IBrowsableCollection collection) [0x00000] in :0
at (wrapper delegate-invoke) :invoke_void__this___IBrowsableCollection (FSpot.Core.IBrowsableCollection)
at (wrapper delegate-invoke) :invoke_void__this___IBrowsableCollection (FSpot.Core.IBrowsableCollection)
at FSpot.PhotoQuery.RequestReload () [0x00000] in :0
at FSpot.QueryWidget.Close () [0x00000] in :0
at FSpot.MainWindow.UpdateFindByTagMenu () [0x00000] in :0
at FSpot.MainWindow..ctor (FSpot.Database.Db db) [0x00000] in :0
at FSpot.App.get_Organizer () [0x00000] in :0
at FSpot.App.HandleOrganize () [0x00000] in :0
at FSpot.App.Organize () [0x00000] in :0
at FSpot.Driver.Startup () [0x00000] in :0
at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00000] in :0

Unhandled UriFormatException: Invalid URI: The hostname could not be parsed on Ubuntu 17.04

Steps to reproduce:

Clean install of Ubuntu 17.04 (with my existing .config/f-spot)

sudo add-apt-repository ppa:christopher-hoskin/f-spot
sudo apt-get update
sudo apt install f-spot
f-spot --debug
** Running f-spot in Debug Mode **
** Running Mono with --debug   **
[1 Info  08:10:03.493] Initializing Mono.Addins
[1 Debug 08:10:03.582] Mono.Addins Initialization took 0.085948
[1 Debug 08:10:03.768] Db Initialization took 0.028099
[1 Debug 08:10:03.937] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 08:10:03.940] QueryToTemp took 0.002933 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 08:10:03.940] Reloading the query took 0.004235
[1 Debug 08:10:04.034] Query took 0.005041 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[1 Debug 08:10:04.074] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 08:10:04.077] QueryToTemp took 0.003092 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 08:10:04.084] Query took 0.000294 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[1 Debug 08:10:04.153] open uri = file:///home/mans0954/Pictures/Photos/2017/03/25/DSC_0097.JPG
[4 Debug 08:10:04.153] PhotosPerMonth took 0.004109
[4 Debug 08:10:04.154] TimeAdaptor REAL Reload took 0.076251
[1 Debug 08:10:04.160] Reloading the query took 0.085806
[1 Debug 08:10:04.236] IndexOf took 0.000386 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE time <= -62104064400 ORDER BY time DESC LIMIT 1
[6 Debug 08:10:04.281] PhotosPerMonth took 0.003121
[6 Debug 08:10:04.281] TimeAdaptor REAL Reload took 0.203415
[1 Debug 08:10:04.346] Loading image took 0.261165

F-spot starts normally. I then click 'Import Photos...'

Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.UriFormatException: Invalid URI: The hostname could not be parsed.
  at FSpot.UI.Dialog.ImportDialog.<ScanSources>m__1 () [0x0001e] in <c9d7388bad5e4a72aa6b8a56259347e6>:0 
  at GLib.Idle+IdleProxy.Handler (System.IntPtr data) [0x0003c] in <5a439e0caae7469886e7119d9f6bc621>:0 
  at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, System.Boolean is_terminal) [0x00000] in <5a439e0caae7469886e7119d9f6bc621>:0 
  at GLib.Idle+IdleProxy.Handler (System.IntPtr data) [0x00000] in <5a439e0caae7469886e7119d9f6bc621>:0 
  at Gtk.Application.gtk_main () [0x00000] in <573b897a54ae4730b20442c8cd3b9a43>:0 
  at Gtk.Application.Run () [0x00000] in <573b897a54ae4730b20442c8cd3b9a43>:0 
  at FSpot.Driver.Startup () [0x00000] in <c9d7388bad5e4a72aa6b8a56259347e6>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in <ff140ecb2b5d46f895f413f011ff0a3f>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <c9d7388bad5e4a72aa6b8a56259347e6>:0 

fspot crash during startup

I have just fetched the last commit, compile the new source
2053 mirko@dashaeMirko:f-spot-sviluppo$ ./bin/f-spot.exe --debug
[1 Info 23:08:00.376] Initializing Mono.Addins
[1 Debug 23:08:00.492] Mono.Addins Initialization took 0,112287
[1 Debug 23:08:00.744] Db Initialization took 0,111186
[1 Debug 23:08:01.112] Query Started : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC
[1 Debug 23:08:01.134] QueryToTemp took 0,022397 : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC
[1 Debug 23:08:01.134] Reloading the query took 0,024112
[1 Debug 23:08:01.349] Query took 0,011564 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[5 Debug 23:08:01.379] PhotosPerMonth took 0,030589
[5 Debug 23:08:01.380] TimeAdaptor REAL Reload took 0,235093
[1 Debug 23:08:01.428] Query Started : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC
[1 Debug 23:08:01.454] QueryToTemp took 0,025528 : SELECT * FROM photos WHERE photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY time DESC, filename ASC
[1 Debug 23:08:01.467] Query took 0,000969 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[7 Debug 23:08:01.672] PhotosPerMonth took 0,016011
[7 Debug 23:08:01.672] TimeAdaptor REAL Reload took 0,216773
[1 Debug 23:08:01.699] Reloading the query took 0,271175
[1 Debug 23:08:01.880] IndexOf took 0,001631 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE time <= -62104064400 ORDER BY time DESC LIMIT 1
Exception in Gtk# callback delegate
Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Exception: Something is horribly wrong, this should never happen: no default version!
at FSpot.Photo.get_DefaultVersion () [0x00019] in :0
at FSpot.Widgets.CollectionGridView.DrawPhoto (System.Int32 cell_num, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, System.Boolean selected, System.Boolean focussed) [0x0002c] in :0
at FSpot.Widgets.SelectionCollectionGridView.DrawCell (System.Int32 cell_num, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area) [0x00025] in :0
at FSpot.Widgets.CellGridView.DrawAllCells (Gdk.Rectangle area) [0x00022] in <37a6764e31f3425199a8feed87eb0a3e>:0
at FSpot.Widgets.CellGridView.OnExposeEvent (Gdk.EventExpose args) [0x0001b] in <37a6764e31f3425199a8feed87eb0a3e>:0
at FSpot.Widgets.SelectionCollectionGridView.OnExposeEvent (Gdk.EventExpose args) [0x00001] in :0
at Gtk.Widget.exposeevent_cb (System.IntPtr widget, System.IntPtr evnt) [0x00014] in :0
at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, System.Boolean is_terminal) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0
at Gtk.Widget.exposeevent_cb (System.IntPtr widget, System.IntPtr evnt) [0x00000] in :0
at Gtk.Application.gtk_main () [0x00000] in :0
at Gtk.Application.Run () [0x00000] in :0
at FSpot.Driver.Startup () [0x00000] in :0
at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in :0
at FSpot.Driver.Main (System.String[] args) [0x00000] in :0

remove dependency on gnome-icon-theme

I just tried a fresh compile, and it failed looking for gnome-icon-theme. It took me a while to track this down, but that package was removed from Gentoo in April with the comment that Gnome is now using Adwaita instead. I'm not sure at what point other distros will also drop it (artix linux still has it available.) but configure should allow for either.

Duplicate entries for cameras (mounts) in import dialog

When opening the import dialog the combo box labeled "Choose Import source..." correctly shows connected cameras, SD cards, DAV mounts, etc.
When the dialog is opened a second time, all connected cameras, SD cards, etc. are listed twice. Some sources are even listed with different names and icons (e.g., 'user on server' vs 'user@server' for DAV mounts), although they point to the exact same gvfs path.

The code uses gio-sharp to list all mounts which itself calls g_volume_monitor_get_mounts to enumerate the mounts. This method returns the duplicates when the dialog is opened a second time. The behavior is somehow triggered by GLib.Idle.Add in ImportDialog.cs. Simply enumerating the mounts twice via GLib.VolumeMonitor.Mounts does not cause the duplicate entries.
Once the duplicate entries are there, they don't seem to disapear on subsequent enumerations.

I'm not sure if this is a bug in gio-sharp or in glib2.

cant import jpg

When trying to import the following photo
dsc_1725
this is happening
bildschirmfoto vom 2016-04-15 00-24-04

I tried to dig to the issue but failed.

F-Spot crashes when importing large images

Have a directory with at least 10 images which are each larger than 2MBs in size, open "Import Photos..." window, toggle off the "Copy files to the Photos folder", choose the directory and click "import" button and F-Spot crashes. It leaves following behind:

~ ❯❯❯ mono --profile=log /usr/local/lib/f-spot/f-spot.exe --debug                                                                                                                                                  ⏎
[1 Info  11:23:40.629] Initializing Mono.Addins
[1 Debug 11:23:41.273] Mono.Addins Initialization took 0,624073
Gtk-Message: /home/sinihopea/.gtkrc-2.0:18: failed to retrieve property `gtk-primary-button-warps-slider' of type `gboolean' from rc file value "((GString*) 0x55b9490bce60)" of type `gboolean'
[1 Debug 11:23:41.571] Db Initialization took 0,05559
[1 Debug 11:23:41.939] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 11:23:41.944] QueryToTemp took 0,005074 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 11:23:41.946] Reloading the query took 0,008291
[4 Debug 11:23:42.185] PhotosPerMonth took 0,012688
[4 Debug 11:23:42.189] TimeAdaptor REAL Reload took 0,219782
[1 Debug 11:23:42.200] Query took 0,078851 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[1 Debug 11:23:42.290] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 11:23:42.295] QueryToTemp took 0,004382 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 11:23:42.322] Query took 0,012279 : SELECT * FROM photoquery_temp_0 LIMIT 100 OFFSET 0
[1 Warn  11:23:42.349] Caught an exception - System.Exception: Loader requested for unknown file type: .jpg (in `f-spot')
  at FSpot.Loaders.ImageLoader.Create (Hyena.SafeUri uri) [0x0002b] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
  at FSpot.Widgets.PhotoImageView.Load (Hyena.SafeUri uri) [0x00022] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
  at FSpot.Widgets.PhotoImageView.HandlePhotoItemChanged (System.Object sender, FSpot.Core.BrowsablePointerChangedEventArgs args) [0x0014b] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
[1 Debug 11:23:42.376] Reloading the query took 0,086271
[1 Debug 11:23:42.484] IndexOf took 0,001264 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE time <= -62104068000 ORDER BY time DESC LIMIT 1
[6 Debug 11:23:42.517] PhotosPerMonth took 0,017566
[6 Debug 11:23:42.521] TimeAdaptor REAL Reload took 0,222535

(f-spot:3629): GdkPixbuf-WARNING **: GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed. You must explicitly end the data stream to the loader before dropping the last reference.
[1 Debug 11:24:03.074] Received controller event: SourceChanged
[1 Debug 11:24:03.252] Received controller event: PhotoScanStarted
[1 Debug 11:24:03.337] open uri = file:///home/sinihopea/Kuvat/Pixiv/57116257/57116257_p0.jpg
[1 Debug 11:24:03.451] Loading image took 0,185922
[1 Debug 11:24:03.553] Received controller event: PhotoScanFinished
[1 Debug 11:24:05.591] Received controller event: ImportStarted
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
Cairo.Surface is leaking, programmer is missing a call to Dispose
[14 Debug 11:24:07.075] Commit took 0,004202
[15 Debug 11:24:07.082] FSpot.Thumbnail.ThumbnailLoader - Worker starting
[1 Debug 11:24:07.113] IndicesOf took 0,000738 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE id IN (265)
[1 Debug 11:24:07.114] IndicesOf took 0,003829
[14 Debug 11:24:07.298] Commit took 0,002118
[1 Debug 11:24:07.313] IndicesOf took 0,001228 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE id IN (266)
[1 Debug 11:24:07.314] IndicesOf took 0,002944
[14 Debug 11:24:07.419] Commit took 0,002501
[1 Debug 11:24:07.471] IndicesOf took 0,002421 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE id IN (267)
[1 Debug 11:24:07.477] IndicesOf took 0,010086
[14 Debug 11:24:07.501] Commit took 0,002492
[1 Debug 11:24:07.522] IndicesOf took 0,00152 : SELECT ROWID AS row_id FROM photoquery_temp_0 WHERE id IN (268)
[1 Debug 11:24:07.526] IndicesOf took 0,005907
Domain: 'GLib-GObject' Level: Critical
Message: g_object_remove_toggle_ref: assertion 'G_IS_OBJECT (object)' failed
Trace follows:
  at GLib.Log.PrintTraceLogFunction (System.String domain, GLib.LogLevelFlags level, System.String message) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.Log.<LogFuncTrampoline>m__0 (System.String domain, GLib.LogLevelFlags level, System.String message, GLib.LogFunc user_data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.ToggleRef.g_object_remove_toggle_ref (System.IntPtr , GLib.ToggleRef+ToggleNotifyHandler , System.IntPtr ) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.ToggleRef.Free () [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.Object.PerformQueuedUnrefs () [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.Timeout+TimeoutProxy.Invoke (System.IntPtr data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.SourceProxy.HandlerInternal (System.IntPtr data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at Gtk.Application.gtk_main () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at Gtk.Application.Run () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at FSpot.Driver.Startup () [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in <13a03b1deb1f49ca97548f1abc5fc036>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.InvalidOperationException: Handle is not initialized.
  at System.Runtime.InteropServices.GCHandle.Free () [0x0002b] in <373b6e083d6e45e498c9082a8eebd27f>:0 
  at GLib.ToggleRef.Free () [0x0009d] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.Object.PerformQueuedUnrefs () [0x0004a] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.Timeout+TimeoutProxy.Invoke (System.IntPtr data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.SourceProxy.HandlerInternal (System.IntPtr data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, System.Boolean is_terminal) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at GLib.SourceProxy.HandlerInternal (System.IntPtr data) [0x00000] in <940f51fcd0434c359bfa4fdc8e64ad03>:0 
  at Gtk.Application.gtk_main () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at Gtk.Application.Run () [0x00000] in <e8d21baece374fadb4e2b3899720848c>:0 
  at FSpot.Driver.Startup () [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in <13a03b1deb1f49ca97548f1abc5fc036>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <19b15cf8642a4515b2cc5c796b2e0aa7>:0 
[14 Debug 11:24:07.605] Commit took 0,002268
[14 Debug 11:24:07.690] Commit took 0,002198
[14 Debug 11:24:07.805] Commit took 0,002224
~ ❯❯❯    

I'm using Fedora 26 at the moment. I can provide you more information if you need any.

Unable to build on Ubuntu 15.04

Steps to reproduce

  • git clone https://github.com/mono/f-spot.git (used repository tree as of May 4th when writing this issue)
  • run autogen.sh and fail to find all requirements
  • add Mono deb repository to Ubuntu
  • frantically keep installing packages until autogen.sh doesn't complain
  • finally, end up with a successful run of autogen.sh and you get Run 'make' to build F-Spot. - yay!
  • make
make
Building ./F-Spot.sln
unique/generated/App.custom(17,9): warning CS0618: `GLib.CDeclCallbackAttribute' is obsolete: `You must use the UnmanagedFunctionPointer attribute with value 'CallingConvention.Cdecl'. This attribute does not set the delegate to 'cdecl' correctly'
CSC:  warning CS1616: Option `keyfile' overrides attribute `System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module
TagLib/Audible/Tag.cs(153,21): warning CS0168: The variable `e' is declared but never used
Hyena.Collections/IntervalHeap.cs(282,37): warning CS0108: `Hyena.Collections.IntervalHeap<T>.SyncIntervalHeap.heap' hides inherited member `Hyena.Collections.IntervalHeap<T>.heap'. Use the new keyword if hiding was intended
Banshee.Kernel/IntervalHeap.cs(316,37): warning CS0108: `Banshee.Kernel.IntervalHeap<T>.SyncIntervalHeap.heap' hides inherited member `Banshee.Kernel.IntervalHeap<T>.heap'. Use the new keyword if hiding was intended
Mono.Addins.Setup/RepositoryReaderWriter.cs(539,34): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(946,61): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/AddinInfo.cs(152,45): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/AddinInfo.cs(159,45): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(541,28): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(553,108): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(553,34): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(882,81): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(883,62): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(899,89): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(900,62): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
Mono.Addins.Setup/RepositoryReaderWriter.cs(956,47): warning CS0612: `Mono.Addins.Description.NativeDependency' is obsolete
CSC: error CS1705: Assembly `gdk-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f' references `glib-sharp, Version=3.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f' which has a higher version number than imported assembly `glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f'
Makefile:1081: recipe for target 'sln_build' failed
make: *** [sln_build] Error 1

repeated error message "Source ID not found when attempting to remove it"

Running f-spot (compiled from git head) produces many errors like:
Domain: 'GLib' Level: Critical
Message: Source ID 3086 was not found when attempting to remove it
Trace follows:
at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x0000e] in :0
at GLib.Log.m__0 (System.String domain, LogLevelFlags level, System.String message, GLib.LogFunc user_data) [0x00005] in :0
at GLib.Source.g_source_remove (UInt32 ) [0x00000] in :0
at GLib.Source.Remove (UInt32 tag) [0x00031] in :0
at GLib.Idle+IdleProxy.Dispose (Boolean disposing) [0x00018] in :0
at GLib.Idle+IdleProxy.Finalize () [0x00003] in :0

although the trace differs widely. Based on googling, I'm not sure if this is a bug in f-spot (attempt to double free?) or a problem in an underlying library. Right now, I can only find one report: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/1264368

There is an upstream but: https://bugzilla.gnome.org/show_bug.cgi?id=721369 but I can't quite follow all the finger pointing.

This one is not related to f-spot, but does have some interesting (relevant?) comments: http://stackoverflow.com/questions/23199699/glib-critical-source-id-xxx-was-not-found-when-attempting-to-remove-it

It is obviously not critical, but would be nice to solve, as it clutters up debugging output for other problems.

F-spot crashes on import Fotos with too many files open

With the latest master I get this strange error when I try to import fotos to the collection. Any idea what it is or how I can fix that?

Unhandled Exception:
GLib.GException: Error opening directory '/home/david/Fotos/2015/05/22': Too many open files
at GLib.FileAdapter.EnumerateChildren (System.String attributes, GLib.FileQueryInfoFlags flags, GLib.Cancellable cancellable) [0x0005c] in :0
at FSpot.FileSystem.GLibDirectory+c__Iterator0.MoveNext () [0x00056] in <9bee6194a6af48d6861d2a29e12d996e>:0
at System.Collections.Generic.List1[T]..ctor (System.Collections.Generic.IEnumerable1[T] collection) [0x0008b] in :0
at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x00011] in <2392cff65f724abaaed9de072f62bc4a>:0 at FSpot.FileSystem.SortedFileEnumerator..ctor (System.Collections.Generic.IEnumerable1[T] baseEnumerable, FSpot.FileSystem.IFileSystem fileSystem) [0x00014] in <9bee6194a6af48d6861d2a29e12d996e>:0
at FSpot.FileSystem.RecursiveFileEnumerator+c__Iterator0.MoveNext () [0x00130] in <9bee6194a6af48d6861d2a29e12d996e>:0
at FSpot.FileSystem.RecursiveFileEnumerator+c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0
at FSpot.FileSystem.RecursiveFileEnumerator+c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0
at FSpot.FileSystem.RecursiveFileEnumerator+c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0
at FSpot.Import.FileImportSource.NextImageFileOrNull (System.Collections.Generic.IEnumerator1[T] enumerator) [0x00002] in <c94d77e20e1a4170bce58831069af460>:0 at FSpot.Import.FileImportSource+<ScanPhotoDirectory>c__Iterator0.MoveNext () [0x0009c] in <c94d77e20e1a4170bce58831069af460>:0 at FSpot.Import.ImportDialogController.DoScan (FSpot.Import.IImportSource source, System.Boolean recurse, System.Boolean merge, System.Threading.CancellationToken token) [0x00059] in <01535742dcaa401d922c7f20a6ac3d9c>:0 at FSpot.Import.ImportDialogController+<StartScan>c__AnonStorey1.<>m__0 () [0x00032] in <01535742dcaa401d922c7f20a6ac3d9c>:0 at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00017] in <f712f98eb8e445c8918edaf595bbe465>:0 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in <f712f98eb8e445c8918edaf595bbe465>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <f712f98eb8e445c8918edaf595bbe465>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00031] in <f712f98eb8e445c8918edaf595bbe465>:0 at System.Threading.ThreadHelper.ThreadStart () [0x0000b] in <f712f98eb8e445c8918edaf595bbe465>:0 [ERROR] FATAL UNHANDLED EXCEPTION: GLib.GException: Error opening directory '/home/david/Fotos/2015/05/22': Too many open files at GLib.FileAdapter.EnumerateChildren (System.String attributes, GLib.FileQueryInfoFlags flags, GLib.Cancellable cancellable) [0x0005c] in <e52eb98dbf2b47958c1d4f57b170767d>:0 at FSpot.FileSystem.GLibDirectory+<Enumerate>c__Iterator0.MoveNext () [0x00056] in <9bee6194a6af48d6861d2a29e12d996e>:0 at System.Collections.Generic.List1[T]..ctor (System.Collections.Generic.IEnumerable1[T] collection) [0x0008b] in <f712f98eb8e445c8918edaf595bbe465>:0 at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable1[T] source) [0x00011] in <2392cff65f724abaaed9de072f62bc4a>:0
at FSpot.FileSystem.SortedFileEnumerator..ctor (System.Collections.Generic.IEnumerable1[T] baseEnumerable, FSpot.FileSystem.IFileSystem fileSystem) [0x00014] in <9bee6194a6af48d6861d2a29e12d996e>:0 at FSpot.FileSystem.RecursiveFileEnumerator+<ScanForFiles>c__Iterator0.MoveNext () [0x00130] in <9bee6194a6af48d6861d2a29e12d996e>:0 at FSpot.FileSystem.RecursiveFileEnumerator+<ScanForFiles>c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0 at FSpot.FileSystem.RecursiveFileEnumerator+<ScanForFiles>c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0 at FSpot.FileSystem.RecursiveFileEnumerator+<ScanForFiles>c__Iterator0.MoveNext () [0x001d7] in <9bee6194a6af48d6861d2a29e12d996e>:0 at FSpot.Import.FileImportSource.NextImageFileOrNull (System.Collections.Generic.IEnumerator1[T] enumerator) [0x00002] in :0
at FSpot.Import.FileImportSource+c__Iterator0.MoveNext () [0x0009c] in :0
at FSpot.Import.ImportDialogController.DoScan (FSpot.Import.IImportSource source, System.Boolean recurse, System.Boolean merge, System.Threading.CancellationToken token) [0x00059] in <01535742dcaa401d922c7f20a6ac3d9c>:0
at FSpot.Import.ImportDialogController+c__AnonStorey1.<>m__0 () [0x00032] in <01535742dcaa401d922c7f20a6ac3d9c>:0
at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00017] in :0
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in :0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in :0
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00031] in :0
at System.Threading.ThreadHelper.ThreadStart () [0x0000b] in :0

Track database conversion bugs

  • Can't import images (PhotoStore CreateFrom is commented out)
  • PhotoVersion stuff is messed up currently, right now it just creates them, not sure it is actually storing them. Also, there is an InsertVersion that might not be necessary?
  • Imported photos don't show up in the photo browser
  • Tag icon stuff is messed up. Review the whole thing.

f-spot does not compile on mageia4

Trying to compile from head, on mageia4:

Building ./F-Spot.sln
Hyena.Data.Gui/ColumnCellText.cs(115,29): warning CS0618: `Cairo.Context.Color' is obsolete: `Use SetSourceRGBA method'
: error CS1705: Assembly `gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f' references `Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' which has a higher version number than imported assembly `Mono.Cairo, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
Hyena.Gui/CairoExtensions.cs(70,34): warning CS0618: `Cairo.Context.Target' is obsolete: `Use GetTarget/SetTarget'
Hyena.Gui/CairoExtensions.cs(70,59): warning CS0618: `Cairo.Context.Target' is obsolete: `Use GetTarget/SetTarget'
Hyena.Gui/CairoExtensions.cs(72,29): error CS0012: The type `Cairo.Context' is defined in an assembly that is not referenced. Consider adding a reference to assembly `Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'

f-spot crashes on "Adjust Time..." command

Stack trace:

Exception in Gtk# callback delegate
Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> GLib.GException: Invalid object type `GnomeDateEdit'
at GtkBeans.Builder.AddFromString (System.String buffer) [0x0004c] in <4269fe87a36546ceb52dff14c7a461af>:0
at GtkBeans.Builder..ctor (System.Reflection.Assembly assembly, System.String resource_name, System.String translation_domain) [0x00093] in <4269fe87a36546ceb52dff14c7a461af>:0
at FSpot.UI.Dialog.BuilderDialog..ctor (System.Reflection.Assembly assembly, System.String resourceName, System.String dialogName) [0x00000] in :0
at FSpot.UI.Dialog.BuilderDialog..ctor (System.String resourceName, System.String dialogName) [0x00000] in :0
at FSpot.UI.Dialog.AdjustTimeDialog..ctor (FSpot.Database.Db db, FSpot.Core.IBrowsableCollection collection) [0x00000] in :0
at FSpot.MainWindow.HandleAdjustTime (System.Object sender, System.EventArgs args) [0x00023] in :0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000e7] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00008] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <73ee1b14c2fa4d61b481096ff3d8d6d7>:0
at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) [0x0006d] in <302d657a0e9447e0b67c099f6e414a01>:0
at GLib.SignalClosure.Invoke (GLib.ClosureInvokedArgs args) [0x0000c] in <302d657a0e9447e0b67c099f6e414a01>:0
at GLib.SignalClosure.MarshalCallback (System.IntPtr raw_closure, GLib.Value* return_val, System.UInt32 n_param_vals, GLib.Value* param_values, System.IntPtr invocation_hint, System.IntPtr marshal_data) [0x0004b] in <302d657a0e9447e0b67c099f6e414a01>:0
at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, System.Boolean is_terminal) [0x00000] in <302d657a0e9447e0b67c099f6e414a01>:0
at GLib.SignalClosure.MarshalCallback (System.IntPtr raw_closure, GLib.Value* return_val, System.UInt32 n_param_vals, GLib.Value* param_values, System.IntPtr invocation_hint, System.IntPtr marshal_data) [0x00000] in <302d657a0e9447e0b67c099f6e414a01>:0
at Gtk.Application.gtk_main () [0x00000] in <6ab7f48437694667a91f2ef0ec8a9924>:0
at Gtk.Application.Run () [0x00000] in <6ab7f48437694667a91f2ef0ec8a9924>:0
at FSpot.Driver.Startup () [0x00000] in :0
at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.CleanRoomStartup+StartupInvocationHandler startup) [0x00000] in <506f21bd769b4a7abc94a0cfdd0c8fab>:0
at FSpot.Driver.Main (System.String[] args) [0x00000] in :0

F-Spot crashes on Debian unstable and Ubuntu Xenial

Steps to reproduce:

Set up a Xenial machine using http://cdimage.ubuntu.com/daily-live/current/xenial-desktop-amd64.iso

Add PPA

sudo add-apt-repository ppa:christopher-hoskin/ppa
sudo apt-get update
sudo apt-get install f-spot

Start f-spot in debug mode:

f-spot --debug

f-spot window appears. Console output:

** Running f-spot in Debug Mode **
** Running Mono with --debug   **
[1 Info  06:48:29.972] Initializing Mono.Addins
[1 Debug 06:48:30.125] Mono.Addins Initialization took 0.149674
[1 Debug 06:48:30.466] Db Initialization took 0.071949
[1 Debug 06:48:30.685] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 06:48:30.686] QueryToTemp took 0.000978 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 06:48:30.686] Reloading the query took 0.002177
[4 Debug 06:48:30.903] PhotosPerMonth took 0.000446
[4 Debug 06:48:30.904] TimeAdaptor REAL Reload took 0.211893
[1 Debug 06:48:30.976] Query Started : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 06:48:30.976] QueryToTemp took 0.000605 : SELECT * FROM photos  WHERE  photos.id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = 2) ORDER BY  time DESC, filename ASC 
[1 Debug 06:48:31.012] Reloading the query took 0.036306

(f-spot:1708): GLib-GObject-WARNING **: cannot register existing type 'GdkWindow'
Domain: 'GLib' Level: Critical
Message: g_once_init_leave: assertion 'result != 0' failed
Trace follows:
  at GLib.Log.PrintTraceLogFunction (System.String domain, LogLevelFlags level, System.String message) [0x00000] in <filename unknown>:0 
  at FSpot.Cms.NativeMethods.FScreenGetProfile (IntPtr ) [0x00000] in <filename unknown>:0 
  at FSpot.Cms.Profile.GetScreenProfile (Gdk.Screen screen) [0x00000] in <filename unknown>:0 
  at FSpot.ColorManagement.get_XProfile () [0x00000] in <filename unknown>:0 
  at FSpot.ColorManagement.BuildProfiles () [0x00000] in <filename unknown>:0 
  at FSpot.ColorManagement.get_Profiles () [0x00000] in <filename unknown>:0 
  at FSpot.TagSelectionWidget.IconDataFunc (Gtk.TreeViewColumn column, Gtk.CellRenderer renderer, TreeModel model, TreeIter iter) [0x00000] in <filename unknown>:0 
  at GtkSharp.TreeCellDataFuncWrapper.NativeCallback (IntPtr tree_column, IntPtr cell, IntPtr tree_model, IntPtr iter, IntPtr data) [0x00000] in <filename unknown>:0 
  at Gtk.Application.gtk_main () [0x00000] in <filename unknown>:0 
  at Gtk.Application.Run () [0x00000] in <filename unknown>:0 
  at FSpot.Driver.Startup () [0x00000] in <filename unknown>:0 
  at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00000] in <filename unknown>:0 
  at FSpot.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 

(f-spot:1708): Gdk-CRITICAL **: gdk_window_ensure_native: assertion 'GDK_IS_WINDOW (window)' failed
[6 Debug 06:48:31.191] PhotosPerMonth took 0.000449
[6 Debug 06:48:31.192] TimeAdaptor REAL Reload took 0.214711
Killed

Console window becomes unresponsive, Force-Quit window appears.

Tag control provides misleading drag/drop indications

It is possible to reorganize tags by drag/drop.
In this way, user can move one tag to be re-parented under a different parent.

While in process of drag, there are GUI indications that dragged tag can be dropped in between two tags (see screenshot). This would make it possible to reorder sibling tags manually.

drop_between_items

Sibling tags are ordered according to property Tag::SortPriority, and then alphabetically in case Tag::SortPriority values are the same. Initial value of Tag::SortPriority property for all user created tags is 0.

The problem is that Tag::SortPriority property is never updated after drop, so no matter where item is dropped it is always sorted alphabetically among all sibling tags (all have value 0).

Only default tags (Favorites, Hidden, People, ...) have this property set because they are created programatically by application.

There are couple of possible courses of action:

Remove possibility to reorder tags using drag/drop

By removing following code segment from TagSelectionWidget::HandleDragMotion, it will no longer be possible to drop tag between two rows:

// Tags can be dropped before, after, or into another tag
if (args.Context.Targets[0].Name == "application/x-fspot-tags") {
  Gdk.Rectangle rect = GetCellArea(path, Columns[0]);
  double vpos = Math.Abs(rect.Y - args.Y) / (double)rect.Height;
  if (vpos < 0.2) {
    position = TreeViewDropPosition.Before;
  } else if (vpos > 0.8) {
    position = TreeViewDropPosition.After;
  }
}

All tags will be alphabetically ordered.

Implement only manually ordered tags
  • When new tag is added it is automatically added as the last child of node and its' Tag::SortPriority property is set accordingly.
  • During drag/drop and tag deletion Tag::SortPriority properties of all sibling tags are updated so that they always reflect current position of a tag.

In this scenario name of the tag will never have an effect on item position because Tag::SortPriority properties of all siblings will be unique.

Implement full support for reordering of tags

Tag::SortPriority property should be updated on drop.
I haven't tested this behavior of Tag tree. We might end up with behavior that is confusing to user because of complex interaction of Tag::SortPriority property that can be any integer number.

Couple of discussion points:

  • Do we always keep Tag::SortPriority as incremental number? If we allow manual sorting, we might consider exposing this value to user so he might assign some specific value to one tag. That way he can have one tag with Tag::SortPriority value of 1000 that will always keep last position.
  • How to restore alphabetical ordering once manual order was created?
  • What is Tag::SortPriority value of a newly created tag? Currently it is 0 and all tags with same value are sorted alphabetically among themselves.
  • If we drag any item in a group with Tag::SortPriority == 0, we should update Tag::SortPriority properties on all of them. In case of screenshot we would need to update Tag::SortPriority of all tags in order to keep Item 3 in between Item 1 and Item 2.
Possible solution
  • New tags are created with Tag::SortPriority = 0 in case it is the first tag in group or if all other tags have Tag::SortPriority == 0.
  • If there already exists a tag in a group with Tag::SortPriority !=0, than new tag will go to last place and it's Tag::SortPriority property will be set accordingly
  • Whenever a tag is deleted or reordered, we update Tag::SortPriority properties on all sibling tags to keep them reflect their position in a group

In this case we would have alphabetically sorted tags if user didn't do any manual ordering, and manual sorting in case any reorder has been done inside a tag group.

Personal take on the problem

I would prefer to avoid last solution.
Combination of both alphabetical sorting and manual reordering might get confusing to users. I think we should choose either alphabetical sorting or manual ordering for all user created tags.

Filmstrip possibly leaking memory

Scrolling the filmstrip images results in a bunch of messages in the console:

Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces
Cairo.Surface is leaking, programmer is missing a call to Dispose
Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces

How to draw a circle on a given shapefile or map using sharpmap?

Can Someone please tell me how to draw a circle on a given layer or on a shapefile?Is there any way to draw a circle knowing the center point and the radius?Being a beginner i have very less knowledge of this part.Also if u can tell me if it is necessary to add a layer on existing layer while drawing a circle or we can draw it on the same existing layer of the shapefile using Sharpmap only?Thanks

[BUILD] unable to compile with Nunit 2.4.8

While using Nunit 2.4.8 bundled with mono, the autogen.sh passes. However, the make step fails with the following error.

/usr/lib/mono/4.5/Microsoft.Common.targets:  warning : Reference 'nunit.framework, Version=2.6.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' not resolved

If the project files require version 2.6.3, the autogen.sh script and README need to be updated to reflect the updated version requirement.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.