--- banshee-1.6.1.orig/debian/monodoc-banshee-manual.install +++ banshee-1.6.1/debian/monodoc-banshee-manual.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/monodoc/sources --- banshee-1.6.1.orig/debian/rules +++ banshee-1.6.1/debian/rules @@ -0,0 +1,42 @@ +#!/usr/bin/make -f + +include /usr/share/quilt/quilt.make +include /usr/share/cli-common/cli.make + +LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed + +override_dh_auto_configure: + dh_auto_configure -- --disable-static \ + --disable-tests \ + --with-vendor-build-id="`lsb_release -ds`" \ + --disable-clutter \ + --disable-builtin-equalizer \ + --enable-boo \ + --enable-docs \ + --enable-webkit \ + --disable-youtube \ + --enable-gnome \ + --enable-schemas-install \ + --enable-mtp \ + --enable-ipod \ + --enable-karma \ + --disable-remote-audio \ + --enable-daap \ + --disable-gapless-playback \ + --enable-podcast \ + --enable-release \ + --disable-shave \ + MCS=/usr/bin/csc LDFLAGS="$(LDFLAGS)" + +# disable tests +override_dh_auto_test: + +# dump debugging symbols in banshee-dbg +override_dh_strip: + dh_strip --dbg-package=banshee-dbg + +override_dh_clistrip: + dh_clistrip --dbg-package=banshee-dbg + +%: + dh --with=quilt $@ --- banshee-1.6.1.orig/debian/banshee.xpm +++ banshee-1.6.1/debian/banshee.xpm @@ -0,0 +1,282 @@ +/* XPM */ +static char * banshee_xpm[] = { +"32 32 247 2", +" c None", +". c #3465A4", +"+ c #3B6BA8", +"@ c #4070AC", +"# c #3566A5", +"$ c #4676B0", +"% c #5E8CC1", +"& c #6D9ACC", +"* c #729FCF", +"= c #3868A6", +"- c #396AA7", +"; c #608EC3", +"> c #3869A7", +", c #6593C6", +"' c #6694C7", +") c #5887BD", +"! c #5E8DC1", +"~ c #3768A6", +"{ c #6391C4", +"] c #6997C9", +"^ c #4877B2", +"/ c #4978B2", +"( c #3667A5", +"_ c #5382B9", +": c #4C7CB5", +"< c #4878B2", +"[ c #74A0CF", +"} c #4A79B3", +"| c #74A0D0", +"1 c #77A2D1", +"2 c #4C7BB3", +"3 c #75A1D0", +"4 c #7AA5D2", +"5 c #3A6AA7", +"6 c #4E7CB4", +"7 c #7EA7D3", +"8 c #5379AB", +"9 c #CDCDCD", +"0 c #DADADA", +"a c #DEDEDE", +"b c #DBDBDB", +"c c #D2D2D2", +"d c #BABABA", +"e c #A1A1A1", +"f c #507DB5", +"g c #79A3D1", +"h c #80A9D4", +"i c #6087B8", +"j c #FBFBFB", +"k c #F5F5F5", +"l c #F3F3F3", +"m c #F4F4F4", +"n c #F8F8F8", +"o c #F9F9F9", +"p c #D3D3D3", +"q c #A8A8A8", +"r c #A3A7AC", +"s c #527FB5", +"t c #84ABD5", +"u c #6187B8", +"v c #F2F2F2", +"w c #F1F1F1", +"x c #F0F0F0", +"y c #F6F6F6", +"z c #BCBCBC", +"A c #B5B5B5", +"B c #EAEDF2", +"C c #5480B6", +"D c #7CA6D2", +"E c #87ADD6", +"F c #6188B9", +"G c #EFEFEF", +"H c #C5C5C5", +"I c #ABABAB", +"J c #E6E9EE", +"K c #5681B7", +"L c #8AB0D7", +"M c #6288B9", +"N c #FCFCFC", +"O c #F7F7F7", +"P c #EDEDED", +"Q c #BBBBBB", +"R c #9E9E9E", +"S c #E1E1E1", +"T c #E5E9ED", +"U c #5883B8", +"V c #7FA8D4", +"W c #8DB2D8", +"X c #FDFDFD", +"Y c #EBEEF3", +"Z c #BCCBDF", +"` c #9EB5D2", +" . c #83A0C5", +".. c #7E9CC3", +"+. c #85A1C5", +"@. c #ACBED5", +"#. c #E3E7EB", +"$. c #EEEEEE", +"%. c #A3A3A3", +"&. c #B4B4B4", +"*. c #FAFAFA", +"=. c #5984B8", +"-. c #81AAD4", +";. c #90B4D9", +">. c #4975AE", +",. c #5681B6", +"'. c #6F96C4", +"). c #82A5CE", +"!. c #92B2D6", +"~. c #95B5D8", +"{. c #799EC9", +"]. c #557FB3", +"^. c #C2CEDD", +"/. c #ECECEC", +"(. c #CACACA", +"_. c #D5D5D5", +":. c #E6EAEE", +"<. c #5B85B9", +"[. c #83ABD5", +"}. c #94B6DA", +"|. c #8CAED4", +"1. c #9FBDDD", +"2. c #8BADD3", +"3. c #799ECA", +"4. c #7197C4", +"5. c #789DC8", +"6. c #8CB1D8", +"7. c #81A9D4", +"8. c #5780B4", +"9. c #EAECEE", +"0. c #EBEBEB", +"a. c #5D87BA", +"b. c #85ACD6", +"c. c #97B9DC", +"d. c #628BBC", +"e. c #6087B9", +"f. c #90ABCD", +"g. c #B0C3DB", +"h. c #C6D4E5", +"i. c #B9CADF", +"j. c #6B8FBD", +"k. c #89AAD0", +"l. c #82AAD4", +"m. c #85ACD5", +"n. c #799CC7", +"o. c #C1CFE1", +"p. c #EAEAEA", +"q. c #A4A4A4", +"r. c #5F88BA", +"s. c #9BBBDD", +"t. c #6489BA", +"u. c #FEFEFE", +"v. c #E4E8EE", +"w. c #7BA5D2", +"x. c #88A8CF", +"y. c #AFC2DB", +"z. c #B2B2B2", +"A. c #6189BB", +"B. c #89AED7", +"C. c #9DBDDE", +"D. c #658ABA", +"E. c #AEC0D7", +"F. c #7B9DC8", +"G. c #89AFD7", +"H. c #7499C5", +"I. c #C8D5E6", +"J. c #E5E8EC", +"K. c #628ABB", +"L. c #8BB0D7", +"M. c #A1BFDF", +"N. c #DCE3EB", +"O. c #8BA6C8", +"P. c #638ABB", +"Q. c #A2BFDF", +"R. c #A3BFDE", +"S. c #5D84B7", +"T. c #F9FAFA", +"U. c #E9E9E9", +"V. c #A9A9A9", +"W. c #E0E0E0", +"X. c #648BBC", +"Y. c #A1BFE0", +"Z. c #507BB1", +"`. c #8BA7CA", +" + c #7696C0", +".+ c #5E85B7", +"++ c #638BBC", +"@+ c #94B2D5", +"#+ c #9CBCDD", +"$+ c #93B5DA", +"%+ c #9FBCDC", +"&+ c #5781B5", +"*+ c #D9E2EE", +"=+ c #E8E8E8", +"-+ c #C0C0C0", +";+ c #E2E5E9", +">+ c #A4C1E1", +",+ c #9AB7D8", +"'+ c #9EBBDB", +")+ c #AEC7E2", +"!+ c #B3CBE5", +"~+ c #AFC9E4", +"{+ c #A7C3E1", +"]+ c #9EBADB", +"^+ c #6D93C1", +"/+ c #678CBB", +"(+ c #E0E7F1", +"_+ c #D7D7D7", +":+ c #A2A2A2", +"<+ c #E1E4E8", +"[+ c #4F7AB1", +"}+ c #82A3CB", +"|+ c #87A7CE", +"1+ c #8BAAD0", +"2+ c #87A8CE", +"3+ c #80A2CB", +"4+ c #7599C6", +"5+ c #5E87BA", +"6+ c #5982B6", +"7+ c #7D9CC5", +"8+ c #CCD8E8", +"9+ c #F9F9FA", +"0+ c #E7E7E7", +"a+ c #ADADAD", +"b+ c #E9EAEA", +"c+ c #C7D2DF", +"d+ c #C4D2E3", +"e+ c #BACADF", +"f+ c #B4C6DD", +"g+ c #BFCEE2", +"h+ c #CBD7E7", +"i+ c #E7ECF3", +"j+ c #949494", +"k+ c #CECECE", +"l+ c #E2E2E2", +"m+ c #9A9A9A", +"n+ c #CBCBCB", +"o+ c #DCDCDC", +"p+ c #C2C2C2", +"q+ c #929292", +"r+ c #B7B7B7", +"s+ c #D6D6D6", +"t+ c #BFBFBF", +"u+ c #999999", +"v+ c #939393", +"w+ c #969696", +"x+ c #979797", +" . + @ # ", +" . $ % & * * = ", +" - ; * * * * * = ", +" > , * ' ) ! * * = ", +" ~ { ] ^ . / * * = ", +" ( _ : ( < * * = ", +" . . . < * [ = ", +" } | 1 > ", +" 2 3 4 5 ", +" 6 1 7 8 9 0 a b c d e ", +" f g h i j k l m k n o p q ", +" r s 4 t u j m m l v w x m y z ", +" A B C D E F j y y k m l w x G o H ", +" I y J K 7 L M N n n O k m v w G P o Q ", +" R S k T U V W M X Y Z ` ...+.@.#.$.P v %. ", +" &.*.v J =.-.;.>.u ,.'.).!.~.!.{.].^./.m (. ", +" _.k v :.<.[.}.|.1.2.3.4.5.~.6.7.1.8.9./.0.R ", +" R G x v :.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.o q. ", +" R n x w J r.E s.t.u.j *.n O v.r.;.w.x.y.0.O z. ", +" R o G w T A.B.C.D.N n n O k E.F.t G.H.I.0.y A ", +" R l $.x J.K.L.M.D.j y y N.O.P.Q.D R.S.T.U.n V. ", +" W.x $.#.X.6.Y.Z.`. +.+++@+#+$+%+&+*+x =+m R ", +" -+y P ;+++$+>+,+'+)+!+~+{+]+^+/+(+l =+$._+ ", +" :+w P <+[+}+|+1+2+3+4+5+6+7+8+9+$.U.0+n a+ ", +" z n b+c+d+e+g.f+g+h+i+n m $.p.U.0+v c ", +" j+k+y p.0.0././././.0.0.p.U.=+0+x l+m+ ", +" j+n+n /.U.p.p.p.p.U.U.=+0+=+m o+R ", +" &.U.y $.=+=+=+0+0+0.v w p+q+ ", +" j+r+s+G O n O l o+t+u+ ", +" v+w+m+x+j+ ", +" ", +" "}; --- banshee-1.6.1.orig/debian/gbp.conf +++ banshee-1.6.1/debian/gbp.conf @@ -0,0 +1,2 @@ +[DEFAULT] +debian-branch = ppa/jaunty --- banshee-1.6.1.orig/debian/Banshee.NowPlaying.X11.dll.config +++ banshee-1.6.1/debian/Banshee.NowPlaying.X11.dll.config @@ -0,0 +1,3 @@ + + + --- banshee-1.6.1.orig/debian/copyright +++ banshee-1.6.1/debian/copyright @@ -0,0 +1,151 @@ +This package was debianized by Sebastian Dröge on +Fri, 2 Sep 2005 16:54:20 +0200. + +It was downloaded from http://banshee-project.org/ + +Upstream Author: Aaron Bockover + +Copyright: + + For everything not explicitily noted below: + Copyright (C) 2005-2006 Novell + + For po/zh_CN.po, + po/zh_HK.po, + po/zh_TW.po, + po/bg.po, + po/da.po, + po/de.po, + po/cs.po, + po/es.po, + po/fr.po, + po/hu.po, + po/ja.po, + po/lt.po, + po/mk.po, + po/nl.po, + po/ru.po, + po/sr.po, + po/th.po, + po/sv.po, + po/vi.po, + po/sr@Latn.po, + po/pt_BR.po: + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For po/ca.po: + Copyright (C) 2005-2006 Jordi Mas i Hernàndez, jmas@softcatala.org + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For po/nb.po: + Copyright (C) 2005 Øivind Hoel and the GNOME Foundation + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For po/fi.po: + Copyright (C) 2006 Ilkka Tuohela. + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For po/en_CA.po: + Copyright (C) 2005-2006 Adam Weinberger and the GNOME Foundation + Copyright 2005 Novell, Inc. + Copyright 2005 Aaron Bockover + + For po/en_GB.po: + Copyright (C) 2006 The GNOME Foundation + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For po/it.po: + Copyright (C) 2006 Alessandro Gervaso + Copyright © 2005-2006 Novell, Inc. + Copyright © 2005 Aaron Bockover + + For src/Banshee.Dap/MassStorage/*: + Copyright (C) 2006 Novell and Gabriel Burt + + For src/Banshee.Plugins/Daap/daap-sharp/*: + Copyright (C) 2005 James Willcox + + For src/Banshee.Plugins/Daap/daap-sharp/Hasher.cs: + Copyright (C) 2005 James Willcox + Copyright (C) 2004 David Hammerton + Copyright (C) 2005 Jon Lech Johansen + + For src/Banshee.Plugins/Daap/daap-sharp/BrokenMD5.cs: + Copyright (C) 2005 James Willcox + Copyright 2001 by Matthew S. Ford. + Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com) + + For src/Banshee.Plugins/NotificationAreaIcon/NotificationArea.cs: + Copyright (C) 2005 Todd Berman + Copyright (C) 2005 Ed Catmur + Copyright (C) 2005 Novell, Inc. (Miguel de Icaza, Aaron Bockover) + + For src/Banshee.Plugins/NotificationAreaIcon/NotificationAreaIconPlugin.cs: + Copyright (C) 2005-2006 Novell, Inc. (Aaron Bockover) + Copyright (C) 2006 Sebastian Dröge + + For src/Banshee.Plugins/NotificationAreaIcon/NotificationAreaIconConfigPage.cs, + src/Banshee.Base/Notifications.cs: + Copyright (C) 2006 Ruben Vermeersch + + For src/Banshee.Dap/Mtp/*: + Copyright (C) 2006 Novell and Patrick van Staveren + + For dbus-sharp/*: + Copyright 2006 Alp Toker + + For src/Banshee.Base/Notifications/*: + Copyright (c) 2006 Sebastian Dröge + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + + For taglib-sharp/*: + Copyright (C) 2005 by Brian Nickel + + For taglib-sharp/TagLib/UnsupportedFormatException.cs, + taglib-sharp/TagLib/SupportedMimeType.cs, + taglib-sharp/TagLib/ReadOnlyException.cs, + taglib-sharp/TagLib/Picture.cs: + Copyright (C) 2005-2006 Novell, Inc. + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version + 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, + USA. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License Version 2.1, + found on Debian systems in the file /usr/share/common-licenses/LGPL-2.1. + --- banshee-1.6.1.orig/debian/compat +++ banshee-1.6.1/debian/compat @@ -0,0 +1 @@ +7 --- banshee-1.6.1.orig/debian/banshee.menu +++ banshee-1.6.1/debian/banshee.menu @@ -0,0 +1,5 @@ +?package(banshee):needs="X11" \ + section="Applications/Sound" \ + title="Banshee" \ + command="/usr/bin/banshee" \ + icon="/usr/share/pixmaps/banshee.xpm" --- banshee-1.6.1.orig/debian/banshee.install +++ banshee-1.6.1/debian/banshee.install @@ -0,0 +1,7 @@ +debian/tmp/usr/bin +debian/tmp/usr/share +debian/tmp/usr/lib/pkgconfig +debian/tmp/usr/lib/banshee-1/ +debian/banshee.xpm /usr/share/pixmaps +debian/Banshee.GStreamer.dll.config /usr/lib/banshee-1/Backends +debian/Banshee.NowPlaying.X11.dll.config /usr/lib/banshee-1/Backends --- banshee-1.6.1.orig/debian/banshee.links +++ banshee-1.6.1/debian/banshee.links @@ -0,0 +1,4 @@ +usr/bin/banshee-1 usr/bin/banshee +usr/bin/banshee-1 usr/bin/muinshee +usr/share/man/man1/banshee.1.gz usr/share/man/man1/banshee-1.1.gz +usr/share/man/man1/banshee.1.gz usr/share/man/man1/muinshee.1.gz --- banshee-1.6.1.orig/debian/control +++ banshee-1.6.1/debian/control @@ -0,0 +1,100 @@ +Source: banshee +Section: sound +Priority: optional +Maintainer: Debian CLI Applications Team +Uploaders: Sebastian Dröge , Chow Loong Jin +Build-Depends: debhelper (>= 7.0.50), + quilt (>= 0.46-7~), + autotools-dev, + cli-common-dev (>= 0.5.7), + intltool (>= 0.35), + lsb-release, + mono-devel (>= 2.0.1), + boo (>= 0.8.1), + libmono-cairo2.0-cil, + libmono-sqlite2.0-cil, + libndesk-dbus1.0-cil (>= 0.5), + libndesk-dbus-glib1.0-cil (>= 0.3), + libmono-addins-gui0.2-cil (>= 0.3), + libtaglib-cil-dev (>= 2.0.3.7), + libmono-zeroconf1.0-cil (>= 0.7.3), + libnotify0.4-cil, + libglib2.0-cil (>= 2.10), + libgtk2.0-cil (>= 2.12), + libgconf2.24-cil, + libgnome2.24-cil, + libipod-cil-dev (>= 0.8.5), + libipodui-cil-dev (>= 0.8.5), + libkarma-cil (>= 0.0.5), + libwebkit1.0-cil (>= 0.2), + monodoc-base (>= 1.1.9), + libsqlite3-dev (>= 3.4), + libmtp-dev (>= 0.2.0), + gconf2, + libglib2.0-dev, + libgtk2.0-dev (>= 2.8), + libx11-dev, + libxrandr-dev (>= 2:1.1.1), + libxxf86vm-dev (>= 1:1.0.1), + libgstreamer0.10-dev (>= 0.10.12), + libgstreamer-plugins-base0.10-dev (>= 0.10.12) +Standards-Version: 3.8.4 +Homepage: http://www.banshee-project.org +Vcs-Git: git://git.debian.org/git/pkg-cli-apps/packages/banshee.git +Vcs-Browser: http://git.debian.org/?p=pkg-cli-apps/packages/banshee.git + +Package: banshee +Architecture: any +Depends: ${shlibs:Depends}, + ${cli:Depends}, + ${misc:Depends}, + gstreamer0.10-plugins-base, + gstreamer0.10-plugins-good (>= 0.10.8-4), + gstreamer0.10-alsa | gstreamer0.10-audiosink, + hal, + gnome-icon-theme (>= 2.16) +Recommends: gstreamer0.10-plugins-bad, + podsleuth (>= 0.6.5-2~), + brasero, + avahi-daemon +Suggests: gstreamer0.10-plugins-ugly, + gstreamer0.10-ffmpeg, + banshee-dbg (=${binary:Version}) +Description: Media Management and Playback application + Banshee is a media management and playback application for the GNOME + desktop, allowing users to import audio from CDs, search their library, + create playlists of selections of their library, sync music to/from iPods + and other media devices, play and manage video files and burn selections + to a CD. + +Package: banshee-dbg +Section: debug +Priority: extra +Architecture: any +Depends: banshee (= ${binary:Version}), + ${shlibs:Depends}, + ${cli:Depends}, + ${misc:Depends} +Description: Media Management and Playback application (debug symbols) + Banshee is a media management and playback application for the GNOME + desktop, allowing users to import audio from CDs, search their library, + create playlists of selections of their library, sync music to/from iPods + and other media devices, play and manage video files and burn selections + to a CD. + . + This package contains the debugging symbols for Banshee. + +Package: monodoc-banshee-manual +Section: doc +Architecture: all +Depends: monodoc-manual, + ${misc:Depends} +Description: Media Management and Playback application (developer documentation) + Banshee is a media management and playback application for the GNOME + desktop, allowing users to import audio from CDs, search their library, + create playlists of selections of their library, sync music to/from iPods + and other media devices, play and manage video files and burn selections + to a CD. + . + This package contains the developer documentation for Banshee. + --- banshee-1.6.1.orig/debian/banshee.1 +++ banshee-1.6.1/debian/banshee.1 @@ -0,0 +1,156 @@ +.TH BANSHEE "1" "June 2009" "Banshee 1.4.3 (1.4.3) http://banshee-project.org" "User Commands" +.SH NAME +Banshee \- Media Management and Playback application +. +.br +Muinshee \- Media Management and Playback application +.SH SYNOPSIS +.B banshee-1 +[\fIoptions\fR...] [\fIfiles|URIs\fR...] +. +.br +.B muinshee +[\fIoptions\fR...] [\fIfiles|URIs\fR...] +.SH DESCRIPTION +Banshee is an media management and playback application for the GNOME desktop, allowing users to import audio from CDs, search their library, create playlists of selections of their library, sync music to/from iPods and other media devices, play and manage video files and burn selections to a CD. +.SH OPTIONS +.TP +\fB\-\-next\fR +Play the next track, optionally restarting if the +\&'restart' value is set +.TP +\fB\-\-previous\fR +Play the previous track, optionally restarting if +the 'restart value is set +.TP +\fB\-\-play\-enqueued\fR +Automatically start playing any tracks enqueued on +the command line +.TP +\fB\-\-play\fR +Start playback +.TP +\fB\-\-pause\fR +Pause playback +.TP +\fB\-\-stop\fR +Completely stop playback +.TP +\fB\-\-stop\-when\-finished\fR +Enable or disable playback stopping after the +currently playing track (value should be either +\&'true' or 'false') +.TP +\fB\-\-set\-volume\fR=\fILEVEL\fR +Set the playback volume (0\-100) +.TP +\fB\-\-set\-position\fR=\fIPOS\fR +Seek to a specific point (seconds, float) +.TP +\fB\-\-query\-current\-state\fR +Print current player state +.TP +\fB\-\-query\-last\-state\fR +Print last player state +TP +\fB\-\-query\-can\-pause\fR +Query whether the player can be paused +.TP +\fB\-\-query\-can\-seek\fR +Query whether the player can seek +.TP +\fB\-\-query\-volume\fR +Print player volume +.TP +\fB\-\-query\-position\fR +Print player position in currently playing track +.TP +\fB\-\-query\-uri\fR +Print URI of current track +.TP +\fB\-\-query\-artist\fR +Print artist name of current track +.TP +\fB\-\-query\-album\fR +Print album title of current track +.TP +\fB\-\-query\-title\fR +Print title of current track +.TP +\fB\-\-query\-duration\fR +Print duration of current track +.TP +\fB\-\-query\-track\-number\fR +Print track number of current track +.TP +\fB\-\-query\-track\-count\fR +Print album track count for current track +.TP +\fB\-\-query\-disc\fR +Print disc number of current track +.TP +\fB\-\-query\-year\fR +Print year of release of current track +.TP +\fB\-\-query\-rating\fR +Print user rating of current track +.TP +\fB\-\-show\fR|\fB\-\-present\fR +Present the user interface on the active workspace +.TP +\fB\-\-hide\fR +Hide the user interface +.TP +\fB\-\-no\-present\fR +Do not present the user interface, regardless of +any other options +.TP +\fB\-\-debug\fR +Enable general debugging features +.TP +\fB\-\-debug\-sql\fR +Enable debugging output of SQL queries +.TP +\fB\-\-debug\-addins\fR +Enable debugging output of Mono.Addins +.TP +\fB\-\-db\fR=\fIFILE\fR +Specify an alternate database to use +.TP +\fB\-\-uninstalled\fR +Optimize instance for running uninstalled; most +notably, this will create an alternate Mono.Addins +database in the working directory +.TP +\fB\-\-disable\-dbus\fR +Disable DBus support completely +.TP +\fB\-\-no\-gtkrc\fR +Skip loading a custom gtkrc file +(~/.config/banshee\-1/gtkrc) if it exists +.TP +\fB\-\-help\fR +Show this help +.TP +\fB\-\-help\-playback\fR +Show options for controlling playback +.TP +\fB\-\-help\-query\-track\fR +Show options for querying the playing track +.TP +\fB\-\-help\-query\-player\fR +Show options for querying the playing engine +.TP +\fB\-\-help\-ui\fR +Show options for the user interface +.TP +\fB\-\-help\-debug\fR +Show options for developers and debugging +.TP +\fB\-\-help\-all\fR +Show all option groups +.TP +\fB\-\-version\fR +Show version information +.PP +Copyright 2005\-2009 Novell, Inc. and Contributors. --- banshee-1.6.1.orig/debian/watch +++ banshee-1.6.1/debian/watch @@ -0,0 +1,3 @@ +version=3 +http://download.banshee-project.org/banshee/unstable/(\d\.\d\.\d)/banshee-1-(.*)\.tar\.gz +http://download.banshee-project.org/banshee/stable/(\d\.\d\.\d)/banshee-1-(.*)\.tar\.gz --- banshee-1.6.1.orig/debian/banshee.manpages +++ banshee-1.6.1/debian/banshee.manpages @@ -0,0 +1 @@ +debian/banshee.1 --- banshee-1.6.1.orig/debian/banshee.docs +++ banshee-1.6.1/debian/banshee.docs @@ -0,0 +1,3 @@ +AUTHORS +NEWS +README --- banshee-1.6.1.orig/debian/changelog +++ banshee-1.6.1/debian/changelog @@ -0,0 +1,1591 @@ +banshee (1.6.1-1~hyper1~jaunty1) jaunty; urgency=low + + * debian/(source/format, control, rules) + + Revert to source version 1.0, PPA doesn't like it + + Re-quiltify package + + -- Chow Loong Jin Fri, 28 May 2010 00:35:38 +0800 + +banshee (1.6.1-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + - Re-add libgnome2.24-cil, mono-addins-gui needs it + - Drop gdata + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-youtube + + -- Chow Loong Jin Thu, 27 May 2010 19:29:12 +0800 + +banshee (1.6.1-1~hyper1~karmic) karmic; urgency=low + + * Merge from Lucid, remaining changes: + + debian/control: + - Revert -cil-dev transition (except libtaglib2.0-cil which was + backported) + - Use mono-devel 2.4.2.3 + - Revert gst-plugins-base-dev version bump + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream and + force-enable LibraryWatcher + + debian/rules: + - Disable gapless (gstreamer not new enough) + + -- Chow Loong Jin Thu, 27 May 2010 18:59:09 +0800 + +banshee (1.6.1-1~hyper1~lucid) lucid; urgency=low + + * No change backport to Lucid. + + -- Chow Loong Jin Thu, 27 May 2010 18:55:34 +0800 + +banshee (1.6.1-1) unstable; urgency=low + + * New bugfix upstream release: + + Enhancements: + - More devices supported: Android: Galaxy Portal, DEXT/CLIQ + - Automatically scan Music and Video libraries on first start + - Improve search responsiveness on large libraries + - Add AlbumArtist to the search menu (bgo#615692) + - Improved Last.fm authentication experience + - Many enhancements to MeeGo support + + Notable Bugs Fixed (since 1.6.0): + - Fix ListView a11y crash + - Fix Podcasts ListView right-click crash + - [TrackActions] Fix collection-modified crash + - [ColumnCellAlbum] Fix invalid cast crash + - Fix several custom-widget related crashes + - [Dap.Ipod] Fix a race condition + - [gapless] Fix rating resets (bgo#614863) + - [UserJobTile] Don't crash if icons are missing (bgo#615778) + - [BansheeQuery] Fix mime-type queries (bgo#601920) + - [MaemoDevice] Ignore the .videos directory (bgo#614825) + - [MaemoDevice] Set 'Music' and 'Video' as the default folders + - [MusicBrainzQueryJob] Escape album/artist (bgo#614569) + - 40 bugs fixed since 1.6.0 + * debian/source/format, debian/control, debian/rules: + + Move to 3.0 (quilt) format + + -- Chow Loong Jin Thu, 20 May 2010 00:43:45 +0800 + +banshee (1.6.0-1~hyper1~lucid1) lucid; urgency=low + + * No change version bump. Previous version was oudated and missing the + --disable-clutter flag. + + -- Chow Loong Jin Sat, 03 Apr 2010 18:44:59 +0800 + +banshee (1.6.0-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + - Re-add libgnome2.24-cil, mono-addins-gui needs it + - Drop gdata + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-youtube + + -- Chow Loong Jin Fri, 02 Apr 2010 04:44:47 +0800 + +banshee (1.6.0-1~hyper1~karmic) karmic; urgency=low + + * Merge from Lucid, remaining changes: + + debian/control: + - Revert -cil-dev transition (except libtaglib2.0-cil which was + backported) + - Use mono-devel 2.4.2.3 + - Revert gst-plugins-base-dev version bump + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream and + force-enable LibraryWatcher + + debian/rules: + - Disable gapless (gstreamer not new enough) + + -- Chow Loong Jin Fri, 02 Apr 2010 00:52:53 +0800 + +banshee (1.6.0-1~hyper1~lucid) lucid; urgency=low + + * No change backport to Lucid + + -- Chow Loong Jin Fri, 02 Apr 2010 00:58:50 +0800 + +banshee (1.6.0-1) unstable; urgency=low + + * New upstream release: + + Notable bug fixes: + - Fix device support on upcoming distros with DeviceKit rename + - Restore equalizer preset correctly (bgo#614313) + - Handle broken symlinks correctly (bgo#614065) + - Allow overriding Android, Maemo, WebOS default settings (bgo#611991) + - Fix crash deleting playlist on mass storage device (bgo#613734) + - Fix issue with iTunes importer dialog sizing (bgo#613607) + - Fix play count calculation with gapless enabled (bgo#613418) + - Handle exceptions thrown by old plugins (LP: #546342) + - Use panel-specific (eg monochrome) icon in notification area + (LP: #525280) + + Other bugs fixed: + - Start HAL automatically if not already started (LP: #543354) + - Fix bug where new podcasts could not be added (Closes: #575734) + * debian/(control, rules): + + Disable the clutter video sink + - Uses deprecated functions, and will fail to build with a newer version + clutter (1.2.X which is available in experimental) + + -- Chow Loong Jin Fri, 02 Apr 2010 03:12:16 +0800 + +banshee (1.5.6-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + - Re-add libgnome2.24-cil, mono-addins-gui needs it + - Drop gdata + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-clutter + - --disable-youtube + + -- Chow Loong Jin Mon, 22 Mar 2010 21:26:21 +0800 + +banshee (1.5.6-1~hyper1~karmic) karmic; urgency=low + + * Merge from Lucid, remaining changes: + + debian/control: + - Revert -cil-dev transition (except libtaglib2.0-cil which was + backported) + - Use mono-devel 2.4.2.3 + - Revert gst-plugins-base-dev version bump + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream and + force-enable LibraryWatcher + + debian/rules: + - Disable gapless (gstreamer not new enough) + + -- Chow Loong Jin Mon, 22 Mar 2010 20:33:30 +0800 + +banshee (1.5.6-1~hyper1~lucid) lucid; urgency=low + + * No change backport to Lucid + + -- Chow Loong Jin Mon, 22 Mar 2010 16:45:41 +0800 + +banshee (1.5.6-1) unstable; urgency=low + + * New upstream release: + + Notable bug fixes: + - Fix rendering and interaction bugs in the grid view + - Fix issue with volume getting reset on every song change + - Handle volume changes from outside Banshee (eg PulseAudio) + - Fix issue parsing some RSS feeds + - Fix library importing and rescanning on all IO backends + - Support coverart for albums without an artist (bgo#612626) + - Don't capture 's' presses if keybindings disabled + - Fix typing in the Wikipedia webkit view + - Fix equalizer settings migration (bgo#612669) + - Redraw the entire ListView when dragging columns + - Increase podcast download timeout + - Fix bad startup crash in PlayQueue on old Mono + - Fix "Too many open files" bug with GIO backend + - [Banshee.Hardware] Handle exceptions (bgo#613173) + - [PodcastActions] Unsubscribe from an event on dispose + - [ContextPane] Fix crash if active removed (bgo#613277) + - [LastfmSource] Fix crash (bgo#612824) + - [Lastfm] Fix crash using auth Refresh button (bgo#610911) + - [Lastfm] Fix crash (bgo#613276) + - Fix compilation error with older Mono + - Fix compilation error with bundled notify-sharp + - Fix --disable-youtube flag + - Set YouTube install dir to Extensions/ + - Fix building with older GStreamer (bgo#613339) + * debian/rules: + + --enable-gdata => --enable-youtube + * debian/control: + + Bump taglib-sharp requirement to 2.0.3.7 as per build/m4/banshee/taglib.m4 + + -- Chow Loong Jin Sun, 21 Mar 2010 21:22:57 +0800 + +banshee (1.5.5-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + - Re-add libgnome2.24-cil, mono-addins-gui needs it + - Drop gdata + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-clutter + - --disable-gdata + + debian/patches/01_waitone-override.patch: + - Use Compat WaitOne override. Fixes FTBFS with older mono + + -- Chow Loong Jin Fri, 12 Mar 2010 04:08:04 +0800 + +banshee (1.5.5-1~hyper1~karmic) karmic; urgency=low + + * Merge from unstable, remaining changes: + + debian/control: + - Revert -cil-dev transition (except libtaglib2.0-cil which was + backported) + - Use mono-devel 2.4.2.3 + - Revert gst-plugins-base-dev version bump + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream and + force-enable LibraryWatcher + + debian/rules: + - Disable gapless (gstreamer not new enough) + + -- Chow Loong Jin Fri, 12 Mar 2010 03:21:19 +0800 + +banshee (1.5.5-1~hyper1~lucid) lucid; urgency=low + + * No change backport to Lucid + + -- Chow Loong Jin Sat, 20 Mar 2010 15:54:18 +0800 + +banshee (1.5.5-1) unstable; urgency=low + + * New upstream release + + New Features: + - Gapless Playback / Playbin2 (LP: #45518, #377354) + - Grid View + - YouTube Extension + + Enhancements: + - Improve search responsiveness on large libraries (LP: #474514) + - Add icons for Nexus One and Audiobooks (LP: #532182) + - Play Queue item count, size, duration now ignores old tracks + - Muinshee fixes: disable Auto-DJ, allow reordering, hide previous song + + Notable bug fixes: + - Fix a very common, SQL-related crash in 1.5.4 (Closes: #572136) + - Fix saving equalizer settings in culture-invariant way + - Jumping to a source's prefs via its context menu works again + - Usage data not submitted more than every 48 hours + - Fix repeatedly resyncing some files to a device b/c transcoded + - Clear the redo stack on shuffle mode change + - Accept feeds with empty title (LP: #468323) + - Uri encode file location queries, making them work properly + * debian/control: + + Bump gst-plugins-base-dev version for gapless playback + + Add libgdata-cil-dev for youtube extenesion + * debian/rules: + + Add --enable-gapless-playback and --enable-gdata + + -- Chow Loong Jin Fri, 12 Mar 2010 03:13:23 +0800 + +banshee (1.5.4-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + - Re-add libgnome2.24-cil, mono-addins-gui needs it + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-clutter + + -- Chow Loong Jin Sun, 28 Feb 2010 07:35:46 +0800 + +banshee (1.5.4-1~hyper1~karmic) karmic; urgency=low + + * Merge from unstable, remaining changes: + + debian/control: + - Revert -cil-dev transition (except libtaglib2.0-cil which was + backported) + - Use mono-devel 2.4.2.3 + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream and + force-enable LibraryWatcher + + -- Chow Loong Jin Sat, 27 Feb 2010 15:54:13 +0800 + +banshee (1.5.4-1) unstable; urgency=low + + * New upstream release (Closes: #571734) + + New features: + - Opt-In Usage Data Collection + - Default Equalizer Presets + - Extensible Shuffle Modes + + Enhancements: + - Wikipedia context pane extension enabled by default + - Add support for Nokia N900 phones + - Add tooltip to playback error column + - On close Internet Archive item, return to Search + - Notify user if trying to sync missing file to DAP + - Popup explanation of manual playlist ordering when appropriate + - Simplify the default set of columns in Podcasts + - Enable 'Delete From Drive' action in File System Queue + - Coverart for unicode artist/albums now supported + - Dropped glade-sharp dep; GNOME 3.0 ready + - Add columns showing track sample rate and bits per sample + - Option to sort an artist's albums by year, not title + - If starting Banshee hidden (--hide), up to half a second of + startup time is saved + + Notable bug fixes: + - Enable LibraryWatcher only for Music and Video libraries + - Do better job preserving IsCompilation metadata + - Store some PlayQueue settings in the db (not GConf) + - Update to Last.fm's API change for scrobbling/recs + - Bring back static FileNamePattern API used by some scripts + - Fix several memory leaks + + Other bugs fixed: + - Fix segfault with Cairo when playing a song without album art (LP: #523913) + - Follow symlinks when scanning the library (LP: #406667) + - Fix issue importing mp3s with non-ASCII ID3 tags (LP: #364562) + * debian/control: + + Bump libtaglib-cil-dev version requirement to 2.0.3.5 + + Drop libglade2.0-cil-dev and libgnome2.0-cil-dev build-dep + + Add libwebkit-cil-dev to build-deps + * debian/rules: + + Reorder configure flags to match upstream's ./configure --help listing + + Add --enable-webkit since it is now enabled by default + * debian/patches/01_monodoc-fix-enable.patch, + debian/patches/series: + + Dropped, applied upstream + + -- Chow Loong Jin Sun, 28 Feb 2010 01:14:01 +0800 + +banshee (1.5.3-0ubuntu1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + + debian/rules: + - Revert to using csc instead of mono-csc + - --disable-clutter + + -- Chow Loong Jin Fri, 29 Jan 2010 03:00:47 +0800 + +banshee (1.5.4~really1.5.3-0ubuntu1~hyper1~karmic) karmic; urgency=low + + * Merge from unstable, remaining changes: + + debian/control: + - Revert -cil-dev transition + - Use mono-devel 2.4.2.3 + + debian/patches/02_bundle-inotifywatcher.patch: + - Revert the InotifyWatcher removal commit from upstream, and + force-enable LibraryWatcher + + -- Chow Loong Jin Fri, 29 Jan 2010 00:23:27 +0800 + +banshee (1.5.3-1) unstable; urgency=low + + [ Chow Loong Jin ] + * New upstream release + + New features: + - Sync device from playlist option + - Type-ahead find in track, artist, and album lists + - Optional cover art in lower-left corner + - Editable cover art via drag-and-drop and right-click + - Audiobooks library extension + - Library-folder watcher extension + - eMusic importer/downloader extension + + Enhancements: + - Improved Podcast filtering/browsing + - Extension preferences tab reworked + - Extension names/descriptions translated + - Improved sqlite performance + - Added --set-rating=RATING command line option + - Support for Nexus One devices + + Bug-fixes: + - DAPs now works with DeviceKit (LP: #382941) + - Fix issue with DAAP authenticating (LP: #308233) + - Podcast renaming should work well now + - Podcast download cancelling is now fast + - Internet Archive results paging off-by-one fixed + - Fix for MTP devices on 64-bit distros + - Fix import error for files with '\0' characters (LP: #499698) + - Support syncing playlists to iPods (LP: #75571) + - Fix syncing podcasts to iPods (LP: #140489) + * debian/control: + + Bump mono-devel version to 2.4.3 for LibraryWatcher + + Re-enable libkarma-cil, use libkarma-cil-dev + + Bump mono-addins version to 0.3.1 + + Bump libgstreamer0.10-dev version to 0.10.12 + * debian/rules: + + Add configure flags for explicitly enabling all wanted + features, countering Banshee's automagic silently disabling features + * debian/patches/01_devkit-fix.patch: + + Dropped, applied upstream + * debian/patches/: + + 01_monodoc-fix-enable.patch: Fix usage of AC_ARG_ENABLE for --enable-docs + + [ Jo Shields ] + * debian/control: + + Drop individual library build-deps as all mono libs are pulled in at + build time + + Bump Standards version to 3.8.4 (no changes needed) + + -- Chow Loong Jin Thu, 28 Jan 2010 23:52:53 +0800 + +banshee (1.5.2-1) unstable; urgency=low + + [ Chow Loong Jin ] + * New upstream release (Closes: #558611) + + New Features: + - The Internet Archive extension + - The iTunes importer + - Metadata ratings and playcount import and export + - Add support for Pulse and Droid phones (LP: #501515) + - Use new Last.fm API (Closes: #548029, LP: #415937) + + + Enhancements: + - Many accessibility enhancements + - When sorting by score also sort by playcount (bgo#598431) + - Add WICD support (bgo#596918) + - Add the USB id for the Palm Pre in developer mode + - Improve the import media dialog (bgo#559013) + - Allow seeking in DAAP streams + - Tooltip for the AutoDJ source combobox (bgo#598504) + - Improve recognition of Android devices + - Recognize Samsung Galaxy device in debug mode + - PlaybackError query field (bgo#590946) + - Additional tokens for file system organization (bgo#489861) + - Remember direction when sorting the list view (bgo#590869) + - Cleaner track change notification popup (LP: #445965) + - Move Last.fm settings to the preferences dialog + - Double click toggles fullscreen in Now Playing (bgo#577971) + + + Notable bug fixes: + - Fix the playcount update (LP: #388360) + - Correct default button in message dialogs (bgo#599495) + - Hide shuffle menu when shuffling is disabled (bgo#599465) + - Fix bug with AutoDJ updating LastPlayed erroneously (bgo#594701) + - Fix next playback source (bgo#599834) + - Fix adding tracks to the play queue (LP: #469134) + - Fix up iPod podcast support (bgo#434237) + - Fix cover art pick up for multi-disc albums (bgo#591982) + - Fix the play queue when StopWhenFinished is on (bgo#563021) + - Fix race when saving track metadata (bgo#598321) + + + Other bug fixes: + - Fix System.DivideByZeroException when rescanning (LP: #452366) + + * debian/control: + + Bump libipod{,ui}-cil dependency versions to 0.8.5 + + Build depend on -cil-dev packages instead of -cil + + Add libmono-addins-cil-dev to Build Dep + + Build depend on libboo-cil-dev instead of just boo + * debian/patches/01_fix-ipod-sharp-ftbfs: + + Dropped, applied upstream + * debian/patches/01_devkit-fix.patch: + + Backport fix from upstream for DAP support with Devkit + + [ Jo Shields ] + * debian/control: + + Disable Rio Karma support for now; it's broken due to bug #551049 + * debian/monodoc-banshee-manual.postinst: + + Delete - we use DPKG triggers to handle manual installs now + + -- Chow Loong Jin Thu, 21 Jan 2010 13:19:04 +0800 + +banshee (1.5.1-1~hyper1~jaunty) jaunty; urgency=low + + * Merge from Karmic, remaining changes: + + debian/control: + - libgconf2.0-cil -> libgconf2.24-cil + - Lower mono-devel version + - Disable clutter support (dependencies not satisfiable) + + debian/rules: + - Revert to using csc instead of mono-csc + + -- Chow Loong Jin Thu, 15 Oct 2009 09:36:34 +0800 + +banshee (1.5.1-1) unstable; urgency=low + + * New upstream release + + New Features: + - Play Queue Auto DJ keeps the tunes coming + - Shuffle by album and artist + - Shuffle by weighted rating and score mode + - Add tooltips for ellipsized ListView text + - Keep the playing song visible in the track list + - Add support for WebOS devices + - Add support for the Samsung Galaxy Android Phone + + + Enhancements: + - When user picks new sort column, default to sort ascending + - Drop the " Library" suffix on the Music and Video sources + - Add thin highlight to ListView selection for 3D effect + - Keyboard shortcut (ESC) to clear the search box + - Expose LAME's "preset" option + - Added a --gconf-base-key for running sandboxed + - Trim URL pasted from clipboard to podcast dialog + - Allow selection of multiple folders on import + - Support playlists on Android G1 devices + - Better support for devices running Rockbox + - Set video sync folder for Android and WebOS devices + - Made the error message label selectable + - Save and load the Gtk.AccelMap + - Added taglib/oga mimetype to the vorbis audio profile + - Auto-completion for composer, conductor, grouping and copyright + - Added the 'comment' search filter + - Selectable song properties + - Show a tooltip in track editor when the property is truncated + + + Notable bug fixes: + - Fix blank MimeTypes for tracks ripped before 1.4 + - Fix a Bit Rate column sizing glitch + - Fix browser positioning when Banshee is maximised + - Fix compilation metadata reading and writing + - Work with new notification-daemon + - Avoid needlessly syncing iPods twice + - Deterministically sort sources to avoid fluttering + - Look for Rhythmbox db at both new and old paths + - Fix bug with scrobbling after skipping a track + - Fix crash in equalizer + - Fix an exception on startup when DBus is disabled + - Fix off-by-one-day date querying bug + - Fix a UI/spacing glitch in the Smart Playlist Editor + - Don't hide the track info popup while it has focus + - Prevent endless "Searching for CD metadata..." + - Fix Last.fm now-playing for non-decimal track lengths + - Dispose the SqliteCommand after it's executed + - Fix notification area popup positioning on multi-monitor systems + - Fix the playing indicator when song in list more than once + - Fix crash when opening the profile conf dialog + - Fix crash stopping jobs on shutdown + - Fix notification area popup flashing + - Trim filename dots and spaces to be NTFS compliant + - Stop playing from audio CD when it's ejected + - Don't update DateUpdated stamp when transient fields change + - Fix DAP content page title not changing when device renamed + - Set the Podcast flag on import based on genre + - Fix hang when slider dragged to track change . + - Prevent slider jumping around after seeking in stream + - Fix Last.fm logos on dark themes + - --query-X option sometimes returned an error + - Build and runtime fixes for FreeBSD + - Fix editor always prompting to save podcasts + - Fix rounding when updating the track score + - Fix initial track score calculation + - Fix playback buttons' a11y + - Fix crasher on PPC + + [ Chow Loong Jin ] + * debian/control, debian/changelog: + + Use mono-csc instead of csc for MCS. + + Bump mono-devel version to 2.4.2 for mono-csc + + No change bump of Standards-Version to 3.8.3 + * debian/patches/01_fix-ipod-sharp-ftbfs: + + Fix FTBFS when ipod-sharp's debug files are missing (Closes: #549725) + * debian/README.source: + + Copied from quilt + + [ Iain Lane ] + * debian/patches/01_dispose-sqlite-cmd.patch, 02_system-equalizer.patch, + 03_muinshee-booter.patch: Drop, applied upstream. + * debian/patches/99_ltmain_as_needed.patch: Refresh + * debian/rules: Disable Banshee's builtin equalizer - gstreamer's one is now + good enough for us to use. + + -- Chow Loong Jin Wed, 14 Oct 2009 19:21:51 +0800 + +banshee (1.5.0-3~hyper1~jaunty1) jaunty; urgency=low + + * Merge from Karmic unstable PPA, remaining changes: + + Revert bad GNOME# 2.24 transition + + -- Chow Loong Jin Sat, 15 Aug 2009 02:21:05 +0800 + +banshee (1.5.0-3~hyper1~karmic1) karmic; urgency=low + + * Upload to PPA + * debian/gbp.conf: + + Add a gbp.conf to ease git buildpackage work + + -- Chow Loong Jin Sat, 15 Aug 2009 02:10:33 +0800 + +banshee (1.5.0-3) experimental; urgency=low + + * debian/patches/03_muinshee-booter.patch, + debian/banshee.links, + debian/banshee.1: + + Patch banshee booter script to autodetect whether to use Banshee or + Muinshee interface based on the file name + + Make /usr/bin/muinshee a symlink of /usr/bin/banshee-1 + + Update banshee.1 manpage and link it to muinshee.1 + + -- Chow Loong Jin Sun, 19 Jul 2009 00:22:34 +0800 + +banshee (1.5.0-2) experimental; urgency=low + + * debian/control: + + Replace gstreamer0.10-plugins-ffmpeg with gstreamer0.10-ffmpeg + + Change of my email address + + Bump Standards-Version to 3.8.2 + * debian/rules: + + Drop dh_installchangelogs override. We don't want ChangeLog installed + any more. + * debian/banshee.links: + + Updated to symlink the banshee manpage to banshee-1 + * debian/patches/01_dispose-sqlite-cmd.patch: + + Fix for BGO #586498, where Banshee leaks memory while rescanning library + * debian/patches/01_remove-bash-dep.patch: + + Delete it for good + + -- Chow Loong Jin Wed, 08 Jul 2009 22:10:27 +0800 + +banshee (1.5.0-0ubuntu1~hyper1~jaunty1) jaunty; urgency=low + + * Backport to jaunty + * debian/control: Revert bad GNOME# 2.24 transition + + -- Chow Loong Jin Thu, 04 Jun 2009 01:03:53 +0800 + +banshee (1.5.0-1) experimental; urgency=low + + [ Chow Loong Jin ] + * New Upstream Version + * debian/control: + + Fix grammatical error "an media" to "a media" + + Set quilt's version to 0.46-7~ instead of 0.46-7 for backportability + + Replace gstreamer0.10-plugins-ffmpeg with gstreamer0.10-ffmpeg + + Change of my email address + + Bump Standards-Version to 3.8.2 + + Drop unnecessary build dependencies + * debian/watch: + + Updated to include changes in directory structure + * debian/patches: + + 02_system_equalizer.patch: drop a hunk, it'll work without it anyway + + 03_fix-lastfm.patch: dropped, applied upstream + + 20_check_notification_support.patch: dropped, applied upstream + + [ Iain Lane ] + * debian/banshee.{1,manpages} Add manpage. This was initially generated by + help2man from `banshee --help-all' and then edited a bit to be more + readable and standard. (Closes: #384557) + + [ Iulian Udrea ] + * debian/compat: + - Bump to 7. + + [ Sebastian Dröge ] + * debian/control: + + Update/remove some build dependencies for the new version. + + -- Sebastian Dröge Thu, 04 Jun 2009 20:01:25 +0200 + +banshee (1.4.3-6) unstable; urgency=low + + [ Chow Loong Jin ] + * debian/control: + + Fix grammatical error "an media" to "a media" + + Set quilt's version to 0.46-7~ instead of 0.46-7 for backportability + + Replace gstreamer0.10-plugins-ffmpeg with gstreamer0.10-ffmpeg + + Change of my email address + + Bump Standards-Version to 3.8.2 + + Drop unnecessary build dependencies + * debian/watch: + + Updated to include changes in directory structure + * debian/banshee.links: + + Updated to symlink the banshee manpage to banshee-1 + + Make /usr/bin/muinshee a symlink to /usr/bin/banshee-1 + + Make muinshee.1 manpage a symlink to banshee.1 + * debian/banshee.1: + + Update to show muinshee as well + * debian/patches/03_muinshee-booter.patch: + + Patch banshee booter script to autodetect whether to use Banshee or + Muinshee interface based on file name + + [ Iain Lane ] + * debian/banshee.{1,manpages} Add manpage. This was initially generated by + help2man from `banshee --help-all' and then edited a bit to be more + readable and standard. (Closes: #384557) + + [ Iulian Udrea ] + * debian/compat: + - Bump to 7. + + -- Chow Loong Jin Wed, 24 Jun 2009 01:57:02 +0800 + +banshee (1.4.3-5) unstable; urgency=low + + * debian/control, + debian/rules, + debian/patches/series: + + Change order of gstreamer0.10-audiosink | gstreamer0.10-alsa + + Transition to dh7 + + Use Quilt + + Add banshee-dbg package containing debug symbols + + Change Maintainer to pkg-cli-apps + * debian/patches/02_system-equalizer.patch, + debian/patches/99_ltmain_as-needed.patch: + + Prepend all paths with a/ to convert to p1 patch for Quilt + + -- Chow Loong Jin Mon, 25 May 2009 20:02:35 +0800 + +banshee (1.4.3-4) unstable; urgency=low + + * debian/control: + + Changed Vcs-* to git addresses + + Drop gstreamer0.10-gnomevfs dependency + + Add gstreamer0.10-audiosink dependency + + Move gst-plugins-ugly and gst-ffmpeg from Recommends to Suggests + + GNOME# 2.24 transition + + Bump Standards-Version + + -- Chow Loong Jin Thu, 16 Apr 2009 18:26:25 +0800 + +banshee (1.4.3-3) unstable; urgency=low + + * debian/control: + + Add me to Uploaders + * debian/patches/03_fix-lastfm.patch: + + Fix issue where Last.fm personal stations are not loaded + * debian/patches/debian/patches/20_check_notification_support.patch: + + Check whether notification daemon supports actions + + -- Chow Loong Jin Fri, 13 Mar 2009 19:00:02 +0800 + +banshee (1.4.3-2) unstable; urgency=low + + * debian/control: + + Build depend on libtaglib2.0-cil >= 2.0.3.2 (Closes: #518755). + + -- Sebastian Dröge Mon, 09 Mar 2009 11:40:28 +0100 + +banshee (1.4.3-1) unstable; urgency=low + + [ Jo Shields ] + * debian/control: + + Add Vcs-* fields + + [ Sebastian Dröge ] + * New upstream release. + * Upload to unstable (Closes: #518419). + * debian/control: + + Use Gnome# 2.20 for now. + + -- Sebastian Dröge Fri, 06 Mar 2009 10:43:28 +0100 + +banshee (1.4.2-2) experimental; urgency=low + + * debian/control: + + Build depend on Gnome# 2.24 and GnomeDestkop# 2.24. + + -- Sebastian Dröge Sat, 24 Jan 2009 21:33:21 +0100 + +banshee (1.4.2-1) experimental; urgency=low + + * New upstream bugfix release: + + debian/rules, + debian/control: + - Set the vendor ID to the output of lsb_release -sd. + * debian/control, + debian/rules: + + Update for the mono 2.0 transition. + + -- Sebastian Dröge Wed, 21 Jan 2009 16:29:56 +0100 + +banshee (1.4.1-1) experimental; urgency=low + + * New upstream bugfix release. + + -- Sebastian Dröge Tue, 11 Nov 2008 19:25:44 +0100 + +banshee (1.4.0.1-1) experimental; urgency=low + + * New upstream stable release: + + debian/patches/01_dllimports.patch, + debian/Banshee.Unix.dll.config: + - Removed, fixed upstream. + + -- Sebastian Dröge Sat, 08 Nov 2008 14:26:15 +0100 + +banshee (1.3.3-3) experimental; urgency=low + + * debian/Banshee.Unix.dll.config, + debian/banshee.install: + + Add dllmaps for libglib-2.0.so.0. + + -- Sebastian Dröge Mon, 03 Nov 2008 11:08:45 +0100 + +banshee (1.3.3-2) experimental; urgency=low + + * debian/patches/01_dllimports.patch: + + Patch from upstream SVN to fix some dllimports that made banshee + crash in some circumstances (Closes: #503918). + + -- Sebastian Dröge Sat, 01 Nov 2008 20:28:15 +0100 + +banshee (1.3.3-1) experimental; urgency=low + + * New upstream development release: + + debian/rules: + - Enable release configuration. + + debian/control: + - Update build dependencies. + + debian/patches/01_no-warnaserror.patch, + debian/patches/03_now-playing-cover-crash.patch, + debian/patches/04_first-start-crash.patch: + - Dropped, not needed anymore or merged upstream. + + -- Sebastian Dröge Tue, 28 Oct 2008 19:52:40 +0100 + +banshee (1.2.1-3) experimental; urgency=low + + * debian/control: + + Depend on gnome-icon-theme >= 2.16 (Closes: #491976, #490662). + + -- Sebastian Dröge Fri, 15 Aug 2008 16:50:57 +0200 + +banshee (1.2.1-2) experimental; urgency=low + + * debian/control: + + Update description to include video support and improve some other small + things (Closes: #494981). + * debian/patches/03_now-playing-cover-crash.patch: + + Fix crash in the "Now playing" source if the current song + has no cover art. Patch from upstream SVN/Bugzilla. + * debian/patches/04_first-start-crash.patch: + + Fix crash on first start. Patch from upstream Bugzilla. + + -- Sebastian Dröge Thu, 14 Aug 2008 10:43:05 +0200 + +banshee (1.2.1-1) experimental; urgency=low + + * New upstream bugfix release: + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + + -- Sebastian Dröge Wed, 13 Aug 2008 11:06:00 +0200 + +banshee (1.2.0-1) experimental; urgency=low + + * New upstream release: + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + + debian/patches/02_system-equalizer.patch, + debian/control: + - Always use the system equalizer and depend on a new enough version + of gst-plugins-good. + + debian/control: + - Update build dependencies. + + debian/Banshee.NowPlaying.X11.dll.config, + debian/control: + - Add dllmaps for libbnpx11. + + -- Sebastian Dröge Wed, 30 Jul 2008 12:37:28 +0200 + +banshee (1.0.0-2) unstable; urgency=low + + * debian/watch: + + Updated for the new location (Closes: #471400). + + -- Sebastian Dröge Wed, 11 Jun 2008 11:13:43 +0200 + +banshee (1.0.0-1) unstable; urgency=low + + * New upstream release, "1.0": + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + + debian/Banshee.Widgets.dll.config, + debian/Banshee.Core.dll.config, + debian/banshee.install: + - Dropped dllmaps that are upstream now. + * Upload to unstable. + + -- Sebastian Dröge Fri, 06 Jun 2008 00:12:33 +0200 + +banshee (0.99.3-1) experimental; urgency=low + + * New upstream release, "1.0 RC1" (Closes: #483800): + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + * debian/control: + + Recommend brasero for CD burning. + + -- Sebastian Dröge Mon, 02 Jun 2008 10:06:58 +0200 + +banshee (0.99.2-1) experimental; urgency=low + + * New upstream release, "1.0 Beta 2": + + debian/Hyena.Gui.dll.config, + debian/banshee.install: + - Don't install ourself anymore, fixed upstream. + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + + -- Sebastian Dröge Fri, 23 May 2008 07:35:49 +0200 + +banshee (0.99.1-3) experimental; urgency=low + + * debian/rules: + + Don't enable plugins by hand but instead use only the ones that are + labeled stable upstream. + * debian/Banshee.Core.dll.config, + debian/Banshee.GStreamer.dll.config, + debian/Banshee.Widgets.dll.config, + debian/banshee.install: + + Add even more dllmaps for different assemblies. + + -- Sebastian Dröge Fri, 09 May 2008 08:57:41 +0200 + +banshee (0.99.1-2) experimental; urgency=low + + * debian/banshee.install: + + Install Hyena.Gui.dll.config, otherwise several actions will lead + to crashes. + + -- Sebastian Dröge Thu, 08 May 2008 11:02:51 +0200 + +banshee (0.99.1-1) experimental; urgency=low + + * New upstream release, "1.0 Beta 1": + + debian/control: + - Update build dependencies and dependencies. + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly again. + + -- Sebastian Dröge Wed, 07 May 2008 07:44:01 +0200 + +banshee (0.98.3-1) experimental; urgency=low + + * New upstream release, "1.0 Alpha 3": + + debian/rules, + debian/control: + - Update build dependencies and enable some optional extensions. + + debian/patches/01_no-warnaserror.patch: + - Updated to apply cleanly. + + -- Sebastian Dröge Fri, 11 Apr 2008 11:17:24 +0200 + +banshee (0.98.2-2) experimental; urgency=low + + * debian/control: + + Fix comma errors in build dependencies. + + -- Sebastian Dröge Sat, 29 Mar 2008 19:09:11 +0100 + +banshee (0.98.2-1) experimental; urgency=low + + * New upstream release, "1.0 Alpha 2". + + -- Sebastian Dröge Thu, 27 Mar 2008 08:02:58 +0100 + +banshee (0.98.1-1) experimental; urgency=low + + * New upstream development release, 1.0 Alpha 1: + + This is the first release in the Banshee 1.0 series. + This Alpha 1 release does not have feature parity' with previous Banshee + releases (the last being Banshee 0.13.2). This means there are a number + of features in this release that users may have come to know and love in + Banshee that are missing for the time being. + + + debian/control: + - Update dependencies and build dependencies. + + debian/banshee.links: + - Link /usr/bin/banshee-1 to /usr/bin/banshee + + debian/banshee.install: + - Update paths. + + debian/patches/*: + - Dropped, everything. + + debian/patches/01_no-warnaserror.patch: + - Don't build with -warnaserror. + + debian/rules: + - Cleanup. + + -- Sebastian Dröge Tue, 18 Mar 2008 17:13:11 +0100 + +banshee (0.13.2+dfsg-6) unstable; urgency=low + + * debian/patches/02_stable-branch-r3418.patch, + debian/patches/02_stable-branch-r3426.patch: + + Update to revision 3426 of the stable branch, featuring another + important bugfix to the audioscrobbler plugin. + + -- Sebastian Dröge Wed, 12 Mar 2008 12:54:46 +0100 + +banshee (0.13.2+dfsg-5) unstable; urgency=low + + * debian/patches/02_stable-branch-r3217.patch, + debian/patches/02_stable-branch-r3418.patch: + + And another update from the stable branch fixing another bad issue + with the audioscrobbler plugin. + + -- Sebastian Dröge Tue, 11 Mar 2008 12:29:39 +0100 + +banshee (0.13.2+dfsg-4) unstable; urgency=low + + * debian/patches/02_stable-branch-r3201.patch, + debian/patches/02_stable-branch-r3417.patch: + + Another update from the stable branch, fixing the audioscrobbler plugin + even more (Closes: #469510). + + -- Sebastian Dröge Tue, 11 Mar 2008 11:36:00 +0100 + +banshee (0.13.2+dfsg-3) unstable; urgency=low + + * debian/patches/02_stable-branch-r3201.patch: + + Updated to r3201 from the stable branch: + - Fixes audioscrobbler plugin to actually work again (Closes: #469417). + * debian/patches/99_autoreconf.patch: + + Regenerate autotools stuff for the above patch. + * debian/control: + + Build depend on autotools-dev. + + -- Sebastian Dröge Wed, 05 Mar 2008 06:05:26 +0100 + +banshee (0.13.2+dfsg-2) unstable; urgency=low + + * debian/control: + + Build depend on mono-mcs to fix FTBFS. + + -- Sebastian Dröge Wed, 09 Jan 2008 08:06:38 +0100 + +banshee (0.13.2+dfsg-1) unstable; urgency=low + + * New upstream release, notable changes since 0.13.1: + + Support for new iPod Nano and Classic models. + + New Last.fm radio plugin supporting streaming from Last.fm and + creating stations based on a number of metrics. + + Skip song button in the notification popup. + + Many, many bugfixes. + * debian/patches/01_monodoc-installation.patch: + + Updated to move the Banshee documentation to "Various" instead of + "classlib-banshee" which does not exist. + + -- Sebastian Dröge Wed, 09 Jan 2008 05:47:46 +0100 + +banshee (0.13.1+svn.r2920+dfsg-2) unstable; urgency=low + + * debian/control: + + Enable documentation package. + + -- Sebastian Dröge Sun, 23 Dec 2007 05:49:30 +0100 + +banshee (0.13.1+svn.r2920+dfsg-1) unstable; urgency=low + + * New upstream SVN snapshot: + + Fixes stops playing after empty CD is inserted (Closes: #450773). + + Fixes FTBFS if built twice in a row (Closes: #442502). + * debian/patches/01_gst-inspect.patch, + debian/patches/02_pkgconfig.patch, + debian/patches/04_external-taglib-sharp.patch, + debian/patches/05_remote_radio_uri.patch, + debian/patches/06_translations-2007-09-20.patch, + debian/patches/07_taglib-sharp_filtering.patch, + debian/patches/08_ipod-sharp-0.6.4.patch, + debian/patches/09_search-by-crash.patch, + debian/patches/99_autoreconf.patch: + + Dropped, merged upstream. + * debian/patches/99_ltmain_as-needed.patch, + debian/rules: + + Drop some unnecessary dependencies by using --as-needed. + + Clean up configure flags. + * debian/control: + + Build depend on libnjb-cil (>= 0.3.0-2) for fewer dependencies. + + Update Standards-Version to 3.7.3. + + Update build dependencies. + + Add support for Rio Karma music players. + * debian/control, + debian/banshee-daap.install: + + Drop banshee-daap package and ship the plugin with banshee instead. It + won't depend on avahi-daemon but instead just recommend it. + * debian/monodoc-banshee-manual*, + debian/control, + debian/patches/01_monodoc-installation.patch: + + Add documentation package, not enabled yet but will be with -2. + * debian/Banshee.Plugins.Radio.dll.config: + + Not needed anymore, dropped. + * debian/rules: + + Add --disable-gstreamer-plugins-check to configure parameters to have + some less build dependencies. + * debian/banshee.menu: + + Fix menu file section. + + -- Sebastian Dröge Mon, 03 Dec 2007 10:50:46 +0100 + +banshee (0.13.1+dfsg-5) unstable; urgency=low + + * debian/control: + + Only recommend gnome-volume-manager and hal to make it possible to + build banshee plugin packages on the buildds. Also banshee works without + them with basic features, thus this should be recommends anyway. + * debian/patches/09_search-by-crash.patch: + + Don't crash when searching by artist/album/genre if that field is empty. + Patch from http://bugzilla.gnome.org/show_bug.cgi?id=479237 + (Closes: #443555). + + -- Sebastian Dröge Tue, 25 Sep 2007 19:09:30 +0200 + +banshee (0.13.1+dfsg-4) unstable; urgency=low + + * debian/patches/06_translations-2007-09-20.patch: + + Update all translations from SVN again. + * debian/patches/07_taglib-sharp_filtering.patch: + + Filter files that don't contain audio-only with taglib-sharp instead of + filtering by mimetype. This fixes the importing of some MP4 files. + Patch from upstream SVN. + * debian/control: + + Build depend on ipod-sharp 0.6.4 to get the new version. + + Drop nowadays useless libtotem-plparser-dev build dependency. + * debian/patches/08_ipod-sharp-0.6.4.patch: + + Fix build with ipod-sharp 0.6.4. + + -- Sebastian Dröge Thu, 20 Sep 2007 18:05:03 +0200 + +banshee (0.13.1+dfsg-3) unstable; urgency=low + + * debian/patches/06_translations-2007-09-06.patch: + + Update all translations from SVN. + + -- Sebastian Dröge Thu, 06 Sep 2007 21:39:35 +0200 + +banshee (0.13.1+dfsg-2) unstable; urgency=low + + * debian/patches/05_remote_radio_uri.patch: + + Allow configuration of URI for updating stations of radio plugin. + Patch by Mário Meyer , also applied upstream. + (Closes: #440119) + * debian/rules: + + Use dh_clifixperms to fix permissions instead of manual find magic. + + -- Sebastian Dröge Fri, 31 Aug 2007 10:47:29 +0200 + +banshee (0.13.1+dfsg-1) unstable; urgency=low + + * New upstream release. + * debian/patches/05_home.patch: + + Dropped, merged upstream. + + -- Sebastian Dröge Mon, 20 Aug 2007 06:57:27 +0200 + +banshee (0.13.0+dfsg-2) unstable; urgency=low + + * debian/patches/05_home.patch: + + Support the changes to the xdg-user-dirs spec that allow $HOME + to start the path; also allows for quotes surrounding the path. + Patch from upstream SVN. + + -- Sebastian Dröge Sat, 18 Aug 2007 09:24:50 +0200 + +banshee (0.13.0+dfsg-1) unstable; urgency=low + + * New upstream release + * debian/banshee.install: + + Add the new bookmarks plugin. + * debian/patches/05_wavpack-profile.patch, + debian/patches/10_branch-0.12.x-2007-06-14.patch: + + Dropped, merged upstream. + * debian/patches/01_gst-inspect.patch, + debian/patches/03_fix_2.18_multimedia_keys.patch, + debian/patches/04_external-taglib-sharp.patch, + debian/patches/99_autoreconf.patch: + + Updated for new upstream version. + * debian/rules, + debian/generic-artist.png.uue: + + Dropped manual installation of that icon, it's upstream now. + + -- Sebastian Dröge Tue, 14 Aug 2007 20:18:24 +0200 + +banshee (0.12.1+dfsg-5) unstable; urgency=low + + * debian/control: + + Let banshee depend on gnome-volume-manager and hal as those dependencies + were dropped to recommends in libipoddevice0 and banshee needs them. + + -- Sebastian Dröge Sat, 21 Jul 2007 11:32:43 +0200 + +banshee (0.12.1+dfsg-4) unstable; urgency=low + + * debian/rules, + debian/generic-artist.png.uue, + debian/patches/10_branch-0.12.x-2007-06-14.patch: + + Update to the 0.12.x branch, 2007-06-14 for some bugfixes. Use + uuencode/uudecode for the new image. + * debian/patches/04_external-taglib-sharp.patch, + debian/patches/02_pkgconfig.patch, + debian/control, + debian/rules: + + Use external taglib-sharp. + * debian/patches/04_dont_append_commas_on_broken_id3v2.patch: + + Dropped, this is in the external taglib-sharp. + * debian/patches/01_gst-inspect.patch, + debian/patches/03_fix_2.18_multimedia_keys.patch: + + Change automake/conf sources instead of generated files. + * debian/patches/99_autoreconf.patch: + + Regenerate automake/conf files for the above changes. + * debian/control: + + Fix C/R/P for banshee-official-plugins to let dpkg really do the + replacement (Closes: #425022). + * debian/patches/05_wavpack-profile.patch, + debian/control: + + Update Wavpack profile to work with gst-plugins-good >= 0.10.6. + + -- Sebastian Dröge Mon, 09 Jul 2007 19:53:43 +0200 + +banshee (0.12.1+dfsg-3) unstable; urgency=low + + * Add patches from the Ubuntu package by Christopher James Halse Rogers: + + debian/patches/03_fix_2.18_multimedia_keys.patch: + - Support the new multimedia keys interface with Gnome 2.18. + + debian/patches/04_dont_append_commas_on_broken_id3v2: + - Don't append commas to broken id3v2 tags. + * debian/control: + + Make the package binNMU safe. + + -- Sebastian Dröge Wed, 25 Apr 2007 16:42:55 +0200 + +banshee (0.12.1+dfsg-2) unstable; urgency=low + + * Upload to unstable + * debian/patches/02_pkgconfig.patch: + + Fix paths for ndesk-dbus in the pkgconfig file + + -- Sebastian Dröge Mon, 9 Apr 2007 10:25:08 +0200 + +banshee (0.12.1+dfsg-1) experimental; urgency=low + + * New upstream release + * debian/control: + + Update build dependencies + + -- Sebastian Dröge Sun, 1 Apr 2007 15:51:22 +0200 + +banshee (0.12.0+dfsg-2) experimental; urgency=low + + * debian/control, + debian/rules: + + Link against external ndesk-dbus + + -- Sebastian Dröge Mon, 12 Mar 2007 17:40:00 +0100 + +banshee (0.12.0+dfsg-1) experimental; urgency=low + + * New upstream release + + -- Sebastian Dröge Mon, 5 Mar 2007 20:06:23 +0100 + +banshee (0.11.7+dfsg-1) experimental; urgency=low + + * New upstream release + * debian/patches/01_gst-inspect.patch: + + Updated + + -- Sebastian Dröge Tue, 20 Feb 2007 10:47:41 +0100 + +banshee (0.11.6+dfsg-1) experimental; urgency=low + + * New upstream release + * debian/control: + + Correctly version the banshee-official-plugins conflicts + + -- Sebastian Dröge Mon, 5 Feb 2007 08:50:52 +0100 + +banshee (0.11.5+dfsg-1) experimental; urgency=low + + * New upstream release + * debian/patches/02_no-gconfd.patch: + + Dropped, merged upstream + * debian/rules: + + GConf workaround not necessary anymore + + -- Sebastian Dröge Mon, 22 Jan 2007 12:02:35 +0100 + +banshee (0.11.4+dfsg-1) experimental; urgency=low + + * New upstream release + * debian/control: + + Add conflicts/replaces on banshee-official-plugins (<< 0.10.4) as + this now contains all plugins that were in banshee-official-plugins + before and has conflicting gconf schemas + + Build depend on libtotem-plparser-dev + + Recommend gstreamer0.10-plugins-bad + * debian/banshee.install, + debian/banshee-daap.install: + + Add new plugins, change for new filenames + * debian/Banshee.Plugins.Radio.dll.config, + debian/banshee.install: + + Add missing dllmap + * debian/patches/02_no-gconfd.patch, + debian/rules: + + Don't require a running gconfd-2 + + -- Sebastian Dröge Mon, 15 Jan 2007 13:58:24 +0100 + +banshee (0.11.3+dfsg-2) unstable; urgency=low + + * debian/patches/01_gst-inspect.patch: + + Don't check for random GStreamer elements. This is not necessary as we + depend on the relevant packages anyway and some buildds fail the checks + although everything is there. (Closes: #406116) + + -- Sebastian Dröge Mon, 8 Jan 2007 22:58:47 +0100 + +banshee (0.11.3+dfsg-1) unstable; urgency=low + + * New upstream release (Closes: #403410): + + Fixes keyboard focus problems (Closes: #405202) + + Fixes detection of some iPod models (Closes: #403617) + * debian/control: + + Update to use my debian.org mail address + + -- Sebastian Dröge Mon, 8 Jan 2007 00:37:47 +0100 + +banshee (0.11.2+dfsg-1) unstable; urgency=low + + * New upstream release (Closes: #394059): + + Fixes FTBFS with newer mono releases (Closes: #397940) + + Don't segfault on disposing Avahi.Client object (Closes: #388548) + + Can't import files with acents in the filename (Closes: #379206) + + Can't connect to iTunes 7 daap shared (Closes: #391386) + + Crashes when trying to open Audioscrobbler group (Closes: #392100) + + Show GUI message for unplayable files (Closes: #354597) + + Allow downloading of file from daap shares (Closes: #362548) + * debian/control: + + Update build-depends + + Suggest banshee-official-plugins + * debian/patches/* + + Dropped, merged upstream + * debian/copyright: + + Updated + * debian/banshee.install: + + Update path for the audioscrobbler plugin + * debian/rules: + + Disable mtp support for now until libgphoto-sharp is released + + Remove banshee-import utility as it is not meant to be shipped + + -- Sebastian Dröge Mon, 13 Nov 2006 12:09:38 +0100 + +banshee (0.10.12-2) unstable; urgency=low + + * Rebuild against dbus 0.90 (Closes: #387313, #387482) + * debian/patches/02_dbus0.9.diff: + + Fix dbus soname for dbus >= 0.90 + * debian/control: + + Raise libdbus-1-dev and libdbus-1-cil build-dependency for the above + change as it won't work with the older dbus + + -- Sebastian Dröge Thu, 24 Aug 2006 20:02:52 +0200 + +banshee (0.10.12-1) unstable; urgency=low + + * New upstream release + * debian/patches/02_notification-area-transparency.diff, + debian/patches/05_cover-popup-scaling.diff: + + Dropped, merged upstream + * debian/control, + debian/rules: + + Enable the njb plugin again as I got reports that it really works + + -- Sebastian Dröge Wed, 23 Aug 2006 23:54:49 +0200 + +banshee (0.10.11-1) unstable; urgency=low + + * New upstream release + + -- Sebastian Dröge Tue, 1 Aug 2006 07:54:34 +0200 + +banshee (0.10.10-3) unstable; urgency=low + + * Remove libmono-cairo1.0-cil from Build-Depends again. The FTBFS was only + caused by an too old gtk-sharp2 on powerpc and ia64 + * Move gstreamer0.10-plugins-ugly from Depends to Recommends as it is not a + hard dependency but only useful to have + * debian/patches/04_total-play-time.diff: + + Incorporate patch from John Wright to fix the display of the total play + time if in search mode (Closes: #370202) + * debian/banshee.menu, + debian/banshee.xpm: + + Install a menu file and a xpm icon, generated from upstream's png + (Closes: #360062) + * debian/patches/03_cvs-backports.diff: + Some additional CVS backports from the stable branch: + - deadlock when burning CDs on SMP machines + - slightly optimized playlist handling and column sorting + - fix small usuability bug. When changing to a source that has less + elements than the current position in the former source was don't show + an empty source that would be shown correctly after scrolling. + - Add id3v2mux to the list of MP3 tag muxers if none was specified + - before burning calculate the total duration of the selection and + ensure the media is large enough to hold it. + * debian/patches/05_cover-popup-scaling.diff: + + Scale the cover popup if width or height are greater then 75% of the + available screen size. Otherwise it might fill your complete screen and + you have to kill banshee. + + -- Sebastian Dröge Wed, 7 Jun 2006 18:46:40 +0200 + +banshee (0.10.10-2) unstable; urgency=low + + * Add libmono-cairo1.0-cil to Build-Depends to fix FTBFS on powerpc + + -- Sebastian Dröge Fri, 12 May 2006 13:36:56 +0200 + +banshee (0.10.10-1) unstable; urgency=low + + * New upstream release (Closes: #358780) + * debian/patches/01_typefinding.diff: + + Updated + * debian/patches/02_notification-area-transparency.diff: + + Make the background of the notification area icon transparent + * debian/patches/03_cvs-backports.diff: + A bunch of backports from CVS: + - Make 'return' the default action key for dialogs + - Add Path.DirectorySeparatorChar to 'StartsWith' check + to determine if files should be copied, otherwise + 'Music to import' will be treated as 'Music' + - properly load files in shallow directories from command line + - ctrl+w hides banshee to the tray + - Show empty strings instead of 0 for TrackNumber == 0 + - Don't show 0 KB/Sec for tracks + - Use String.Replace() instead of Regex.Replace() as this is much faster + * Update Standards-Version to 3.7.2 + * Build-Depend on cli-common-dev (>= 0.4.0) + * Build-Depend on libipod-cil (>= 0.5.16) + * Build-Depend on mono-gmcs + * Disable building of the NJB plugin as it doesn't work at all for us + * Call dh_clideps with -d to prevent duplicated Depends + + -- Sebastian Dröge Fri, 12 May 2006 12:15:55 +0200 + +banshee (0.10.9-1) unstable; urgency=low + + * New upstream release + + Xing MP3 encoder removed upstream, thus we use an unmodified tarball now + * Add avahi-daemon to the Depends of banshee-daap + * Add gstreamer0.10-gnomevfs to the Depends of banshee + * Removed libsqlite3-0 and libmono0 from banshee's Depends as those are + finally added where they belong to (libmono-sqlite1.0-cil and mono-jit) + * Change Build-Depends: + + libavahi-cil -> libavahi1.0-cil: library transition to conform with the + latest version of the CLI policy + + libdbus* (>= 0.61-3) -> libdbus* (>= 0.60): the broken 0.61-{1,2} + disappeared from the pool and only >= 0.60 is required. + + Added libmono-sqlite1.0-cil: was in mono-classlib-1.0 before + + Added gstreamer0.10-plugins-base-apps, gstreamer0.10-plugins-base, + gstreamer0.10-gnomevfs, gstreamer0.10-plugins-good + + *gstreamer* (>= 0.9.7) -> *gstreamer* (>= 0.10.3): Tighten Build-Depends + as required by configure + * Updated debian/copyright + * 01_notification-area-icon-plugin-schema.diff: + + Dropped, applied upstream + * 01_typefinding.diff: + + Re-enable typefinding with gst0.10 and fix the bug that was the cause + for it beeing disabled. + + -- Sebastian Dröge Mon, 20 Mar 2006 17:42:17 +0100 + +banshee (0.10.8+dfsg-1) unstable; urgency=low + + * New upstream release + * Append dfsg to the version to reflect the changed tarball (removed Xing + MP3 encoder) + * Package the new Notification Area Icon plugin that was splitted from + the core into a independent plugin + * 01_notification-area-icon-plugin-schema.diff: + + Fix the GConf keys that were forgotten at the last-minute rename from + TrayIcon to NotificationAreaIcon + + -- Sebastian Dröge Mon, 13 Mar 2006 14:23:44 +0100 + +banshee (0.10.7-1) unstable; urgency=low + + * New upstream release (Closes: #354914) + * Use gstreamer0.10 + + -- Sebastian Dröge Mon, 6 Mar 2006 12:00:40 +0100 + +banshee (0.10.6-3) unstable; urgency=low + + * Another rebuild for libdbus-1-cil + + -- Sebastian Dröge Wed, 1 Mar 2006 19:53:39 +0100 + +banshee (0.10.6-2) unstable; urgency=low + + * Rebuild against dbus 0.61 (Closes: #354858) + * Fix spelling in banshee and banshee-daap description (Closes: #354703) + + -- Sebastian Dröge Wed, 1 Mar 2006 17:28:30 +0100 + +banshee (0.10.6-1) unstable; urgency=low + + * New upstream release + * 06_fix-Encoding-ASCII-null-termination.diff, + 07_fix-daap-segfault.diff, + 08_notification-area-icon-64bit.diff: + - Dropped, included upstream + * Tighten Build-Depend: + + libipod-cil (>= 0.5.15) + + mono-mcs and libmono-dev (>= 1.1.10) + + libsqlite3-dev (>= 3.2) + + libgtk2-dev (>= 2.8) + * Suggest banshee-daap + + -- Sebastian Dröge Mon, 13 Feb 2006 11:03:30 +0100 + +banshee (0.10.5-1) unstable; urgency=low + + * New upstream release (Closes: #349117) + * Move DAAP plugin to a separate package (banshee-daap) as this plugin + causes many crashes when enabled and pulls in additional dependencies + * debian/compat: + + Updated to 5 + * debian/control: + + Tighten Build-Depends on Gtk# to 2.8 + + Remove unneeded Build-Depends on libbonobo2-dev + + Build-Depend on debhelper (>= 5) + * 01_fix-dllmaps.diff: + - Dropped, fixed upstream + * 02_dbus0.6.diff: + - Dropped, fixed upstream + * 05_ipod-sharp.dll.config.diff: + + Updated + * 06_fix-Encoding-ASCII-null-termination.diff: + + NUL terminate the process name as ASIIEncoding does not do this + * 07_fix-daap-segfault.diff: + + Fix a segfault at startup with the DAAP plugin + * 08_notification-area-icon-64bit.diff: + + Fix the Notification Area Icon on 64 bit architectures (which seems to + fix playback on this architectures too) + + -- Sebastian Dröge Tue, 7 Feb 2006 11:00:55 +0100 + +banshee (0.10.4-1) unstable; urgency=low + + * New upstream release + * Upload to unstable + * Enable DAAP support + * Update Build-Depends + + -- Sebastian Dröge Tue, 17 Jan 2006 21:46:47 +0100 + +banshee (0.10.2-1) experimental; urgency=low + + * New upstream release + * NJB support is enabled now + * 02_dbus0.6.diff: + + Use correct, new soname for dbus 0.60 + * 03_njb-sharp.dll.config.diff, 04_MusicBrainz.dll.config.diff, + 05_ipod-sharp.dll.config.diff: + + Use correct sonames + * 02_fix-AudioCdCore.diff: + - Dropped, included upstream + + -- Sebastian Dröge Fri, 30 Dec 2005 16:49:38 +0100 + +banshee (0.10-1) experimental; urgency=low + + * Initial Version (Closes: #296467) + * Repackaged upstream tarball to get rid fo XING MP3 encoder sources + * 02_fix-AudioCdCore.diff: + + Fix banshee to correctly notice newly inserted audio CDs + + -- Sebastian Dröge Wed, 7 Dec 2005 21:05:50 +0100 + --- banshee-1.6.1.orig/debian/Banshee.GStreamer.dll.config +++ banshee-1.6.1/debian/Banshee.GStreamer.dll.config @@ -0,0 +1,3 @@ + + + --- banshee-1.6.1.orig/debian/README.source +++ banshee-1.6.1/debian/README.source @@ -0,0 +1,57 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +To configure quilt to use debian/patches instead of patches, you want +either to export QUILT_PATCHES=debian/patches in your environment +or use this snippet in your ~/.quiltrc: + + for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do + if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then + export QUILT_PATCHES=debian/patches + fi + done + +To get the fully patched source after unpacking the source package, cd to +the root level of the source package and run: + + quilt push -a + +The last patch listed in debian/patches/series will become the current +patch. + +To add a new set of changes, first run quilt push -a, and then run: + + quilt new + +where is a descriptive name for the patch, used as the filename in +debian/patches. Then, for every file that will be modified by this patch, +run: + + quilt add + +before editing those files. You must tell quilt with quilt add what files +will be part of the patch before making changes or quilt will not work +properly. After editing the files, run: + + quilt refresh + +to save the results as a patch. + +Alternately, if you already have an external patch and you just want to +add it to the build system, run quilt push -a and then: + + quilt import -P /path/to/patch + quilt push -a + +(add -p 0 to quilt import if needed). as above is the filename to +use in debian/patches. The last quilt push -a will apply the patch to +make sure it works properly. + +To remove an existing patch from the list of patches that will be applied, +run: + + quilt delete + +You may need to run quilt pop -a to unapply patches first before running +this command. --- banshee-1.6.1.orig/debian/patches/99_ltmain_as-needed.patch +++ banshee-1.6.1/debian/patches/99_ltmain_as-needed.patch @@ -0,0 +1,32 @@ +Index: banshee.git/ltmain.sh +=================================================================== +--- banshee.git.orig/ltmain.sh 2009-10-10 21:39:53.010006818 +0100 ++++ banshee.git/ltmain.sh 2009-10-10 21:42:14.070008172 +0100 +@@ -4716,6 +4716,11 @@ + arg=$func_stripname_result + ;; + ++ -Wl,--as-needed) ++ deplibs="$deplibs $arg" ++ continue ++ ;; ++ + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result +@@ -5070,6 +5075,15 @@ + lib= + found=no + case $deplib in ++ -Wl,--as-needed) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ fi ++ continue ++ ;; + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" --- banshee-1.6.1.orig/debian/patches/series +++ banshee-1.6.1/debian/patches/series @@ -0,0 +1,2 @@ +02_bundle-inotifywatcher.patch +99_ltmain_as-needed.patch --- banshee-1.6.1.orig/debian/patches/02_bundle-inotifywatcher.patch +++ banshee-1.6.1/debian/patches/02_bundle-inotifywatcher.patch @@ -0,0 +1,1752 @@ +From e41b4373a8e7233d9f41e3fdb915303c2da55b86 Mon Sep 17 00:00:00 2001 +From: Chow Loong Jin +Date: Fri, 29 Jan 2010 00:04:29 +0800 +Subject: [PATCH] Revert "Remove patched InotifyWatcher" + +This reverts commit 2c8444969558d28c64a762a4f7d02e93a6943828. + +Conflicts: + + data/addin-xml-strings.cs +--- + configure.ac | 2 +- + .../FileSystemWatcherProxy.cs | 146 +++++ + .../Banshee.LibraryWatcher/IO/FileAction.cs | 39 ++ + .../Banshee.LibraryWatcher/IO/FileSystemWatcher.cs | 541 +++++++++++++++++ + .../Banshee.LibraryWatcher/IO/IFileWatcher.cs | 37 ++ + .../Banshee.LibraryWatcher/IO/InotifyWatcher.cs | 624 ++++++++++++++++++++ + .../Banshee.LibraryWatcher/IO/SearchPattern.cs | 225 +++++++ + .../Banshee.LibraryWatcher/SourceWatcher.cs | 4 +- + src/Extensions/Banshee.LibraryWatcher/Makefile.am | 6 + + 9 files changed, 1621 insertions(+), 3 deletions(-) + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/FileSystemWatcherProxy.cs + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileAction.cs + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileSystemWatcher.cs + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/IFileWatcher.cs + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/InotifyWatcher.cs + create mode 100644 src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/SearchPattern.cs + +Index: banshee/configure.ac +=================================================================== +--- banshee.orig/configure.ac 2010-05-27 19:01:30.540432415 +0800 ++++ banshee/configure.ac 2010-05-27 19:01:32.230430193 +0800 +@@ -77,7 +77,7 @@ + + dnl Check for mono >= 2.4.3 for LibraryWatcher extension, with fix for bnc#322330 + PKG_CHECK_MODULES(MONO_2_4_3, mono >= 2.4.3, HAVE_MONO_2_4_3=yes, HAVE_MONO_2_4_3=no) +-AM_CONDITIONAL(ENABLE_LIBRARY_WATCHER, test "x$HAVE_MONO_2_4_3" = "xyes") ++AM_CONDITIONAL(ENABLE_LIBRARY_WATCHER, true) + + dnl Check for GNOME >= 2.28 to see if we should remove + dnl 'Media Player' from the app Name, bgo#596242, except +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/FileSystemWatcherProxy.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/FileSystemWatcherProxy.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,146 @@ ++// ++// FileSystemWatcherProxy.cs ++// ++// Authors: ++// Alexander Kojevnikov ++// ++// Copyright (C) 2009 Alexander Kojevnikov ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++using System; ++ ++namespace Banshee.LibraryWatcher ++{ ++ public class FileSystemWatcherProxy : IDisposable ++ { ++ private readonly Banshee.LibraryWatcher.IO.FileSystemWatcher watcher_fixed; ++ private readonly System.IO.FileSystemWatcher watcher; ++ ++ public FileSystemWatcherProxy(string path) ++ { ++ // FIXME: There must be a better way to check if we are running under Linux. ++ if (Environment.OSVersion.Platform == PlatformID.Unix && ++ Environment.OSVersion.Version.ToString ().StartsWith ("2.6.")) { ++ watcher_fixed = new Banshee.LibraryWatcher.IO.FileSystemWatcher (path); ++ } else { ++ watcher = new System.IO.FileSystemWatcher (path); ++ } ++ } ++ ++ public void Dispose () ++ { ++ if (watcher_fixed != null) { ++ watcher_fixed.Dispose (); ++ } else { ++ watcher.Dispose (); ++ } ++ } ++ ++ public bool IncludeSubdirectories { ++ set { ++ if (watcher_fixed != null) { ++ watcher_fixed.IncludeSubdirectories = value; ++ } else { ++ watcher.IncludeSubdirectories = value; ++ } ++ } ++ } ++ ++ public event System.IO.FileSystemEventHandler Changed { ++ add { ++ if (watcher_fixed != null) { ++ watcher_fixed.Changed += value; ++ } else { ++ watcher.Changed += value; ++ } ++ } ++ remove { ++ if (watcher_fixed != null) { ++ watcher_fixed.Changed -= value; ++ } else { ++ watcher.Changed -= value; ++ } ++ } ++ } ++ ++ public event System.IO.FileSystemEventHandler Created { ++ add { ++ if (watcher_fixed != null) { ++ watcher_fixed.Created += value; ++ } else { ++ watcher.Created += value; ++ } ++ } ++ remove { ++ if (watcher_fixed != null) { ++ watcher_fixed.Created -= value; ++ } else { ++ watcher.Created -= value; ++ } ++ } ++ } ++ ++ public event System.IO.FileSystemEventHandler Deleted { ++ add { ++ if (watcher_fixed != null) { ++ watcher_fixed.Deleted += value; ++ } else { ++ watcher.Deleted += value; ++ } ++ } ++ remove { ++ if (watcher_fixed != null) { ++ watcher_fixed.Deleted -= value; ++ } else { ++ watcher.Deleted -= value; ++ } ++ } ++ } ++ ++ public event System.IO.RenamedEventHandler Renamed { ++ add { ++ if (watcher_fixed != null) { ++ watcher_fixed.Renamed += value; ++ } else { ++ watcher.Renamed += value; ++ } ++ } ++ remove { ++ if (watcher_fixed != null) { ++ watcher_fixed.Renamed -= value; ++ } else { ++ watcher.Renamed -= value; ++ } ++ } ++ } ++ ++ public bool EnableRaisingEvents { ++ set { ++ if (watcher_fixed != null) { ++ watcher_fixed.EnableRaisingEvents = value; ++ } else { ++ watcher.EnableRaisingEvents = value; ++ } ++ } ++ } ++ } ++} +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileAction.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileAction.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,39 @@ ++// ++// System.IO.FileAction.cs ++// ++// Authors: ++// Gonzalo Paniagua Javier (gonzalo@ximian.com) ++// ++// (c) 2004 Novell, Inc. (http://www.novell.com) ++// ++ ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++namespace Banshee.LibraryWatcher.IO { ++ enum FileAction { ++ Added = 1, ++ Removed = 2, ++ Modified = 3, ++ RenamedOldName = 4, ++ RenamedNewName = 5 ++ } ++} +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileSystemWatcher.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/FileSystemWatcher.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,541 @@ ++// ++// System.IO.FileSystemWatcher.cs ++// ++// Authors: ++// Tim Coleman (tim@timcoleman.com) ++// Gonzalo Paniagua Javier (gonzalo@ximian.com) ++// ++// Copyright (C) Tim Coleman, 2002 ++// (c) 2003 Ximian, Inc. (http://www.ximian.com) ++// Copyright (C) 2004, 2006 Novell, Inc (http://www.novell.com) ++// ++ ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++using System; ++using System.IO; ++using System.ComponentModel; ++using System.Diagnostics; ++using System.Runtime.CompilerServices; ++using System.Runtime.InteropServices; ++using System.Security.Permissions; ++using System.Threading; ++ ++namespace Banshee.LibraryWatcher.IO { ++ [DefaultEvent("Changed")] ++#if NET_2_0 ++ [IODescription ("")] ++#endif ++ public class FileSystemWatcher : Component, ISupportInitialize { ++ ++ #region Fields ++ ++ bool enableRaisingEvents; ++ string filter; ++ bool includeSubdirectories; ++ int internalBufferSize; ++ NotifyFilters notifyFilter; ++ string path; ++ string fullpath; ++ ISynchronizeInvoke synchronizingObject; ++ WaitForChangedResult lastData; ++ bool waiting; ++ SearchPattern2 pattern; ++ bool disposed; ++ string mangledFilter; ++ static IFileWatcher watcher; ++ static object lockobj = new object (); ++ ++ #endregion // Fields ++ ++ #region Constructors ++ ++ public FileSystemWatcher () ++ { ++ this.notifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; ++ this.enableRaisingEvents = false; ++ this.filter = "*.*"; ++ this.includeSubdirectories = false; ++ this.internalBufferSize = 8192; ++ this.path = ""; ++ InitWatcher (); ++ } ++ ++ public FileSystemWatcher (string path) ++ : this (path, "*.*") ++ { ++ } ++ ++ public FileSystemWatcher (string path, string filter) ++ { ++ if (path == null) ++ throw new ArgumentNullException ("path"); ++ ++ if (filter == null) ++ throw new ArgumentNullException ("filter"); ++ ++ if (path == String.Empty) ++ throw new ArgumentException ("Empty path", "path"); ++ ++ if (!Directory.Exists (path)) ++ throw new ArgumentException ("Directory does not exists", "path"); ++ ++ this.enableRaisingEvents = false; ++ this.filter = filter; ++ this.includeSubdirectories = false; ++ this.internalBufferSize = 8192; ++ this.notifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; ++ this.path = path; ++ this.synchronizingObject = null; ++ InitWatcher (); ++ } ++ ++ [EnvironmentPermission (SecurityAction.Assert, Read="MONO_MANAGED_WATCHER")] ++ void InitWatcher () ++ { ++ lock (lockobj) { ++ if (watcher != null) ++ return; ++ ++ /*string managed = Environment.GetEnvironmentVariable ("MONO_MANAGED_WATCHER"); ++ int mode = 0; ++ if (managed == null) ++ mode = InternalSupportsFSW (); ++ ++ bool ok = false; ++ switch (mode) { ++ case 1: // windows ++ ok = DefaultWatcher.GetInstance (out watcher); ++ //ok = WindowsWatcher.GetInstance (out watcher); ++ break; ++ case 2: // libfam ++ ok = FAMWatcher.GetInstance (out watcher, false); ++ break; ++ case 3: // kevent ++ ok = KeventWatcher.GetInstance (out watcher); ++ break; ++ case 4: // libgamin ++ ok = FAMWatcher.GetInstance (out watcher, true); ++ break; ++ case 5: // inotify ++ ok = InotifyWatcher.GetInstance (out watcher, true); ++ break; ++ } ++ ++ if (mode == 0 || !ok) { ++ if (String.Compare (managed, "disabled", true) == 0) ++ NullFileWatcher.GetInstance (out watcher); ++ else ++ DefaultWatcher.GetInstance (out watcher); ++ }*/ ++ InotifyWatcher.GetInstance (out watcher, true); ++ ++ ShowWatcherInfo (); ++ } ++ } ++ ++ [Conditional ("DEBUG"), Conditional ("TRACE")] ++ void ShowWatcherInfo () ++ { ++ Console.WriteLine ("Watcher implementation: {0}", watcher != null ? watcher.GetType ().ToString () : ""); ++ } ++ ++ #endregion // Constructors ++ ++ #region Properties ++ ++ /* If this is enabled, we Pulse this instance */ ++ internal bool Waiting { ++ get { return waiting; } ++ set { waiting = value; } ++ } ++ ++ internal string MangledFilter { ++ get { ++ if (filter != "*.*") ++ return filter; ++ ++ if (mangledFilter != null) ++ return mangledFilter; ++ ++ string filterLocal = "*.*"; ++ //if (!(watcher.GetType () == typeof (WindowsWatcher))) ++ filterLocal = "*"; ++ ++ return filterLocal; ++ } ++ } ++ ++ internal SearchPattern2 Pattern { ++ get { ++ if (pattern == null) { ++ pattern = new SearchPattern2 (MangledFilter); ++ } ++ return pattern; ++ } ++ } ++ ++ internal string FullPath { ++ get { ++ if (fullpath == null) { ++ if (path == null || path == "") ++ fullpath = Environment.CurrentDirectory; ++ else ++ fullpath = System.IO.Path.GetFullPath (path); ++ } ++ ++ return fullpath; ++ } ++ } ++ ++ [DefaultValue(false)] ++ [IODescription("Flag to indicate if this instance is active")] ++ public bool EnableRaisingEvents { ++ get { return enableRaisingEvents; } ++ set { ++ if (value == enableRaisingEvents) ++ return; // Do nothing ++ ++ enableRaisingEvents = value; ++ if (value) { ++ Start (); ++ } else { ++ Stop (); ++ } ++ } ++ } ++ ++ [DefaultValue("*.*")] ++ [IODescription("File name filter pattern")] ++ //[RecommendedAsConfigurable(true)] ++ //[TypeConverter ("System.Diagnostics.Design.StringValueConverter, " + Consts.AssemblySystem_Design)] ++ public string Filter { ++ get { return filter; } ++ set { ++ if (value == null || value == "") ++ value = "*.*"; ++ ++ if (filter != value) { ++ filter = value; ++ pattern = null; ++ mangledFilter = null; ++ } ++ } ++ } ++ ++ [DefaultValue(false)] ++ [IODescription("Flag to indicate we want to watch subdirectories")] ++ public bool IncludeSubdirectories { ++ get { return includeSubdirectories; } ++ set { ++ if (includeSubdirectories == value) ++ return; ++ ++ includeSubdirectories = value; ++ if (value && enableRaisingEvents) { ++ Stop (); ++ Start (); ++ } ++ } ++ } ++ ++ [Browsable(false)] ++ [DefaultValue(8192)] ++ public int InternalBufferSize { ++ get { return internalBufferSize; } ++ set { ++ if (internalBufferSize == value) ++ return; ++ ++ if (value < 4196) ++ value = 4196; ++ ++ internalBufferSize = value; ++ if (enableRaisingEvents) { ++ Stop (); ++ Start (); ++ } ++ } ++ } ++ ++ [DefaultValue(NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastWrite)] ++ [IODescription("Flag to indicate which change event we want to monitor")] ++ public NotifyFilters NotifyFilter { ++ get { return notifyFilter; } ++ set { ++ if (notifyFilter == value) ++ return; ++ ++ notifyFilter = value; ++ if (enableRaisingEvents) { ++ Stop (); ++ Start (); ++ } ++ } ++ } ++ ++ [DefaultValue("")] ++ [IODescription("The directory to monitor")] ++ //[RecommendedAsConfigurable(true)] ++ //[TypeConverter ("System.Diagnostics.Design.StringValueConverter, " + Consts.AssemblySystem_Design)] ++ //[Editor ("System.Diagnostics.Design.FSWPathEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] ++ public string Path { ++ get { return path; } ++ set { ++ if (path == value) ++ return; ++ ++ bool exists = false; ++ Exception exc = null; ++ ++ try { ++ exists = Directory.Exists (value); ++ } catch (Exception e) { ++ exc = e; ++ } ++ ++ if (exc != null) ++ throw new ArgumentException ("Invalid directory name", "value", exc); ++ ++ if (!exists) ++ throw new ArgumentException ("Directory does not exists", "value"); ++ ++ path = value; ++ fullpath = null; ++ if (enableRaisingEvents) { ++ Stop (); ++ Start (); ++ } ++ } ++ } ++ ++ [Browsable(false)] ++ public override ISite Site { ++ get { return base.Site; } ++ set { base.Site = value; } ++ } ++ ++ [DefaultValue(null)] ++ [IODescription("The object used to marshal the event handler calls resulting from a directory change")] ++#if NET_2_0 ++ [Browsable (false)] ++#endif ++ public ISynchronizeInvoke SynchronizingObject { ++ get { return synchronizingObject; } ++ set { synchronizingObject = value; } ++ } ++ ++ #endregion // Properties ++ ++ #region Methods ++ ++ public void BeginInit () ++ { ++ // Not necessary in Mono ++ } ++ ++ protected override void Dispose (bool disposing) ++ { ++ if (!disposed) { ++ disposed = true; ++ Stop (); ++ } ++ ++ base.Dispose (disposing); ++ } ++ ++ ~FileSystemWatcher () ++ { ++ disposed = true; ++ Stop (); ++ } ++ ++ public void EndInit () ++ { ++ // Not necessary in Mono ++ } ++ ++ enum EventType { ++ FileSystemEvent, ++ ErrorEvent, ++ RenameEvent ++ } ++ private void RaiseEvent (Delegate ev, EventArgs arg, EventType evtype) ++ { ++ if (ev == null) ++ return; ++ ++ if (synchronizingObject == null) { ++ switch (evtype) { ++ case EventType.RenameEvent: ++ ((RenamedEventHandler)ev).BeginInvoke (this, (RenamedEventArgs) arg, null, null); ++ break; ++ case EventType.ErrorEvent: ++ ((ErrorEventHandler)ev).BeginInvoke (this, (ErrorEventArgs) arg, null, null); ++ break; ++ case EventType.FileSystemEvent: ++ ((FileSystemEventHandler)ev).BeginInvoke (this, (FileSystemEventArgs) arg, null, null); ++ break; ++ } ++ return; ++ } ++ ++ synchronizingObject.BeginInvoke (ev, new object [] {this, arg}); ++ } ++ ++ protected void OnChanged (FileSystemEventArgs e) ++ { ++ RaiseEvent (Changed, e, EventType.FileSystemEvent); ++ } ++ ++ protected void OnCreated (FileSystemEventArgs e) ++ { ++ RaiseEvent (Created, e, EventType.FileSystemEvent); ++ } ++ ++ protected void OnDeleted (FileSystemEventArgs e) ++ { ++ RaiseEvent (Deleted, e, EventType.FileSystemEvent); ++ } ++ ++ protected void OnError (ErrorEventArgs e) ++ { ++ RaiseEvent (Error, e, EventType.ErrorEvent); ++ } ++ ++ protected void OnRenamed (RenamedEventArgs e) ++ { ++ RaiseEvent (Renamed, e, EventType.RenameEvent); ++ } ++ ++ public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType) ++ { ++ return WaitForChanged (changeType, Timeout.Infinite); ++ } ++ ++ public WaitForChangedResult WaitForChanged (WatcherChangeTypes changeType, int timeout) ++ { ++ WaitForChangedResult result = new WaitForChangedResult (); ++ bool prevEnabled = EnableRaisingEvents; ++ if (!prevEnabled) ++ EnableRaisingEvents = true; ++ ++ bool gotData; ++ lock (this) { ++ waiting = true; ++ gotData = Monitor.Wait (this, timeout); ++ if (gotData) ++ result = this.lastData; ++ } ++ ++ EnableRaisingEvents = prevEnabled; ++ if (!gotData) ++ result.TimedOut = true; ++ ++ return result; ++ } ++ ++ internal void DispatchEvents (FileAction act, string filename, ref RenamedEventArgs renamed) ++ { ++ if (waiting) { ++ lastData = new WaitForChangedResult (); ++ } ++ ++ switch (act) { ++ case FileAction.Added: ++ lastData.Name = filename; ++ lastData.ChangeType = WatcherChangeTypes.Created; ++ OnCreated (new FileSystemEventArgs (WatcherChangeTypes.Created, path, filename)); ++ break; ++ case FileAction.Removed: ++ lastData.Name = filename; ++ lastData.ChangeType = WatcherChangeTypes.Deleted; ++ OnDeleted (new FileSystemEventArgs (WatcherChangeTypes.Deleted, path, filename)); ++ break; ++ case FileAction.Modified: ++ lastData.Name = filename; ++ lastData.ChangeType = WatcherChangeTypes.Changed; ++ OnChanged (new FileSystemEventArgs (WatcherChangeTypes.Changed, path, filename)); ++ break; ++ case FileAction.RenamedOldName: ++ if (renamed != null) { ++ OnRenamed (renamed); ++ } ++ lastData.OldName = filename; ++ lastData.ChangeType = WatcherChangeTypes.Renamed; ++ renamed = new RenamedEventArgs (WatcherChangeTypes.Renamed, path, filename, ""); ++ break; ++ case FileAction.RenamedNewName: ++ lastData.Name = filename; ++ lastData.ChangeType = WatcherChangeTypes.Renamed; ++ if (renamed == null) { ++ renamed = new RenamedEventArgs (WatcherChangeTypes.Renamed, path, "", filename); ++ } ++ OnRenamed (renamed); ++ renamed = null; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ void Start () ++ { ++ watcher.StartDispatching (this); ++ } ++ ++ void Stop () ++ { ++ watcher.StopDispatching (this); ++ } ++ #endregion // Methods ++ ++ #region Events and Delegates ++ ++ [IODescription("Occurs when a file/directory change matches the filter")] ++ public event FileSystemEventHandler Changed; ++ ++ [IODescription("Occurs when a file/directory creation matches the filter")] ++ public event FileSystemEventHandler Created; ++ ++ [IODescription("Occurs when a file/directory deletion matches the filter")] ++ public event FileSystemEventHandler Deleted; ++ ++ [Browsable(false)] ++ public event ErrorEventHandler Error; ++ ++ [IODescription("Occurs when a file/directory rename matches the filter")] ++ public event RenamedEventHandler Renamed; ++ ++ #endregion // Events and Delegates ++ ++ /* 0 -> not supported */ ++ /* 1 -> windows */ ++ /* 2 -> FAM */ ++ /* 3 -> Kevent */ ++ /* 4 -> gamin */ ++ /* 5 -> inotify */ ++ //[MethodImplAttribute(MethodImplOptions.InternalCall)] ++ //static extern int InternalSupportsFSW (); ++ } ++} ++ +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/IFileWatcher.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/IFileWatcher.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,37 @@ ++// ++// System.IO.IFileWatcher.cs ++// ++// Authors: ++// Gonzalo Paniagua Javier (gonzalo@ximian.com) ++// ++// (c) 2004 Novell, Inc. (http://www.novell.com) ++// ++ ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++namespace Banshee.LibraryWatcher.IO { ++ interface IFileWatcher { ++ void StartDispatching (FileSystemWatcher fsw); ++ void StopDispatching (FileSystemWatcher fsw); ++ } ++} ++ +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/InotifyWatcher.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/InotifyWatcher.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,624 @@ ++// ++// System.IO.Inotify.cs: interface with inotify ++// ++// Authors: ++// Gonzalo Paniagua (gonzalo@novell.com) ++// Anders Rune Jensen (anders@iola.dk) ++// ++// (c) 2006 Novell, Inc. (http://www.novell.com) ++ ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++using System; ++using System.IO; ++using System.Collections; ++using System.ComponentModel; ++using System.Runtime.CompilerServices; ++using System.Runtime.InteropServices; ++using System.Text; ++using System.Threading; ++ ++namespace Banshee.LibraryWatcher.IO { ++ ++ [Flags] ++ enum InotifyMask : uint { ++ Access = 1 << 0, ++ Modify = 1 << 1, ++ Attrib = 1 << 2, ++ CloseWrite = 1 << 3, ++ CloseNoWrite = 1 << 4, ++ Open = 1 << 5, ++ MovedFrom = 1 << 6, ++ MovedTo = 1 << 7, ++ Create = 1 << 8, ++ Delete = 1 << 9, ++ DeleteSelf = 1 << 10, ++ MoveSelf = 1 << 11, ++ BaseEvents = 0x00000fff, ++ // Can be sent at any time ++ Umount = 0x0002000, ++ Overflow = 0x0004000, ++ Ignored = 0x0008000, ++ ++ // Special flags. ++ OnlyDir = 0x01000000, ++ DontFollow = 0x02000000, ++ AddMask = 0x20000000, ++ Directory = 0x40000000, ++ OneShot = 0x80000000 ++ } ++ ++ struct InotifyEvent { // Our internal representation for the data returned by the kernel ++ public static readonly InotifyEvent Default = new InotifyEvent (); ++ public int WatchDescriptor; ++ public InotifyMask Mask; ++ public string Name; ++ ++ public override string ToString () ++ { ++ return String.Format ("[Descriptor: {0} Mask: {1} Name: {2}]", WatchDescriptor, Mask, Name); ++ } ++ } ++ ++ class ParentInotifyData ++ { ++ public bool IncludeSubdirs; ++ public bool Enabled; ++ public ArrayList children; // InotifyData ++ public InotifyData data; ++ } ++ ++ class InotifyData { ++ public FileSystemWatcher FSW; ++ public string Directory; ++ public int Watch; ++ } ++ ++ class InotifyWatcher : IFileWatcher ++ { ++ static bool failed; ++ static InotifyWatcher instance; ++ static Hashtable watches; // FSW to ParentInotifyData ++ static Hashtable requests; // FSW to InotifyData ++ static IntPtr FD; ++ static Thread thread; ++ static bool stop; ++ ++ private InotifyWatcher () ++ { ++ } ++ ++ // Locked by caller ++ public static bool GetInstance (out IFileWatcher watcher, bool gamin) ++ { ++ if (failed == true) { ++ watcher = null; ++ return false; ++ } ++ ++ if (instance != null) { ++ watcher = instance; ++ return true; ++ } ++ ++ FD = GetInotifyInstance (); ++ if ((long) FD == -1) { ++ failed = true; ++ watcher = null; ++ return false; ++ } ++ ++ watches = Hashtable.Synchronized (new Hashtable ()); ++ requests = Hashtable.Synchronized (new Hashtable ()); ++ instance = new InotifyWatcher (); ++ watcher = instance; ++ return true; ++ } ++ ++ public void StartDispatching (FileSystemWatcher fsw) ++ { ++ ParentInotifyData parent; ++ lock (this) { ++ if ((long) FD == -1) ++ FD = GetInotifyInstance (); ++ ++ if (thread == null) { ++ thread = new Thread (new ThreadStart (Monitor)); ++ thread.IsBackground = true; ++ thread.Start (); ++ } ++ ++ parent = (ParentInotifyData) watches [fsw]; ++ } ++ ++ if (parent == null) { ++ InotifyData data = new InotifyData (); ++ data.FSW = fsw; ++ data.Directory = fsw.FullPath; ++ ++ parent = new ParentInotifyData(); ++ parent.IncludeSubdirs = fsw.IncludeSubdirectories; ++ parent.Enabled = true; ++ parent.children = new ArrayList(); ++ parent.data = data; ++ ++ watches [fsw] = parent; ++ ++ try { ++ StartMonitoringDirectory (data, false); ++ lock (this) { ++ AppendRequestData (data); ++ stop = false; ++ } ++ } catch {} // ignore the directory if StartMonitoringDirectory fails. ++ } ++ } ++ ++ static void AppendRequestData (InotifyData data) ++ { ++ int wd = data.Watch; ++ ++ object obj = requests [wd]; ++ ArrayList list = null; ++ if (obj == null) { ++ requests [data.Watch] = data; ++ } else if (obj is InotifyData) { ++ list = new ArrayList (); ++ list.Add (obj); ++ list.Add (data); ++ requests [data.Watch] = list; ++ } else { ++ list = (ArrayList) obj; ++ list.Add (data); ++ } ++ } ++ ++ static bool RemoveRequestData (InotifyData data) ++ { ++ int wd = data.Watch; ++ object obj = requests [wd]; ++ if (obj == null) ++ return true; ++ ++ if (obj is InotifyData) { ++ if (obj == data) { ++ requests.Remove (wd); ++ return true; ++ } ++ return false; ++ } ++ ++ ArrayList list = (ArrayList) obj; ++ list.Remove (data); ++ if (list.Count == 0) { ++ requests.Remove (wd); ++ return true; ++ } ++ return false; ++ } ++ ++ // Attempt to match MS and linux behavior. ++ static InotifyMask GetMaskFromFilters (NotifyFilters filters) ++ { ++ InotifyMask mask = InotifyMask.Create | InotifyMask.Delete | InotifyMask.DeleteSelf | InotifyMask.AddMask; ++ if ((filters & NotifyFilters.Attributes) != 0) ++ mask |= InotifyMask.Attrib; ++ ++ if ((filters & NotifyFilters.Security) != 0) ++ mask |= InotifyMask.Attrib; ++ ++ if ((filters & NotifyFilters.Size) != 0) { ++ mask |= InotifyMask.Attrib; ++ mask |= InotifyMask.Modify; ++ } ++ ++ if ((filters & NotifyFilters.LastAccess) != 0) { ++ mask |= InotifyMask.Attrib; ++ mask |= InotifyMask.Access; ++ mask |= InotifyMask.Modify; ++ } ++ ++ if ((filters & NotifyFilters.LastWrite) != 0) { ++ mask |= InotifyMask.Attrib; ++ mask |= InotifyMask.Modify; ++ } ++ ++ if ((filters & NotifyFilters.FileName) != 0) { ++ mask |= InotifyMask.MovedFrom; ++ mask |= InotifyMask.MovedTo; ++ } ++ ++ if ((filters & NotifyFilters.DirectoryName) != 0) { ++ mask |= InotifyMask.MovedFrom; ++ mask |= InotifyMask.MovedTo; ++ } ++ ++ return mask; ++ } ++ ++ static void StartMonitoringDirectory (InotifyData data, bool justcreated) ++ { ++ InotifyMask mask = GetMaskFromFilters (data.FSW.NotifyFilter); ++ int wd = AddDirectoryWatch (FD, data.Directory, mask); ++ if (wd == -1) { ++ int error = Marshal.GetLastWin32Error (); ++ if (error == 4) { // Too many open watches ++ string nr_watches = "(unknown)"; ++ try { ++ using (StreamReader reader = new StreamReader ("/proc/sys/fs/inotify/max_user_watches")) { ++ nr_watches = reader.ReadLine (); ++ } ++ } catch {} ++ ++ string msg = String.Format ("The per-user inotify watches limit of {0} has been reached. " + ++ "If you're experiencing problems with your application, increase that limit " + ++ "in /proc/sys/fs/inotify/max_user_watches.", nr_watches); ++ ++ throw new Win32Exception (error, msg); ++ } ++ throw new Win32Exception (error); ++ } ++ ++ FileSystemWatcher fsw = data.FSW; ++ data.Watch = wd; ++ ++ ParentInotifyData parent = (ParentInotifyData) watches[fsw]; ++ ++ if (parent.IncludeSubdirs) { ++ foreach (string directory in Directory.GetDirectories (data.Directory)) { ++ InotifyData fd = new InotifyData (); ++ fd.FSW = fsw; ++ fd.Directory = directory; ++ ++ if (justcreated) { ++ lock (fsw) { ++ RenamedEventArgs renamed = null; ++ if (fsw.Pattern.IsMatch (directory)) { ++ fsw.DispatchEvents (FileAction.Added, directory, ref renamed); ++ if (fsw.Waiting) { ++ fsw.Waiting = false; ++ System.Threading.Monitor.PulseAll (fsw); ++ } ++ } ++ } ++ } ++ ++ try { ++ StartMonitoringDirectory (fd, justcreated); ++ AppendRequestData (fd); ++ parent.children.Add(fd); ++ } catch {} // ignore errors and don't add directory. ++ } ++ } ++ ++ if (justcreated) { ++ foreach (string filename in Directory.GetFiles (data.Directory)) { ++ lock (fsw) { ++ RenamedEventArgs renamed = null; ++ if (fsw.Pattern.IsMatch (filename)) { ++ fsw.DispatchEvents (FileAction.Added, filename, ref renamed); ++ /* If a file has been created, then it has been written to */ ++ fsw.DispatchEvents (FileAction.Modified, filename, ref renamed); ++ ++ if (fsw.Waiting) { ++ fsw.Waiting = false; ++ System.Threading.Monitor.PulseAll(fsw); ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ public void StopDispatching (FileSystemWatcher fsw) ++ { ++ ParentInotifyData parent; ++ lock (this) { ++ parent = (ParentInotifyData) watches [fsw]; ++ if (parent == null) ++ return; ++ ++ if (RemoveRequestData (parent.data)) { ++ StopMonitoringDirectory (parent.data); ++ } ++ watches.Remove (fsw); ++ if (watches.Count == 0) { ++ stop = true; ++ IntPtr fd = FD; ++ FD = (IntPtr) (-1); ++ Close (fd); ++ } ++ ++ if (!parent.IncludeSubdirs) ++ return; ++ ++ foreach (InotifyData idata in parent.children) ++ { ++ if (RemoveRequestData (idata)) { ++ StopMonitoringDirectory (idata); ++ } ++ } ++ } ++ } ++ ++ static void StopMonitoringDirectory (InotifyData data) ++ { ++ RemoveWatch (FD, data.Watch); ++ } ++ ++ void Monitor () ++ { ++ byte [] buffer = new byte [4096]; ++ int nread; ++ while (!stop) { ++ nread = ReadFromFD (FD, buffer, (IntPtr) buffer.Length); ++ if (nread == -1) ++ continue; ++ ++ lock (this) { ++ ProcessEvents (buffer, nread); ++ ++ } ++ } ++ ++ lock (this) { ++ thread = null; ++ stop = false; ++ } ++ } ++ /* ++ struct inotify_event { ++ __s32 wd; ++ __u32 mask; ++ __u32 cookie; ++ __u32 len; // Includes any trailing null in 'name' ++ char name[0]; ++ }; ++ */ ++ ++ static int ReadEvent (byte [] source, int off, int size, out InotifyEvent evt) ++ { ++ evt = new InotifyEvent (); ++ if (size <= 0 || off > size - 16) { ++ return -1; ++ } ++ ++ int len; ++ if (BitConverter.IsLittleEndian) { ++ evt.WatchDescriptor = source [off] + (source [off + 1] << 8) + ++ (source [off + 2] << 16) + (source [off + 3] << 24); ++ evt.Mask = (InotifyMask) (source [off + 4] + (source [off + 5] << 8) + ++ (source [off + 6] << 16) + (source [off + 7] << 24)); ++ // Ignore Cookie -> +4 ++ len = source [off + 12] + (source [off + 13] << 8) + ++ (source [off + 14] << 16) + (source [off + 15] << 24); ++ } else { ++ evt.WatchDescriptor = source [off + 3] + (source [off + 2] << 8) + ++ (source [off + 1] << 16) + (source [off] << 24); ++ evt.Mask = (InotifyMask) (source [off + 7] + (source [off + 6] << 8) + ++ (source [off + 5] << 16) + (source [off + 4] << 24)); ++ // Ignore Cookie -> +4 ++ len = source [off + 15] + (source [off + 14] << 8) + ++ (source [off + 13] << 16) + (source [off + 12] << 24); ++ } ++ ++ if (len > 0) { ++ if (off > size - 16 - len) ++ return -1; ++ string name = Encoding.UTF8.GetString (source, off + 16, len); ++ evt.Name = name.Trim ('\0'); ++ } else { ++ evt.Name = null; ++ } ++ ++ return 16 + len; ++ } ++ ++ static IEnumerable GetEnumerator (object source) ++ { ++ if (source == null) ++ yield break; ++ ++ if (source is InotifyData) ++ yield return source; ++ ++ if (source is ArrayList) { ++ ArrayList list = (ArrayList) source; ++ for (int i = 0; i < list.Count; i++) ++ yield return list [i]; ++ } ++ } ++ ++ /* Interesting events: ++ * Modify ++ * Attrib ++ * MovedFrom ++ * MovedTo ++ * Create ++ * Delete ++ * DeleteSelf ++ */ ++ static InotifyMask Interesting = InotifyMask.Modify | InotifyMask.Attrib | InotifyMask.MovedFrom | ++ InotifyMask.MovedTo | InotifyMask.Create | InotifyMask.Delete | ++ InotifyMask.DeleteSelf; ++ ++ void ProcessEvents (byte [] buffer, int length) ++ { ++ ArrayList newdirs = null; ++ InotifyEvent evt; ++ int nread = 0; ++ RenamedEventArgs renamed = null; ++ while (length > nread) { ++ int bytes_read = ReadEvent (buffer, nread, length, out evt); ++ if (bytes_read <= 0) ++ break; ++ ++ nread += bytes_read; ++ ++ InotifyMask mask = evt.Mask; ++ bool is_directory = (mask & InotifyMask.Directory) != 0; ++ mask = (mask & Interesting); // Clear out all the bits that we don't need ++ if (mask == 0) ++ continue; ++ ++ foreach (InotifyData data in GetEnumerator (requests [evt.WatchDescriptor])) { ++ ParentInotifyData parent = (ParentInotifyData) watches[data.FSW]; ++ ++ if (data == null || parent.Enabled == false) ++ continue; ++ ++ string directory = data.Directory; ++ string filename = evt.Name; ++ if (filename == null) ++ filename = directory; ++ ++ FileSystemWatcher fsw = data.FSW; ++ FileAction action = 0; ++ if ((mask & (InotifyMask.Modify | InotifyMask.Attrib)) != 0) { ++ action = FileAction.Modified; ++ } else if ((mask & InotifyMask.Create) != 0) { ++ action = FileAction.Added; ++ } else if ((mask & InotifyMask.Delete) != 0) { ++ action = FileAction.Removed; ++ } else if ((mask & InotifyMask.DeleteSelf) != 0) { ++ if (data.Watch != parent.data.Watch) { ++ // To avoid duplicate events handle DeleteSelf only for the top level directory. ++ continue; ++ } ++ action = FileAction.Removed; ++ } else if ((mask & InotifyMask.MoveSelf) != 0) { ++ //action = FileAction.Removed; ++ continue; // Ignore this one ++ } else if ((mask & InotifyMask.MovedFrom) != 0) { ++ InotifyEvent to; ++ int i = ReadEvent (buffer, nread, length, out to); ++ if (i == -1 || (to.Mask & InotifyMask.MovedTo) == 0 || evt.WatchDescriptor != to.WatchDescriptor) { ++ action = FileAction.Removed; ++ } else { ++ nread += i; ++ action = FileAction.RenamedNewName; ++ renamed = new RenamedEventArgs (WatcherChangeTypes.Renamed, data.Directory, to.Name, evt.Name); ++ if (evt.Name != data.Directory && !fsw.Pattern.IsMatch (evt.Name)) ++ filename = to.Name; ++ } ++ } else if ((mask & InotifyMask.MovedTo) != 0) { ++ action = FileAction.Added; ++ } ++ if (fsw.IncludeSubdirectories) { ++ string full = fsw.FullPath; ++ string datadir = data.Directory; ++ if (datadir != full) { ++ int len = full.Length; ++ int slash = 1; ++ if (len > 1 && full [len - 1] == Path.DirectorySeparatorChar) ++ slash = 0; ++ string reldir = datadir.Substring (full.Length + slash); ++ datadir = Path.Combine (datadir, filename); ++ filename = Path.Combine (reldir, filename); ++ } else { ++ datadir = Path.Combine (full, filename); ++ } ++ ++ if (action == FileAction.Added && is_directory) { ++ if (newdirs == null) ++ newdirs = new ArrayList (2); ++ ++ InotifyData fd = new InotifyData (); ++ fd.FSW = fsw; ++ fd.Directory = datadir; ++ newdirs.Add (fd); ++ } ++ ++ if (action == FileAction.RenamedNewName && is_directory) { ++ foreach (InotifyData child in parent.children) { ++ if (child.Directory.StartsWith (renamed.OldFullPath)) { ++ child.Directory = renamed.FullPath + ++ child.Directory.Substring (renamed.OldFullPath.Length); ++ } ++ } ++ } ++ } ++ ++ if (action == FileAction.Removed && filename == data.Directory) { ++ int idx = parent.children.IndexOf (data); ++ if (idx != -1) { ++ parent.children.RemoveAt (idx); ++ if (!fsw.Pattern.IsMatch (Path.GetFileName (filename))) { ++ continue; ++ } ++ } ++ } ++ ++ if (filename != data.Directory && !fsw.Pattern.IsMatch (Path.GetFileName (filename))) { ++ continue; ++ } ++ ++ lock (fsw) { ++ fsw.DispatchEvents (action, filename, ref renamed); ++ if (action == FileAction.RenamedNewName) ++ renamed = null; ++ if (fsw.Waiting) { ++ fsw.Waiting = false; ++ System.Threading.Monitor.PulseAll (fsw); ++ } ++ } ++ } ++ } ++ ++ if (newdirs != null) { ++ foreach (InotifyData newdir in newdirs) { ++ try { ++ StartMonitoringDirectory (newdir, true); ++ AppendRequestData (newdir); ++ ((ParentInotifyData) watches[newdir.FSW]).children.Add(newdir); ++ } catch {} // ignore the given directory ++ } ++ newdirs.Clear (); ++ } ++ } ++ ++ static int AddDirectoryWatch (IntPtr fd, string directory, InotifyMask mask) ++ { ++ mask |= InotifyMask.Directory; ++ return AddWatch (fd, directory, mask); ++ } ++ ++ [DllImport ("libc", EntryPoint="close")] ++ internal extern static int Close (IntPtr fd); ++ ++ [DllImport ("libc", EntryPoint = "read")] ++ extern static int ReadFromFD (IntPtr fd, byte [] buffer, IntPtr length); ++ ++ //[MethodImplAttribute(MethodImplOptions.InternalCall)] ++ [DllImport ("libc", EntryPoint = "inotify_init")] ++ extern static IntPtr GetInotifyInstance (); ++ ++ //[MethodImplAttribute(MethodImplOptions.InternalCall)] ++ [DllImport ("libc", EntryPoint = "inotify_add_watch")] ++ extern static int AddWatch (IntPtr fd, string name, InotifyMask mask); ++ ++ //[MethodImplAttribute(MethodImplOptions.InternalCall)] ++ [DllImport ("libc", EntryPoint = "inotify_rm_watch")] ++ extern static IntPtr RemoveWatch (IntPtr fd, int wd); ++ } ++} ++ +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/SearchPattern.cs +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/IO/SearchPattern.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -0,0 +1,225 @@ ++// ++// System.IO.SearchPattern2.cs: Filename glob support. ++// ++// Author: ++// Dan Lewis (dihlewis@yahoo.co.uk) ++// ++// (C) 2002 ++// ++ ++// ++// Permission is hereby granted, free of charge, to any person obtaining ++// a copy of this software and associated documentation files (the ++// "Software"), to deal in the Software without restriction, including ++// without limitation the rights to use, copy, modify, merge, publish, ++// distribute, sublicense, and/or sell copies of the Software, and to ++// permit persons to whom the Software is furnished to do so, subject to ++// the following conditions: ++// ++// The above copyright notice and this permission notice shall be ++// included in all copies or substantial portions of the Software. ++// ++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++// ++ ++// Copied from corlib/System.IO/SearchPatter.cs ++using System; ++using System.IO; ++ ++namespace Banshee.LibraryWatcher.IO { ++ ++ // FIXME: there's a complication with this algorithm under windows. ++ // the pattern '*.*' matches all files (i think . matches the extension), ++ // whereas under UNIX it should only match files containing the '.' character. ++ ++ class SearchPattern2 { ++ public SearchPattern2 (string pattern) : this (pattern, false) { } ++ ++ public SearchPattern2 (string pattern, bool ignore) ++ { ++ this.ignore = ignore; ++ this.pattern = pattern; ++ Compile (pattern); ++ } ++ ++ // OSX has a retarded case-insensitive yet case-aware filesystem ++ // so we need a overload in here for the Kqueue watcher ++ public bool IsMatch (string text, bool ignorecase) ++ { ++ if (!hasWildcard) { ++ bool match = String.Compare (pattern, text, ignorecase) == 0; ++ if (match) ++ return true; ++ ++ // This is a special case for FSW. It needs to match e.g. subdir/file.txt ++ // when the pattern is "file.txt" ++ int idx = text.LastIndexOf ('/'); ++ if (idx == -1) ++ return false; ++ idx++; ++ if (idx == text.Length) ++ return false; ++ ++ return (String.Compare (pattern, text.Substring (idx), ignorecase) == 0); ++ } ++ ++ return Match (ops, text, 0); ++ } ++ ++ public bool IsMatch (string text) ++ { ++ return IsMatch (text, ignore); ++ } ++ ++ public bool HasWildcard { ++ get { return hasWildcard; } ++ } ++ // private ++ ++ Op ops; // the compiled pattern ++ bool ignore; // ignore case ++ bool hasWildcard; ++ string pattern; ++ ++ private void Compile (string pattern) ++ { ++ if (pattern == null || pattern.IndexOfAny (InvalidChars) >= 0) ++ throw new ArgumentException ("Invalid search pattern: '" + pattern + "'"); ++ ++ if (pattern == "*") { // common case ++ ops = new Op (OpCode.True); ++ hasWildcard = true; ++ return; ++ } ++ ++ ops = null; ++ ++ int ptr = 0; ++ Op last_op = null; ++ while (ptr < pattern.Length) { ++ Op op; ++ ++ switch (pattern [ptr]) { ++ case '?': ++ op = new Op (OpCode.AnyChar); ++ ++ ptr; ++ hasWildcard = true; ++ break; ++ ++ case '*': ++ op = new Op (OpCode.AnyString); ++ ++ ptr; ++ hasWildcard = true; ++ break; ++ ++ default: ++ op = new Op (OpCode.ExactString); ++ int end = pattern.IndexOfAny (WildcardChars, ptr); ++ if (end < 0) ++ end = pattern.Length; ++ ++ op.Argument = pattern.Substring (ptr, end - ptr); ++ if (ignore) ++ op.Argument = op.Argument.ToLower (); ++ ++ ptr = end; ++ break; ++ } ++ ++ if (last_op == null) ++ ops = op; ++ else ++ last_op.Next = op; ++ ++ last_op = op; ++ } ++ ++ if (last_op == null) ++ ops = new Op (OpCode.End); ++ else ++ last_op.Next = new Op (OpCode.End); ++ } ++ ++ private bool Match (Op op, string text, int ptr) ++ { ++ while (op != null) { ++ switch (op.Code) { ++ case OpCode.True: ++ return true; ++ ++ case OpCode.End: ++ if (ptr == text.Length) ++ return true; ++ ++ return false; ++ ++ case OpCode.ExactString: ++ int length = op.Argument.Length; ++ if (ptr + length > text.Length) ++ return false; ++ ++ string str = text.Substring (ptr, length); ++ if (ignore) ++ str = str.ToLower (); ++ ++ if (str != op.Argument) ++ return false; ++ ++ ptr += length; ++ break; ++ ++ case OpCode.AnyChar: ++ if (++ ptr > text.Length) ++ return false; ++ break; ++ ++ case OpCode.AnyString: ++ while (ptr <= text.Length) { ++ if (Match (op.Next, text, ptr)) ++ return true; ++ ++ ++ ptr; ++ } ++ ++ return false; ++ } ++ ++ op = op.Next; ++ } ++ ++ return true; ++ } ++ ++ // private static ++ ++ internal static readonly char [] WildcardChars = { '*', '?' }; ++ internal static readonly char [] InvalidChars = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }; ++ ++ private class Op { ++ public Op (OpCode code) ++ { ++ this.Code = code; ++ this.Argument = null; ++ this.Next = null; ++ } ++ ++ public OpCode Code; ++ public string Argument; ++ public Op Next; ++ } ++ ++ private enum OpCode { ++ ExactString, // literal ++ AnyChar, // ? ++ AnyString, // * ++ End, // end of pattern ++ True // always succeeds ++ }; ++ } ++} +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/SourceWatcher.cs +=================================================================== +--- banshee.orig/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/SourceWatcher.cs 2010-05-27 19:01:30.290431135 +0800 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/SourceWatcher.cs 2010-05-27 19:01:32.230430193 +0800 +@@ -52,7 +52,7 @@ + { + private readonly LibraryImportManager import_manager; + private readonly LibrarySource library; +- private readonly FileSystemWatcher watcher; ++ private readonly FileSystemWatcherProxy watcher; + private readonly ManualResetEvent handle; + private readonly Thread watch_thread; + +@@ -83,7 +83,7 @@ + + import_manager = ServiceManager.Get (); + +- watcher = new FileSystemWatcher (path); ++ watcher = new FileSystemWatcherProxy (path); + watcher.IncludeSubdirectories = true; + watcher.Changed += OnChanged; + watcher.Created += OnChanged; +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Makefile.am +=================================================================== +--- banshee.orig/src/Extensions/Banshee.LibraryWatcher/Makefile.am 2010-05-27 19:01:30.250433183 +0800 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Makefile.am 2010-05-27 19:01:32.230430193 +0800 +@@ -4,6 +4,12 @@ + INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR) + + SOURCES = \ ++ Banshee.LibraryWatcher/FileSystemWatcherProxy.cs \ ++ Banshee.LibraryWatcher/IO/FileAction.cs \ ++ Banshee.LibraryWatcher/IO/FileSystemWatcher.cs \ ++ Banshee.LibraryWatcher/IO/IFileWatcher.cs \ ++ Banshee.LibraryWatcher/IO/InotifyWatcher.cs \ ++ Banshee.LibraryWatcher/IO/SearchPattern.cs \ + Banshee.LibraryWatcher/LibraryWatcherService.cs \ + Banshee.LibraryWatcher/SourceWatcher.cs + +Index: banshee/configure +=================================================================== +--- banshee.orig/configure 2010-05-27 19:01:30.480432064 +0800 ++++ banshee/configure 2010-05-27 19:01:32.250433150 +0800 +@@ -15492,7 +15492,7 @@ + $as_echo "yes" >&6; } + HAVE_MONO_2_4_3=yes + fi +- if test "x$HAVE_MONO_2_4_3" = "xyes"; then ++ if true; then + ENABLE_LIBRARY_WATCHER_TRUE= + ENABLE_LIBRARY_WATCHER_FALSE='#' + else +Index: banshee/src/Extensions/Banshee.LibraryWatcher/Makefile.in +=================================================================== +--- banshee.orig/src/Extensions/Banshee.LibraryWatcher/Makefile.in 2010-05-27 19:01:30.430431096 +0800 ++++ banshee/src/Extensions/Banshee.LibraryWatcher/Makefile.in 2010-05-27 19:01:32.260429880 +0800 +@@ -370,6 +370,12 @@ + LINK = $(REF_EXTENSION_LIBRARYWATCHER) $(am__append_1) + INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR) + SOURCES = \ ++ Banshee.LibraryWatcher/FileSystemWatcherProxy.cs \ ++ Banshee.LibraryWatcher/IO/FileAction.cs \ ++ Banshee.LibraryWatcher/IO/FileSystemWatcher.cs \ ++ Banshee.LibraryWatcher/IO/IFileWatcher.cs \ ++ Banshee.LibraryWatcher/IO/InotifyWatcher.cs \ ++ Banshee.LibraryWatcher/IO/SearchPattern.cs \ + Banshee.LibraryWatcher/LibraryWatcherService.cs \ + Banshee.LibraryWatcher/SourceWatcher.cs + --- banshee-1.6.1.orig/debian/source/format +++ banshee-1.6.1/debian/source/format @@ -0,0 +1 @@ +1.0