From 570b21a48eafdc1b7a9657b83bf083b2641de250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Aug 2014 01:13:14 +0200 Subject: [PATCH] mpd: Update patchset Adds an icon and use it for notifications. Also set buffer size to 4k since 1k seems a bit small here. --- .../mpd/patches/mpd-0.18.12_git.patchset | 529 ++++++++++++++++-- 1 file changed, 490 insertions(+), 39 deletions(-) diff --git a/media-sound/mpd/patches/mpd-0.18.12_git.patchset b/media-sound/mpd/patches/mpd-0.18.12_git.patchset index 5665c3f17..518221c73 100644 --- a/media-sound/mpd/patches/mpd-0.18.12_git.patchset +++ b/media-sound/mpd/patches/mpd-0.18.12_git.patchset @@ -1,7 +1,8 @@ -From eb207183aa82a9a02b88e9da8c27505d2665ae26 Mon Sep 17 00:00:00 2001 +From ca3ef35c9a07ad4774f31f28ba9ea9fc6b246bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 13 Jul 2014 01:29:05 +0200 -Subject: [PATCH 1/5] configure.ac: check for socket() in libnetwork for Haiku +Subject: [PATCH 01/10] configure.ac: check for socket() in libnetwork for + Haiku --- configure.ac | 2 +- @@ -24,10 +25,10 @@ index dbbb5a5..5ff995f 100644 1.8.3.4 -From fddacb621abb503ea1d704548dbfe7433fcdd2cf Mon Sep 17 00:00:00 2001 +From afbcf41abb168f3d950cbe285a6cc994e1142aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 13 Jul 2014 01:29:39 +0200 -Subject: [PATCH 2/5] output: make sure AudioOutput::mixer is initialized +Subject: [PATCH 02/10] output: make sure AudioOutput::mixer is initialized Avoids crashing when libao fails to initialize. --- @@ -50,11 +51,11 @@ index eafcec4..79ef4f9 100644 1.8.3.4 -From ad25cb6cc8281417fe0cf5d417f9dd542f24d7d2 Mon Sep 17 00:00:00 2001 +From 7aee15bbe5d6ef3ddc99ac6284da880d00dc1708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 14 Jul 2014 23:10:02 +0200 -Subject: [PATCH 3/5] unix: define WCOREDUMP() for platforms that don't support - it +Subject: [PATCH 03/10] unix: define WCOREDUMP() for platforms that don't + support it Haiku does not dump core, it just starts the debugger. --- @@ -80,10 +81,10 @@ index 490b2de..49ad394 100644 1.8.3.4 -From 866c9015ac11ae44ea659d8e33bdbfbdf9bae8ff Mon Sep 17 00:00:00 2001 +From 7f45df7c44c496f434c1193b1b051cd9290e3788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 14 Jul 2014 23:12:03 +0200 -Subject: [PATCH 4/5] system/SocketUtil: guard usage of SO_PASSCRED +Subject: [PATCH 04/10] system/SocketUtil: guard usage of SO_PASSCRED Haiku has struct ucred but no SO_PASSCRED (yet). --- @@ -107,32 +108,30 @@ index b9df0d5..5a88dd1 100644 1.8.3.4 -From da7f27823ec9db825c5f957c52d7649bcf417d2b Mon Sep 17 00:00:00 2001 +From f41add1bf7990cc97e260ccee5ccfdf5131965be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 14 Jul 2014 23:16:20 +0200 -Subject: [PATCH 5/5] output: add native Haiku audio output and mixer support - -Work in progress +Subject: [PATCH 05/10] output: add native Haiku audio output and mixer support Also uses the notification system to display tags. --- Makefile.am | 8 + configure.ac | 20 ++ src/mixer/MixerList.hxx | 1 + - src/mixer/plugins/HaikuMixerPlugin.cxx | 73 ++++++ + src/mixer/plugins/HaikuMixerPlugin.cxx | 73 +++++ src/output/Registry.cxx | 4 + - src/output/plugins/HaikuOutputPlugin.cxx | 432 +++++++++++++++++++++++++++++++ + src/output/plugins/HaikuOutputPlugin.cxx | 440 +++++++++++++++++++++++++++++++ src/output/plugins/HaikuOutputPlugin.hxx | 34 +++ - 7 files changed, 572 insertions(+) + 7 files changed, 580 insertions(+) create mode 100644 src/mixer/plugins/HaikuMixerPlugin.cxx create mode 100644 src/output/plugins/HaikuOutputPlugin.cxx create mode 100644 src/output/plugins/HaikuOutputPlugin.hxx diff --git a/Makefile.am b/Makefile.am -index 23b5201..231ca4a 100644 +index 6e5eb03..7c87573 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -1221,6 +1221,14 @@ liboutput_plugins_a_SOURCES += \ +@@ -1232,6 +1232,14 @@ liboutput_plugins_a_SOURCES += \ src/output/plugins/FifoOutputPlugin.hxx endif @@ -314,10 +313,10 @@ index 566f6b6..4d80ff5 100644 #endif diff --git a/src/output/plugins/HaikuOutputPlugin.cxx b/src/output/plugins/HaikuOutputPlugin.cxx new file mode 100644 -index 0000000..955294c +index 0000000..cfebe79 --- /dev/null +++ b/src/output/plugins/HaikuOutputPlugin.cxx -@@ -0,0 +1,432 @@ +@@ -0,0 +1,440 @@ +/* + * Copyright (C) 2003-2014 The Music Player Daemon Project + * http://www.musicpd.org @@ -346,16 +345,20 @@ index 0000000..955294c +#include "util/Domain.hxx" +#include "Log.hxx" + ++#include +#include +#include +#include +#include ++#include +#include + +#include + +#include + ++#define UTF8_PLAY "\xE2\x96\xB6" ++ +struct HaikuOutput { + AudioOutput base; + @@ -396,7 +399,7 @@ index 0000000..955294c +HaikuOutput::Configure(const config_param ¶m, Error &error) +{ + /* XXX: by default we should let the MediaKit propose the buffer size */ -+ write_size = param.GetBlockValue("write_size", 1024u); ++ write_size = param.GetBlockValue("write_size", 4096u); + + format = (media_raw_audio_format*)malloc( + sizeof(media_raw_audio_format)); @@ -634,8 +637,6 @@ index 0000000..955294c + + notification.SetGroup("Music Player Daemon"); + -+ notification.SetTitle("Now Playing"); -+ + char timebuf[16]; + snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d", + tag.time / 3600, (tag.time % 3600) / 60, tag.time % 60); @@ -688,23 +689,29 @@ index 0000000..955294c + } + } + -+ BString content; -+ if (artist.Length()) -+ content << artist << " - "; -+ if (album.Length()) -+ content << album << " - "; -+ if (track.Length()) -+ content << track << " - "; -+ if (title.Length()) -+ content << title << " - "; -+ if (name.Length()) -+ content << name << " - "; -+ if (content.Length() == 0) -+ content << "Unknown "; -+ if (tag.time > 0) -+ content << "(" << timebuf << ")"; ++ notification.SetTitle(UTF8_PLAY " Now Playing:"); + -+ notification.SetContent(content); ++ BStringList content; ++ if (name.Length()) ++ content.Add(name); ++ if (artist.Length()) ++ content.Add(artist); ++ if (album.Length()) ++ content.Add(album); ++ if (track.Length()) ++ content.Add(track); ++ if (title.Length()) ++ content.Add(title); ++ ++ if (content.CountStrings() == 0) ++ content.Add("(Unknown)"); ++ ++ BString full = content.Join(" " B_UTF8_BULLET " "); ++ ++ if (tag.time > 0) ++ full << " (" << timebuf << ")"; ++ ++ notification.SetContent(full); + + notification.Send(); +} @@ -793,3 +800,447 @@ index 0000000..f3f224d -- 1.8.3.4 + +From 238d3fec953ef638de2c7a1f5ab5cb590b3c09d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Thu, 31 Jul 2014 23:03:07 +0200 +Subject: [PATCH 06/10] Add an Haiku HVIF icon + +3D version reinterpreted from the official 2D design, +reusing existing Haiku icons. + +Icon-O-Matic source file. +Same as data/artwork/icons/App_MusicPD in the Haiku tree as hrev47609. +--- + src/haiku/App_MusicPD | Bin 0 -> 46028 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 src/haiku/App_MusicPD + +diff --git a/src/haiku/App_MusicPD b/src/haiku/App_MusicPD +new file mode 100644 +index 0000000000000000000000000000000000000000..4d341fdbfd0325647a657bf8849496b2dc33ecf8 +GIT binary patch +literal 46028 +zcmeHQ4R}<=xjrHMMBpkSAbJs2ORu0HAwZ!Ta!w)=ECGUl7oMgyA#6w_$%ftKuZj(d +zs34g7Q?0a*h$x7^1*{g7O^FJ&mPbjD;X^T +zzj_MFSjbA_Wul_VA?cR4zBN{#LMZ)gIYg%bVu(Z;z)dVW4!*r?TQ8LVg|0yjpla|MF`6{ZlizepbCd)YE@Pb?1+z9;3yVaFcN +zW>Pwnk{x>?&nLMZdm*nSxgC4Rk+xBiVgGwm&als*3&N+eqB;hCF=1G5Xd2GL2;WRf +z<&I( +zrzDrD>$fDAsq1x9ZkbA`ykvG@p=B!2P7S3(^IS{k?7Z}^=j5eDN90{X_xfo=NLEbA +z7c(8M)k0QCnP_sY)0Y@TC!f|Cr=5=1#yhsn|J3Q&j1GY}oU?TfkLLKLElxpe!p61z?YeQZoBS+pl +zrw8&kDUyC8F-Dd2AT|ye>HCmeM*2%hE^{}fB$ttXl~s!Cj +zev-@ZzuPLuiT|%mIl~`~I>&!jARG=o +z?@#G0N_PGWIl@|Y{tNk4B)9XQmq~*ss~ji)mzr|MfAoEs25gP5AbO1W&0y!2AkV=;sAsfhA?s_-{Kxf4B)sDm42As?jL45zm1#C$~A$7 +z)W@l$pqS{~_op(mDGi{MV{cGpH#n-!J9aefV0Qe7XEr`=j)i0$Icz|K^AI}sqEuj> +z$Jvop$;grR&S^*96+-LqT@@Gh=zaJIYu*ddv<&(mflizq*sEmZ*n8*nz`j7yi7X=H +zRCOYq1>;^~JdB={Z!;d6g^uFHEte8tC!3kn7qJ#!eB(SrVl4ggxz6B3*RV4PL +zT~*B{TaqdsEO3L04v{*b9#7SHWpt`Sp3@1v-A>Xvd}z$kI~4HX+}t>9p)r+=9C`1Y +z9>^zIJXnw(XS;vm_}QRW$>=1#yhsn|J3Q$f@!(#0n)VU78JuTO(&&Fg#&E8)w*)E~ +zIr82)J&;enc<^;k4Wf8321-uc%l_)iJ^Ft?kKwPD5%`}drw9HWJ|-iL2lt|Qa3N^` +zv@Nn}!bkDo0ro+bN=9J;UPXFnpu-QcT=C$TtKfk7$m}8RNkqdaX%(!#q1WJzg0&-0~a_m>ol^B#Z|mVpdEE%M51O8&ug1j;iyH +z9Zfr!TCy$c!*HmU61pomBTX`w^<8Ez>%#;EVg`<7eJy#AYa+2H?V4&9#_8}bzN9+r +zudXifl?4K^rA~dIC-N;Coj1}M*Kqqo*tIpZ-P~i4mGPAw59Ln%2W)_6%+7t@Yzv?h +zeuo!{JN!wW6HhvIV7HgF;xyuh!eaTmsJg0gWZ9}^F@@(|wJhW#sC;`IS;z}XZjU32 +zDZe1eWpQLIn}wXkk+H(l)POaC!ob%#=noR;m4xY9!vdY(sEw0>8-TnB2gr7eJN_J% +zs|$|?a4kVAR?F1U|LwJ;BNSd-=?`gsTE(bB^V29FSp=gZofwrsCvk{9A%o~%I#x!~ +zfqU#V8df2xyyf31Unfc+yeOIeWpBnc_IQZx7s8kz$M%c-snam`!;C^0lSOvoCz~%R +z4O9k#*rE_Eq4%g%X&;pd+Y(hm^>E--?kb5XeOZ;nWOEwr2oalSo~1(0Gt03iiDy@o +z)RYHH=2U61%FYRv%&zd$qEOY@m +z<)xJ+p%5XaY54*I$3-|;QXMJ_1glEI6@h9k>$>4Te5cRhNSF1iJEdLp-{PzbIh8{# +zjA4j#4B?uZnrJ8#LS3SPva*mLODAXs^O}6U{G93J^=kF-;u=4r0&TJJ2WtYA{GEWR +zqPpB4tO)yD)k&K{*r|~04Jt&HWMbVEht0`*v2MyvvJF)B0IDPMGm-(o+4DnTUuj8= +z$+2zQwnZ(DJxUL#RQd%fr!6=JAYj~XjtTiZx+mki@-#wA&W#)9(!5I(W*q{o))Ea(Y|scgGtBosAbi +zF-&${e);97gJ9O5{%}4qt3@8`)Mr&zidE5Qf~@MZ^~3Eq7wwDeTX%1_m5uwwSr>9* +zQ~h}(7^~L)xRYR2Mn;C6Rr_j&wUkwG!75G4Ig}5ED7q_nJzYvWTVl%&@`&yUJSdD8 +zehhNf-oa{TRnh`qlQ@(qI+@<0QlSWCR&AK!RdC2Eghm^3xAQ#Pl(UMW=2(NwTZ~=1 +zcBQwH7O_c>Qvj}0!2F2CqO53({P}cZhni+fNnZr?J)8)I>Ct8q7BZc +z@Vt2`J}L6)NZE?nNABCJPaXQz-+TXRlm70(33W@hY>f=~@<^WX(YxT2F}TxY1LvEs +zz0BlOetv%Rv9)VkflpHu`SiO4_@v@5-F$*Sw)g};%C{zRLT%r^Jw+%*Ld|PDnz=Q! +zH*!b+`(Jx6V{haq`WdHVp>|;&xE7fhYzG%?6^@#v9J5rAwElIHky`kuwLc{NT=C>lc4C{8;Vb +z-|J1ex8At5^3%xrId_#8?`wpUI`sH23k^Eg{^37A)j7f+fBbQ@p`k%=s#nfGFKc0= +z_cJP3r4NM&7tv3tQ>PL^V~v}0(+dA+7-O$itQ3M?s+Gc^7Ke=J2!>f66600#+a-97 +zDA0KGR7KO{W%>#IJ$DdRc)NcA1V +ziq3f^a@|*deQxBl2Vr=%$6p<9(0T3jBi}Qfd6#?NjcTKQDh!Wq($TRZKej#GoK@%% +zS#iZw^(45v#_bK87h$^iyvp;HNMTgG1&y#l{)CpF*tK +zXXa;a9(@eQN<_{pd}@nVsd%*~ubM_rX{0|!3qsR6M)qvT?AdV0l#e#}jck)w$BrF~ +zHtpFHJ#gTF;MSVT%{e@i>9ug7&aZawF2r_UauThIc8#|C#AG&`AkEQul?c%2G(|gX +zNWczN=1T2$h^{*3Vy*rHVq4Ctu3NV*W`Zf#?rDPkcFY<7(uKE2J{&Z+-|C_*`nK<^ +z?!J9jL!|%t5C6yCHarj^aEpKNXWgK4{l%x{nVqehr7i(Fsp+*yxc*(YzAK{2YIc^LL!S@9Tyi$$>P>8GELE?BT2T3cHyxFv#Rzbm?t +zFC4}b-{N4|sNG$n*Cwg$jK3e$IT66mvFMfv#XOmHAC9b`o`1E8Pdt-4Cz138Pf8T +zG(&m{hV^M(Kn?A;noyv&XyT*EvHe!?bucfS#Ub`v4JP^floto?vDaunBLh@fn(-Jt +zWpCwC0)}a5jrk(@?vCv`BxY-I@v}De?LAnwf#qTL{aIL}Am$L#UE7K-rh8bPm`+hB +z{M-%v1=0;)^}7!@G3mQl8!TJBR+%SNhhTd4)@P&~Cc!2`L~)l@;gm=tl2@Q#`14yJ(<0rD}~)^?dRFTt5Pz2Km-o-Y2wVz5(Rwn>`dKd#5e9+V0 +zr$@s(h!Tg=`F$2`*9kyvER{eLs1{QT{^9$k+D|XZ8xTN$%+d?2mFWZqWPUkM`zhsq +zMgR2#Rkp4C7j{a=^Is$Ap3Hw$lU(Mf7RHg+nev$b!tlvb3O*WB3I^l0S4oJ{3xWCrCLH+qXf#?Qhz5|L8gzx+K{PZl9BOC7gE=uY1n!_fH>#9OHNE1M=(EV`fxN;k#>{+6|KZ!i +zZOKx9?@jy|97IjA>Q{p;wE562p3y*Z&vXl7r-dp^z6R8sS4+!4kc8}!p$S#WHr +z`Lu7@eA=3A+ZX@uuKoI&ul}_DrgNI~x(klK_?vP2Be!Z>|>vZ>;Yvb*ZKQZ`KSsH|sUM@1Xmqhj;GO|F-1wMHsEFFg +zMxcn=$js>VI3v&ub42MjmowwYFEZt^W(T!st}gT(Y+nUxDJ(SvJ@F8fpi>-z*1z#a +zD-S_8H|~Dz`>XcpeQK|}^xUy~^@1ZAXUyrbFLKErzr5{(&4=^@OIP0ZX)x0`eq+HG +z>2+tFpyl!G!KF;e-Gf7T>I9~g6&szVOzG4%rK>+#`B=Dflm5(2UtRE>|9Mm2zvRlz +zzg*QAS@T)_Q}1^>sQ0|1cksT2nZ}YO1ON4YRmL|lrQ{u<;yW)blfl|NE3hXYpl6NH3kD#^e1>eTX>;)sCcq={y{0^Pag^;(RT9P+#a5e#IsRa`lOf3i; +zFtx}Q;RyUGkK+*XR@6(X+3{?4Fwu}|b_j%T<%&;XFAgK33n5R;j!;V6z-aQW_{5J@ +zS^f=uHfAqzR(uNNfu;Qr@>bMH@~-&AukTnIfqIxm5EgIy#s*4_Ya}PD6F^bNQ*6a& +zU#gL%66gm4rk1!XK7~n8M#mxKt!OIA8xTMYz|sq%1577u%9?-UwH1oyQ`Q1}heqf^ +z$P-hF=RhWT7Z%Eug5_#_8Llr>RZ>|Q3vITAYM@}LAA`=4cQG!8m6p9=z{%_d(>L)K +z;|klLOpZgyQ#PZ0^ToJ`k6DVrkdr9}HsiGzSE#_D7rGGgR#Z)DF|K={iCBQ8GW^&H +zQ(0;;Zi|PS==QbOVq9S{R0YQ&doAQ>nQZv*io}qTSI9&1OUHY{ht-RPnxH5XF;}G&zba6jW +zTsJk55NNA)Q($hqojX}{PquCfzs)V%xzmH{DO-NnCyso$DUYq2lG_oMLJHUC8Wg3h +dsgSdGJ!=t9U7vnG@xZIv)w{eN|tS>6Bu + +literal 0 +HcmV?d00001 + +-- +1.8.3.4 + + +From 6a4a251730bf2b40dcc68a79ea92c6e18219d860 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Thu, 31 Jul 2014 23:09:29 +0200 +Subject: [PATCH 07/10] Add Haiku icon as resource definition file + +--- + src/haiku/mpd.rdef | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 64 insertions(+) + create mode 100644 src/haiku/mpd.rdef + +diff --git a/src/haiku/mpd.rdef b/src/haiku/mpd.rdef +new file mode 100644 +index 0000000..30fcfe4 +--- /dev/null ++++ b/src/haiku/mpd.rdef +@@ -0,0 +1,64 @@ ++ ++resource vector_icon { ++ $"6E6369661F050102031604BEE29BBEC5403EC540BEE29B4A10004A10000001C6" ++ $"70D073FFFF020116033EB0000000000000003EB000482000482000BE4B0084FF" ++ $"32020316023CAF103CF749BCF7493CAF104A07A44A1DB7A143FFFF02031602BC" ++ $"AB8FBCFA713CFA71BCAB8F4A05E34A004BAB08FFFF03010000020016023CC7EE" ++ $"389BC0BA16573E39B04977C842ADC700FFFFD3020006023C529D3753A2B8966F" ++ $"3D9D084B6044496AAF00474747FFA5A0A002001602BC4E76BC411B3C90DABCA0" ++ $"0D47587D4ABA850090FFD40200160238313C3B5CF0BFCD963C7AAC4C13943FCA" ++ $"F901ECFFC3054B04017E020106023E1C1538010FB7C32B3DF5E649B8BE48DD4A" ++ $"000593DCFF00337F020006023879063B8224BE2CC83B10DB4A1F6F49B894FF9A" ++ $"9A9A00242222020006033C69A60000000000003E186148800049800058F3F3F3" ++ $"00D4CECEFFD9D9D9038DFF06050002001602B2E4F7386B91BA78F7B4F4FD49FB" ++ $"A94AE12500CEFF6603010000020006023C55B638309FBA16573E39B049E9FF43" ++ $"840A008B8787FF161515020016023C57B5364381B785863DA4F54B27C349B7BB" ++ $"0010FF4C02001602BC4E76BC411B3C90DABCA00D47587D4ABA850060FF500200" ++ $"160238313C3B5CF0BFCD963C7AAC4C13943FCAF90174FF22055C04017E020016" ++ $"023879063B8224BE2CC83B10DB4A1F6F49B894FF59001E020016033C3DA60000" ++ $"000000003E186148AC0049800058AD0076FA800333C805020106023A40000000" ++ $"000000003980004A300048400000767676FC403E3E020106023E1C1538010FB7" ++ $"C32B3DF5E649B8BE48DD4A000593DCFF00337F05002102044022C65922B92622" ++ $"224022B92622C659405EB9265EC6595E5E405EC6595EB9260A062E262E4B4C5A" ++ $"5650562C38220A064C5C545C604FCA1BC4875C4A58480A042E264C32562C3822" ++ $"0A044C324C5A5650562C0A042E262E4B4C5A4C320A044934494E3043302A0A04" ++ $"BA29C0283043302ABA31B7540A04494B494E304332C0270A044934494B3241BA" ++ $"31B7540A043E25432252264D2A08043E2543225226522C0A034D2A5226522C08" ++ $"02464F47C5ED0A043246324A4453444E0A04344834494250424E08025436503A" ++ $"0A06262E264C485E5252523430280A04262E483C523430280A04483C485E5252" ++ $"52340A04262E264C485E483C0A04443D4456284928320A04B6F9C28C28492832" ++ $"B701BA840A044454445728492AC28B0A04443D44542A47B701BA840A04382B3D" ++ $"284E2D49310804382B3D284E2D4E330A0349304E2C4E320802425843C9830A06" ++ $"486054606052CA1BC5B95C4D524802044530C2D730C0A430403540BAB540BC06" ++ $"4538C0A438C2D7384A354ABC064ABAB50803452145335B250A044934494B3241" ++ $"BA31B754240A0B0102023EF45B0000000000003EF45B487749B685270A05010B" ++ $"1A3EF45B0000000000003EF45B487749B6852715FF01178400040A09010A0A3E" ++ $"F45B0000000000003EF45B487749B6852715FF0A0A010C023EF45B0000000000" ++ $"003EF45B487749B685270A050101123EF45B0000000000003EF45B487749B685" ++ $"2701178400040A060103023EF45B0000000000003EF45B487749B685270A0701" ++ $"04023EF45B0000000000003EF45B487749B685270A08020506023EF45B000000" ++ $"0000003EF45B487749B685270A0C0109023EF45B0000000000003EF45B487749" ++ $"B685270A0D01070A3EF45B0000000000003EF45B487749B6852715FF0A0E0108" ++ $"0A3EF45B0000000000003EF45B487749B6852715FF0A0F010D1A3EF45B000000" ++ $"0000003EF45B487749B6852715FF01178220040A0A010E0A3EF45B0000000000" ++ $"003EF45B487749B6852715FF0A11010F0A3EF45B0000000000003EF45B487749" ++ $"B6852715FF0A0B01000A3D43F93C2B26BD304E3DF9DE48FCA544AB2E15FF0A00" ++ $"0100123CF8FE3C832FBCE7163E4DA3480D86C5C7B501178400040A010100023C" ++ $"F8FE3C832FBCE7163E4DA3480D86C5C7B50A020100023AC6433A584EBAB58C3C" ++ $"265448124D45D0400A0301001A3CB1A73C46E3BCA16C3E165C480E5DC4720015" ++ $"FF01178200040A0401001A3C808E3C1D64BC71B33DE0FC480EF2C30DBC15FF01" ++ $"178200040A18011D023EAAAA0000000000003EAAAA47155548B0480A12011A1A" ++ $"3EAAAA0000000000003EAAAA47155548B04815FF01178400040A1601190A3EAA" ++ $"AA0000000000003EAAAA47155548B04815FF0A17011B0A3EAAAA000000000000" ++ $"3EAAAA47155548B04815FF0A120111123EAAAA0000000000003EAAAA47155548" ++ $"B04801178400040A130112023EAAAA0000000000003EAAAA47155548B0480A14" ++ $"0113023EAAAA0000000000003EAAAA47155548B0480A15021415023EAAAA0000" ++ $"000000003EAAAA47155548B0480A1D01180A3EAAAA0000000000003EAAAA4715" ++ $"5548B04815FF0A1D01180A3EAAAA0000000000003EAAAA47155548B04800150A" ++ $"1901160A3EAAAA0000000000003EAAAA47155548B04815FF0A1A01170A3EAAAA" ++ $"0000000000003EAAAA47155548B04815FF0A1B011C1A3EAAAA0000000000003E" ++ $"AAAA47155548B04815FF01178220040A1C011E023EAAAA0000000000003EAAAA" ++ $"47155548B0480A12011F1A3EAAAA0000000000003EAAAA47155548B04815FF01" ++ $"178222040A12011F1A3EAAAA0000000000003EAAAA47155548B0480015011784" ++ $"2204" ++}; +-- +1.8.3.4 + + +From 831be08addd2c6fd6375bdaa4273ae92cb7638fb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Thu, 31 Jul 2014 23:12:56 +0200 +Subject: [PATCH 08/10] Add Haiku resources: application signature and flags + +Since we do not handle B_QUIT_REQUESTED because the BApplication +does not Run(), use the background flag to avoid showing up in Deskbar. +--- + src/haiku/mpd.rdef | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/haiku/mpd.rdef b/src/haiku/mpd.rdef +index 30fcfe4..6f1aca2 100644 +--- a/src/haiku/mpd.rdef ++++ b/src/haiku/mpd.rdef +@@ -1,3 +1,8 @@ ++resource app_signature "application/x-vnd.MusicPD"; ++ ++resource app_flags B_BACKGROUND_APP; ++ ++// TODO: resource app_version {}; + + resource vector_icon { + $"6E6369661F050102031604BEE29BBEC5403EC540BEE29B4A10004A10000001C6" +-- +1.8.3.4 + + +From ed69f94394937e90f9547cfd68c96b2cc4d6303f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Thu, 31 Jul 2014 23:18:06 +0200 +Subject: [PATCH 09/10] Use the icon for notifications on Haiku + +--- + src/output/plugins/HaikuOutputPlugin.cxx | 56 ++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +diff --git a/src/output/plugins/HaikuOutputPlugin.cxx b/src/output/plugins/HaikuOutputPlugin.cxx +index cfebe79..a937bbe 100644 +--- a/src/output/plugins/HaikuOutputPlugin.cxx ++++ b/src/output/plugins/HaikuOutputPlugin.cxx +@@ -26,11 +26,15 @@ + #include "util/Domain.hxx" + #include "Log.hxx" + ++#include ++#include + #include ++#include + #include + #include + #include + #include ++#include + #include + #include + +@@ -76,6 +80,27 @@ haiku_output_error(Error &error_r, status_t err) + error_r.Set(haiku_output_domain, err, error); + } + ++static void ++initialize_application() ++{ ++ // required to send the notification with a bitmap ++ // TODO: actually Run() it and handle B_QUIT_REQUESTED ++ // TODO: use some locking? ++ if (be_app == NULL) { ++ FormatDebug(haiku_output_domain, "creating be_app\n"); ++ new BApplication("application/x-vnd.MusicPD"); ++ } ++} ++ ++static void ++finalize_application() ++{ ++ // TODO: use some locking? ++ delete be_app; ++ be_app == NULL; ++ FormatDebug(haiku_output_domain, "deleting be_app\n"); ++} ++ + inline bool + HaikuOutput::Configure(const config_param ¶m, Error &error) + { +@@ -103,6 +128,8 @@ haiku_test_default_device(void) + static AudioOutput * + haiku_output_init(const config_param ¶m, Error &error) + { ++ initialize_application(); ++ + HaikuOutput *ad = new HaikuOutput(); + + if (!ad->Initialize(param, error)) { +@@ -127,6 +154,8 @@ haiku_output_finish(AudioOutput *ao) + delete_sem(ad->new_buffer); + delete_sem(ad->buffer_done); + delete ad; ++ ++ finalize_application(); + } + + static void +@@ -309,6 +338,29 @@ haiku_send_tag(AudioOutput *ao, const Tag *meta) + { + HaikuOutput *ad = (HaikuOutput *)ao; + const Tag &tag = *meta; ++ status_t err; ++ ++ /* lazily initialized */ ++ static BBitmap *icon = NULL; ++ ++ if (icon == NULL) { ++ BAppFileInfo info; ++ BResources resources; ++ err = resources.SetToImage((const void *)&haiku_send_tag); ++ BFile file(resources.File()); ++ err = info.SetTo(&file); ++ icon = new BBitmap(BRect(0, 0, (float)B_LARGE_ICON - 1, ++ (float)B_LARGE_ICON - 1), B_BITMAP_NO_SERVER_LINK, B_RGBA32); ++ FormatDebug(haiku_output_domain, ++ "icon=%p\n", icon); ++ err = info.GetIcon(icon, B_LARGE_ICON); ++ FormatDebug(haiku_output_domain, ++ "err=0x%08lx\n", err); ++ if (err != B_OK) { ++ delete icon; ++ icon = NULL; ++ } ++ } + + BNotification notification(B_INFORMATION_NOTIFICATION); + +@@ -394,6 +446,10 @@ haiku_send_tag(AudioOutput *ao, const Tag *meta) + + notification.SetContent(full); + ++ err = notification.SetIcon(icon); ++ FormatDebug(haiku_output_domain, ++ "SetIcon: err=0x%08lx\n", err); ++ + notification.Send(); + } + +-- +1.8.3.4 + + +From a9022a970f14fc0953c393820d7902d87a636ef2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Fri, 1 Aug 2014 00:40:13 +0200 +Subject: [PATCH 10/10] Add the Haiku resources to the mpd binary + +--- + Makefile.am | 22 +++++++++++++++++++++- + configure.ac | 4 ++++ + 2 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 7c87573..0a5bca3 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -333,6 +333,25 @@ src_mpd_DEPENDENCIES = src/win32/mpd_win32_rc.$(OBJEXT) + src_mpd_LDFLAGS = -Wl,src/win32/mpd_win32_rc.$(OBJEXT) + endif + ++# ++# Haiku resource file ++# ++ ++src/haiku/mpd.rsrc: src/haiku/mpd.rdef ++ $(RC) -o $@ $< ++ ++if HAVE_HAIKU ++noinst_DATA = src/haiku/mpd.rdef ++ ++src_mpd_DEPENDENCIES = src/haiku/mpd.rsrc ++ ++all-local: ++ $(XRES) -o src/mpd src/haiku/mpd.rsrc ++ ++clean-local: ++ rm -rf src/haiku/mpd.rsrc ++endif ++ + if ENABLE_DATABASE + if ENABLE_INOTIFY + libmpd_a_SOURCES += \ +@@ -2079,4 +2098,5 @@ EXTRA_DIST = $(doc_DATA) autogen.sh \ + test/test_archive_zzip.sh \ + $(wildcard scripts/*.sh) \ + $(man_MANS) $(DOCBOOK_FILES) doc/mpdconf.example doc/doxygen.conf \ +- src/win32/mpd_win32_rc.rc.in src/win32/mpd.ico ++ src/win32/mpd_win32_rc.rc.in src/win32/mpd.ico \ ++ src/haiku/App_MusicPD +diff --git a/configure.ac b/configure.ac +index 81dec53..83b5ecf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -114,6 +114,10 @@ darwin*) + solaris*) + host_is_solaris=yes + ;; ++haiku*) ++ AC_CHECK_TOOL(RC, rc) ++ AC_CHECK_TOOL(XRES, xres) ++ ;; + esac + + AM_CONDITIONAL([ANDROID], [test x$host_is_android = xyes]) +-- +1.8.3.4 +