From 9d6b017fd71012ab0f6bf35d5ba19cc5ac19b56b Mon Sep 17 00:00:00 2001 From: Sergei Reznikov Date: Tue, 14 Nov 2017 10:10:33 +0300 Subject: [PATCH] QMPlay2: bump version --- ....21.patchset => qmplay2-17.10.24.patchset} | 164 +- .../patches/qmplay2_x86-15.05.30.patchset | 1822 ----------------- .../patches/qmplay2_x86-15.10.03.patchset | 1114 ---------- media-video/qmplay2/qmplay2-15.05.30.recipe | 91 - media-video/qmplay2/qmplay2-15.10.03.recipe | 93 - ...7.04.21.recipe => qmplay2-17.10.24.recipe} | 26 +- 6 files changed, 23 insertions(+), 3287 deletions(-) rename media-video/qmplay2/patches/{qmplay2-17.04.21.patchset => qmplay2-17.10.24.patchset} (65%) delete mode 100644 media-video/qmplay2/patches/qmplay2_x86-15.05.30.patchset delete mode 100644 media-video/qmplay2/patches/qmplay2_x86-15.10.03.patchset delete mode 100644 media-video/qmplay2/qmplay2-15.05.30.recipe delete mode 100644 media-video/qmplay2/qmplay2-15.10.03.recipe rename media-video/qmplay2/{qmplay2-17.04.21.recipe => qmplay2-17.10.24.recipe} (75%) diff --git a/media-video/qmplay2/patches/qmplay2-17.04.21.patchset b/media-video/qmplay2/patches/qmplay2-17.10.24.patchset similarity index 65% rename from media-video/qmplay2/patches/qmplay2-17.04.21.patchset rename to media-video/qmplay2/patches/qmplay2-17.10.24.patchset index dc638e8d5..48e37fc2e 100644 --- a/media-video/qmplay2/patches/qmplay2-17.04.21.patchset +++ b/media-video/qmplay2/patches/qmplay2-17.10.24.patchset @@ -3,55 +3,6 @@ From: Gerasim Troeglazov <3dEyes@gmail.com> Date: Tue, 13 Oct 2015 02:56:37 +0000 Subject: Add haiku support - -diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef -new file mode 100644 -index 0000000..e70bab0 ---- /dev/null -+++ b/haiku/QMPlay2.rdef -@@ -0,0 +1,42 @@ -+resource app_signature "application/x-vnd.QMPlay2"; -+resource app_flags B_MULTIPLE_LAUNCH; -+resource app_version { -+ major = 17, -+ middle = 04, -+ minor = 21, -+ -+ /* Application "variety" can be set to one of the following: -+ * B_APPV_DEVELOPMENT, -+ * B_APPV_ALPHA, -+ * B_APPV_BETA, -+ * B_APPV_GAMMA, -+ * B_APPV_GOLDEN_MASTER, -+ * B_APPV_FINAL -+ */ -+ variety = B_APPV_DEVELOPMENT, -+ internal = 0, -+ -+ short_info = "QMPlay2", -+ long_info = "QMPlay2 © 2010-2017 Błażej Szczygieł" -+}; -+ -+resource file_types message { -+ "types" = "video", -+ "types" = "audio" -+}; -+ -+resource vector_icon array { -+ $"6E63696602012C165AF20314D77803000DB4D0B47BB4D0B47BB5A4B493B717B5" -+ $"6DB659B515BCBFB846C814BDF0C26CBB17C8CEBE53CA3FBF23C99BBE9CCA9ABF" -+ $"6BCA35C053CA92C00FC985C0E0C7E7C196C8ADC12DC276C452B78EC9BFBD01C7" -+ $"06B6C1CA20B523CAD9B601CAA4B4ACCAF9B426CA1EB421CA9DB41FC965B46DC7" -+ $"FBB44EC8B0B561C2E0B4A9B879B57FBD9BB485B770B428B55FB438B66BB41CB4" -+ $"F6B4D0B47BB466B48CB4D0B47B0209B627B6EDB6A3B714B640B838B6A7BACAB6" -+ $"89B97FB6F3BD1FB6E1C1D3B6F0BF7BB6D1C408B623C864B659C633B71AC816B8" -+ $"DBC716B7F4C787BC65C561C369C1D7BFF0C3ADC4D7C11DC7BDBFBFC64EC075C7" -+ $"1DBF3FC5A7BE96C65EBEEFC0EEBC47B790B783BC40B9E3B71CB7480209B627B6" -+ $"EDB640B838B6A3B714B790B783B71CB748BC40B9E3C5A7BE96C0EEBC47C65EBE" -+ $"EFC7BDBFBFC71DBF3FC64EC075C369C1D7C4D7C11DBFF0C3ADB8DBC716BC65C5" -+ $"61B7F4C787B623C864B71AC816B659C633B6E1C1D3B6D1C408B6F0BF7BB6A7BA" -+ $"CAB6F3BD1FB689B97F020A00020001000A01010200" -+}; diff --git a/src/gui/Main.cpp b/src/gui/Main.cpp index 2fcea50..0ba765c 100644 --- a/src/gui/Main.cpp @@ -63,7 +14,7 @@ index 2fcea50..0ba765c 100644 +#ifdef Q_OS_HAIKU + setenv("HOME", "/boot/home", 1); +#endif - #if defined(Q_OS_MAC) && (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + #if (defined(Q_OS_MAC) || defined(Q_OS_WIN)) && (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif @@ -544,7 +547,7 @@ int main(int argc, char *argv[]) @@ -222,119 +173,6 @@ index 0000000..16920f6 + QCheckBox *enabledB; + QDoubleSpinBox *delayB; +}; -diff --git a/src/modules/MediaKit/MediaKit.png b/src/modules/MediaKit/MediaKit.png -new file mode 100644 -index 0000000000000000000000000000000000000000..36cb89c5e5200c5b613e4cf005b772df61aef49c -GIT binary patch -literal 5396 -zcmV+v73=DWP)1<6FprHd1$Uua_7y$_eS%QE%L=ndUbzGUafkzy0 -z5K$OpK;(=98j&Cv0xD}p1ci`D!UV`lmhMivtC#AkuH~(F{VCh!<^JyP-iCMN9eGFoKa2J^{{5-INx%uf9AG-o2*iOHPz16-C$JUR1Uv)0 -z4)}kA@xEmdz^TAZC=l{6+g{*0V8&Y=(EpYNq<~KVA46#xfD;$A^5ILDFn9KJCQhuS -zzCKB9Z8bI3Rd}AnvTQ8dp;&b2+@EIC=IuPZW*tvHy}tYk7x)k0TR_j@4D7E>Kojsq -z;8Q>qz(+1QgAXh{h52o>X_?hX#Lz(-ISj4huQu%3_az;jy{uXLdp`ZSn<^h#jB<}d -zlD`%Kao|h9SAx%6ckK!;Uj80tAJG(ak$+)GmEc7{QpGi}uRYB@_x*;ifAh}r!&d>f -zAId=g8U&nyGRqc#?_Pg77hZ5GGpD5(0r2_qmxfD}CP*dJJS!M~J$|69Pd;~nhVNkAO99{3!< -z)nB-fPyf@|Oq)6}04zcJNa@qHx0@X=ZDrdN>&b2Z(-^Nx;Z@HCq6oJOt+XZlX2Q{@ -zbNoeTan#9eM9e6lgC=!y+xItY!Fp%c{w2~#H;(L(~NB05zO -zotPmoghrK9VB*V9G2!uRxahXeGr74DG#v)|S@VNSIQKi@*i!t3*+GAc;4c8y0JXP& -z|1z#wxs=J1;vh?aO?qD^Pu#MG|Nhy}u=~4k>dt2S!f*4)30LyacX=3%D4#56~aH?@G>F)`q6JAYDAyWy@2W*m&o?cs@AhiR?T5YW_6!B)VKd -zcgZDf```sZQPTno5TFZcOr2`e7}EkG0WpTq&@`y(*v^Gj_t19Qe9#OS=x5*B%b9)! -zpz?&-z@CGFI9v<309Xa+k3D!5%a$IAh6R);W;6WpN5A8ZUq1qXck=agU3xuTP4gJ^ -zHS(^+@g!LfH4Q+hhJ?^SD1f@qh#5MjA&5tGOkH5=0z;_pgr=HTJCTm3x3lPEsU`+9 -zN^Q?JCRKOwn~exmD!uOQB;XX3*+(8*{g1r=jF!OU^W+Y6^Wyi{klVHqE!Ilp;}77T -zz8s=)Y)?{fCAKRmdJ@Bz6v{CYK+_ZfnnqM;L<|uU5H$o5QFZ~MM>LYA0zWwsp(d(R6H&n}rO;H6Aji~`9`w;PrF8*lBiMU>`w<}X -ziiAWQA>h1)VTZ+U2Lb;I%)fMb8!IlIgGLtoEOt6g&o7=J;-&Fte2(4^-GCFX#gh_U -z(=dca)XpbS>fZy9t@N* -zPVi>{pHHRWy04x%>Kj8b<+$>WYAvA*eCI@g-T? -zCzXhhvwa2)LE4ev2PmW*3XJ|}5_C-)W&R+MzK>f|4}K0b3xs;MsXpvQ5sjp;Gb!$qwR8rm -z3^FB;ld0u%hjK4 -zeNEFwn7`7#=lkeF1O#|09{{351SAiafF{(Emd{+#f-VL@ -zmhjU#@hvoRBy`b0= -zfOjigAT<5q_(Sa@C7$gl|3`wQzOS%=_~8=pMIip&Z?@6g=&SkOv*Cqp2n}`{EBS)H -z0ITFurLZpZQP_^M0+`-^F3_WSEa0= -zmE1~aHV{!kL}=7R1&(hpIT2xE-le8cPK^mkNN8|$m4=9FxF{;NnJ0r=Y2{DAG;kqu_e34x}Hh<2T -z?3A^k_I=;S^*n6XV`i)~$Vh##iU4GW2eJPP;CmTB7%lQguLUE%;q?KdWn{%B*|oySWLrnT^!%X -zwr%WUo`l`ck%b;a)@19%6L5U6JrB!vDA+cq9JLi>;QYA^0DZX-&)!2NU=c9qqsvpw -zo=IT-7QD6#G*~AtW1VJJ_-cjkdXV;2P)oT!gN`4%gXQ|zo@8oGgc?&PhRvjo7dR$j -zQ5#L+c^FevGr>BQPdplmQgV(YU%W<(?7ss+VX2vsWj2@8L -z1wii*0oxCifMo#Zystjcz6HH`7z9TX74inrS -zc0Y4Jsbm$-lqp!2MX{(%*Rm|6lsJyV;NT$HY?hv$9y&TYXm4+)>(5)LYG}psAaB{! -zckCo0_5dbioiLBsK4kbC4wZnV0P|Z>;H3i{fS%$N{iCcm;vgj{LE!&#L;@qjIV$bQ -z&>B2XGH7}9ba$bzyOUH+lp3>JO3MBL?b=4<2dB=d9v9o -z>2#WOI!$+XH(gy_^z`)LbnYfvm7+M128d6G1r4qSZj!Y&)e}6yebei7YUIqpR=xZZqCjoN+Ce}mfSH%QGbarb;Qf2DIe3hCxK~VF2iS7HizQmJ~ -zxG!;ii6bSp=hN(i<$JK$f@!lSGKsjRwk6y!>vigDf{J$mrF{){ -zcf&QS)b09uRS;-zZ;t}E0jG_JfH*)+RRA8qs70D3x0lUBaGP>5T#@369 -z`~vp%z|}uh-Qw|~6>v*S3%hph0yvLx5Ksh?mYpV1en+ed>Boq;<0~OXQ02a|*u^5W -z?;5l3xIkCPC(pl-8B@Nhz?Xmwpo8ndZEJ`6Rk~F3Eh}yyd&kq%*PtT46Tr|w3i!#Ruagj{xJtxF6Wm)`%+bFJWn;p -z^{8o{!=lf8?+}nL;Odn(v*U`dP!nUw@5^Hn@ZeK$)xQmY?D*r4r>?G!>gsCZ@i>NI -z;JRV8dQ@FtEIWA}*!$$OOz$`V)0$9uHhY+ss3Mgq(e1^`(8E%I3|R0hh(Jng&qGRy -z?Rv~OQV&(02(~@dszPE;g4Q&$tBF2 -zH;;}EwJ0cOmzhka+~uY55a0tp1-`N7aky$laMyVl5u3{ywcEJ2?^p#`As+?W3rxQZ -zT>8GM+_*l8qZZM6^?cI%c2VqZCzsEulDJU?iF$rFa~JQO`(t!-mojyO@@|M4nSjTh -zg{4;wAM~O{i#Ye(bHk#F5F%V$ZQHi3-0ks^U=MacVg|4SF!sI((;86hi_4JFW&FJT -z-Mmzs7~mfb-1j^jUk(9xTx{Q`P_nRWhmvJeC|L{?OIRff9GmYLJ2`LmBh)2+t3XFk -zDOo)Dtd0Tk;8U>tOQQ$8YSk(l8X6cF7@)tupRTSh_V3@%&Ye41yLK(8x?l?<0^z|D -zy8+bsnuQZ5z-bFpsx;~zk(Iljvnk?cily6Yb(00 -z4{L^Duwlc7aw>ci@L%J#0DwsZQFG1R@PYTDOwa@THZad+hkFK3rCZogNQN5sg623b -zCC61|YsaBrIoOUvqEz4l+0H4(D;%46jF_=LoX^7+sURQ%JG<3Xw`!CD!_7C}%)*5W -zF-;RKD5IB`(Ob4`Vdct|Wren&Qm0|^X8Qs?sD1UPmt798{^4?tYFeW>@i)WZW@bBg -zFgvlBZ1u_Pc8{TBu!aMr82y&OMk26CdO0SMp-Hqe)!0r`@@XR4meKR4huS0534@*M -z!K2T^6}Jta=KQyCl_B#}rEjYcsHgIFwvZQDHhXjlxoZY=Qd<`z(v -zD}f&Zyt@8+j+(L)@^`Djx~PSSjhdg!e_e*=>vEF}kL2ZF_kzBXA>WU{z8u{41l;(m -z(F1C2ZKbWPjTtj$(A3mKDwPVSKGQT2Lh#F9{*oJSyb)AEbW!jtqhvgbyY(m|{rex@ -z^%M(Ey^wkHKL$=cSZTFeT%MmjMo(KKxB2~ms3NM0Q({$o$iZMhh#mw&? -z9S*v&v5|&`hA_wXg5089Jn=jaUDwexjTc{hk*|I2YoIj#LEfY!4u^hD@IAoO<%`>H -z{b!baU=dRr>k+;Ub`c60)iV2`Zy#jSkn4it02D27(%^&R!Oje9>V&mh;l7HzsHLTa -zcsxFANjp*u!yu7JkVqt`udgSSO3~5L!Rpnk%iu2o9{fvy4(FicB;XsU*kAxGS+an0 -z&soHA$4sXwRZYw<5_K}ftO4|a4szXHWV*ZQ>+7SpH_i4g_}R;_zJ2(Mo12@%GS+y+ -zFbv}HI6??IIy%Zlj{#sg@WgoD@m5ZX&Hz3RtRN_)9)`S%s@uPTs@|H1LPEJ<8qD*c -z%>Bc>$zI?{c{>hE3)CT`#i-L*^H3*ClBhhc6tqrMHnttLSGS(wJ2vN{s<%;4ZV-t? -z!g4tb6->vd5)YuJx?4F&wEw>%ZNRe(pF`fP?FGILjNflY$lv<0%H_8-jR3Y9eGE_EB^yvNfC*>uwT*u0000 -Date: Sun, 31 May 2015 20:21:58 +1000 -Subject: Add Haiku support - - -diff --git a/src/gui/Main.cpp b/src/gui/Main.cpp -index 546433b..287c630 100644 ---- a/src/gui/Main.cpp -+++ b/src/gui/Main.cpp -@@ -398,7 +398,10 @@ static void signal_handler( int s ) - - int main( int argc, char *argv[] ) - { --#ifndef Q_OS_WIN -+#ifdef Q_OS_HAIKU -+ setenv("HOME", "/boot/home", 1); -+#endif -+#if !defined(Q_OS_WIN) && !defined(Q_OS_HAIKU) - const QString unixPath = "/../share/qmplay2"; - #else - const QString unixPath; -diff --git a/src/gui/MainWidget.cpp b/src/gui/MainWidget.cpp -index 41d9bb5..506f05d 100644 ---- a/src/gui/MainWidget.cpp -+++ b/src/gui/MainWidget.cpp -@@ -64,7 +64,11 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments ) - connect( QMPlay2GUI.pipe, SIGNAL( newConnection() ), this, SLOT( newConnection() ) ); - - SettingsWidget::InitSettings(); -+#ifdef Q_OS_HAIKU -+ QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", true ); -+#else - QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false ); -+#endif - - QMPlay2GUI.menubar = new MenuBar; - -diff --git a/src/gui/PlayClass.cpp b/src/gui/PlayClass.cpp -index 8e43aba..2ba9b32 100644 ---- a/src/gui/PlayClass.cpp -+++ b/src/gui/PlayClass.cpp -@@ -15,9 +15,11 @@ - #include - #include - -+#ifndef Q_OS_HAIKU - #if QT_VERSION >= 0x040800 - #define USE_QRAWFONT - #endif -+#endif - - #include - #ifdef USE_QRAWFONT -diff --git a/src/gui/gui.pro b/src/gui/gui.pro -index fd07c30..30464ee 100644 ---- a/src/gui/gui.pro -+++ b/src/gui/gui.pro -@@ -4,15 +4,19 @@ CONFIG -= app_bundle - - QT += network - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets --else:unix:!macx: PKGCONFIG += x11 -+else:unix:!macx:!haiku: PKGCONFIG += x11 - - TARGET = QMPlay2 - - win32: DESTDIR = ../../app -+haiku: DESTDIR = ../../app - else: DESTDIR = ../../app/bin - - win32: QMAKE_LIBDIR += ../../app --else { -+haiku { -+ QMAKE_LIBDIR += ../../app/lib -+ LIBS += -lfontconfig -lfreetype -lfribidi -+} else { - QMAKE_LIBDIR += ../../app/lib - LIBS += -lrt - } -diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro -index 75ed07c..01d083c 100644 ---- a/src/modules/AudioFilters/AudioFilters.pro -+++ b/src/modules/AudioFilters/AudioFilters.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/FFMpeg/FFMpeg.pro b/src/modules/FFMpeg/FFMpeg.pro -index b2ea141..75fe3d7 100644 ---- a/src/modules/FFMpeg/FFMpeg.pro -+++ b/src/modules/FFMpeg/FFMpeg.pro -@@ -5,13 +5,20 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - QT += network - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app - else: QMAKE_LIBDIR += ../../../app/lib - LIBS += -lqmplay2 - win32: LIBS += -lws2_32 -lavformat -lavcodec -lswscale -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavformat.a -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libswscale.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -+} else { - CONFIG += link_pkgconfig - PKGCONFIG += libavformat libavcodec libswscale libavutil - } -@@ -30,7 +37,7 @@ DEPENDPATH += . ../../qmplay2/headers - HEADERS += FFMpeg.hpp FFDemux.hpp FFDec.hpp FFDecSW.hpp FFReader.hpp FFCommon.hpp - SOURCES += FFMpeg.cpp FFDemux.cpp FFDec.cpp FFDecSW.cpp FFReader.cpp FFCommon.cpp - --unix:!macx { -+unix:!macx:!haiku { - #Common HWAccel - HEADERS += FFDecHWAccel.hpp HWAccelHelper.hpp - SOURCES += FFDecHWAccel.cpp HWAccelHelper.cpp -diff --git a/src/modules/Inputs/Inputs.pro b/src/modules/Inputs/Inputs.pro -index c021921..fc7b0c8 100644 ---- a/src/modules/Inputs/Inputs.pro -+++ b/src/modules/Inputs/Inputs.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/MediaKit/MediaKit.cpp b/src/modules/MediaKit/MediaKit.cpp -new file mode 100644 -index 0000000..1647325 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKit.cpp -@@ -0,0 +1,65 @@ -+#include -+#include -+ -+MediaKit::MediaKit() : -+ Module( "MediaKit" ) -+{ -+ moduleImg = QImage( ":/MediaKit" ); -+ -+ init( "WriterEnabled", true ); -+ init( "Delay", 0.2 ); -+} -+ -+QList< MediaKit::Info > MediaKit::getModulesInfo( const bool showDisabled ) const -+{ -+ QList< Info > modulesInfo; -+ if ( showDisabled || getBool( "WriterEnabled" ) ) -+ modulesInfo += Info( MediaKitWriterName, WRITER, QStringList( "audio" ) ); -+ return modulesInfo; -+} -+void *MediaKit::createInstance( const QString &name ) -+{ -+ if ( name == MediaKitWriterName && getBool( "WriterEnabled" ) ) -+ return new MediaKitWriter( *this ); -+ return NULL; -+} -+ -+MediaKit::SettingsWidget *MediaKit::getSettingsWidget() -+{ -+ return new ModuleSettingsWidget( *this ); -+} -+ -+QMPLAY2_EXPORT_PLUGIN( MediaKit ) -+ -+/**/ -+ -+#include -+#include -+#include -+#include -+ -+ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) : -+ Module::SettingsWidget( module ) -+{ -+ enabledB = new QCheckBox( tr( "Włączony" ) ); -+ enabledB->setChecked( sets().getBool( "WriterEnabled" ) ); -+ -+ QLabel *delayL = new QLabel( tr( "Opóźnienie" ) + ": " ); -+ -+ delayB = new QDoubleSpinBox; -+ delayB->setRange( 0.01, 1.0 ); -+ delayB->setSingleStep( 0.01 ); -+ delayB->setSuffix( " " + tr( "sek" ) ); -+ delayB->setValue( sets().getDouble( "Delay" ) ); -+ -+ QGridLayout *layout = new QGridLayout( this ); -+ layout->addWidget( enabledB, 0, 0, 1, 2 ); -+ layout->addWidget( delayL, 1, 0, 1, 1 ); -+ layout->addWidget( delayB, 1, 1, 1, 1 ); -+} -+ -+void ModuleSettingsWidget::saveSettings() -+{ -+ sets().set( "WriterEnabled", enabledB->isChecked() ); -+ sets().set( "Delay", delayB->value() ); -+} -diff --git a/src/modules/MediaKit/MediaKit.hpp b/src/modules/MediaKit/MediaKit.hpp -new file mode 100644 -index 0000000..16920f6 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKit.hpp -@@ -0,0 +1,31 @@ -+#include -+ -+class MediaKit : public Module -+{ -+public: -+ MediaKit(); -+private: -+ QList< Info > getModulesInfo( const bool ) const; -+ void *createInstance( const QString & ); -+ -+ SettingsWidget *getSettingsWidget(); -+}; -+ -+/**/ -+ -+#include -+ -+class QDoubleSpinBox; -+class QCheckBox; -+ -+class ModuleSettingsWidget : public Module::SettingsWidget -+{ -+ Q_DECLARE_TR_FUNCTIONS( ModuleSettingsWidget ) -+public: -+ ModuleSettingsWidget( Module & ); -+private: -+ void saveSettings(); -+ -+ QCheckBox *enabledB; -+ QDoubleSpinBox *delayB; -+}; -diff --git a/src/modules/MediaKit/MediaKit.png b/src/modules/MediaKit/MediaKit.png -new file mode 100644 -index 0000000000000000000000000000000000000000..36cb89c5e5200c5b613e4cf005b772df61aef49c -GIT binary patch -literal 5396 -zcmV+v73=DWP)1<6FprHd1$Uua_7y$_eS%QE%L=ndUbzGUafkzy0 -z5K$OpK;(=98j&Cv0xD}p1ci`D!UV`lmhMivtC#AkuH~(F{VCh!<^JyP-iCMN9eGFoKa2J^{{5-INx%uf9AG-o2*iOHPz16-C$JUR1Uv)0 -z4)}kA@xEmdz^TAZC=l{6+g{*0V8&Y=(EpYNq<~KVA46#xfD;$A^5ILDFn9KJCQhuS -zzCKB9Z8bI3Rd}AnvTQ8dp;&b2+@EIC=IuPZW*tvHy}tYk7x)k0TR_j@4D7E>Kojsq -z;8Q>qz(+1QgAXh{h52o>X_?hX#Lz(-ISj4huQu%3_az;jy{uXLdp`ZSn<^h#jB<}d -zlD`%Kao|h9SAx%6ckK!;Uj80tAJG(ak$+)GmEc7{QpGi}uRYB@_x*;ifAh}r!&d>f -zAId=g8U&nyGRqc#?_Pg77hZ5GGpD5(0r2_qmxfD}CP*dJJS!M~J$|69Pd;~nhVNkAO99{3!< -z)nB-fPyf@|Oq)6}04zcJNa@qHx0@X=ZDrdN>&b2Z(-^Nx;Z@HCq6oJOt+XZlX2Q{@ -zbNoeTan#9eM9e6lgC=!y+xItY!Fp%c{w2~#H;(L(~NB05zO -zotPmoghrK9VB*V9G2!uRxahXeGr74DG#v)|S@VNSIQKi@*i!t3*+GAc;4c8y0JXP& -z|1z#wxs=J1;vh?aO?qD^Pu#MG|Nhy}u=~4k>dt2S!f*4)30LyacX=3%D4#56~aH?@G>F)`q6JAYDAyWy@2W*m&o?cs@AhiR?T5YW_6!B)VKd -zcgZDf```sZQPTno5TFZcOr2`e7}EkG0WpTq&@`y(*v^Gj_t19Qe9#OS=x5*B%b9)! -zpz?&-z@CGFI9v<309Xa+k3D!5%a$IAh6R);W;6WpN5A8ZUq1qXck=agU3xuTP4gJ^ -zHS(^+@g!LfH4Q+hhJ?^SD1f@qh#5MjA&5tGOkH5=0z;_pgr=HTJCTm3x3lPEsU`+9 -zN^Q?JCRKOwn~exmD!uOQB;XX3*+(8*{g1r=jF!OU^W+Y6^Wyi{klVHqE!Ilp;}77T -zz8s=)Y)?{fCAKRmdJ@Bz6v{CYK+_ZfnnqM;L<|uU5H$o5QFZ~MM>LYA0zWwsp(d(R6H&n}rO;H6Aji~`9`w;PrF8*lBiMU>`w<}X -ziiAWQA>h1)VTZ+U2Lb;I%)fMb8!IlIgGLtoEOt6g&o7=J;-&Fte2(4^-GCFX#gh_U -z(=dca)XpbS>fZy9t@N* -zPVi>{pHHRWy04x%>Kj8b<+$>WYAvA*eCI@g-T? -zCzXhhvwa2)LE4ev2PmW*3XJ|}5_C-)W&R+MzK>f|4}K0b3xs;MsXpvQ5sjp;Gb!$qwR8rm -z3^FB;ld0u%hjK4 -zeNEFwn7`7#=lkeF1O#|09{{351SAiafF{(Emd{+#f-VL@ -zmhjU#@hvoRBy`b0= -zfOjigAT<5q_(Sa@C7$gl|3`wQzOS%=_~8=pMIip&Z?@6g=&SkOv*Cqp2n}`{EBS)H -z0ITFurLZpZQP_^M0+`-^F3_WSEa0= -zmE1~aHV{!kL}=7R1&(hpIT2xE-le8cPK^mkNN8|$m4=9FxF{;NnJ0r=Y2{DAG;kqu_e34x}Hh<2T -z?3A^k_I=;S^*n6XV`i)~$Vh##iU4GW2eJPP;CmTB7%lQguLUE%;q?KdWn{%B*|oySWLrnT^!%X -zwr%WUo`l`ck%b;a)@19%6L5U6JrB!vDA+cq9JLi>;QYA^0DZX-&)!2NU=c9qqsvpw -zo=IT-7QD6#G*~AtW1VJJ_-cjkdXV;2P)oT!gN`4%gXQ|zo@8oGgc?&PhRvjo7dR$j -zQ5#L+c^FevGr>BQPdplmQgV(YU%W<(?7ss+VX2vsWj2@8L -z1wii*0oxCifMo#Zystjcz6HH`7z9TX74inrS -zc0Y4Jsbm$-lqp!2MX{(%*Rm|6lsJyV;NT$HY?hv$9y&TYXm4+)>(5)LYG}psAaB{! -zckCo0_5dbioiLBsK4kbC4wZnV0P|Z>;H3i{fS%$N{iCcm;vgj{LE!&#L;@qjIV$bQ -z&>B2XGH7}9ba$bzyOUH+lp3>JO3MBL?b=4<2dB=d9v9o -z>2#WOI!$+XH(gy_^z`)LbnYfvm7+M128d6G1r4qSZj!Y&)e}6yebei7YUIqpR=xZZqCjoN+Ce}mfSH%QGbarb;Qf2DIe3hCxK~VF2iS7HizQmJ~ -zxG!;ii6bSp=hN(i<$JK$f@!lSGKsjRwk6y!>vigDf{J$mrF{){ -zcf&QS)b09uRS;-zZ;t}E0jG_JfH*)+RRA8qs70D3x0lUBaGP>5T#@369 -z`~vp%z|}uh-Qw|~6>v*S3%hph0yvLx5Ksh?mYpV1en+ed>Boq;<0~OXQ02a|*u^5W -z?;5l3xIkCPC(pl-8B@Nhz?Xmwpo8ndZEJ`6Rk~F3Eh}yyd&kq%*PtT46Tr|w3i!#Ruagj{xJtxF6Wm)`%+bFJWn;p -z^{8o{!=lf8?+}nL;Odn(v*U`dP!nUw@5^Hn@ZeK$)xQmY?D*r4r>?G!>gsCZ@i>NI -z;JRV8dQ@FtEIWA}*!$$OOz$`V)0$9uHhY+ss3Mgq(e1^`(8E%I3|R0hh(Jng&qGRy -z?Rv~OQV&(02(~@dszPE;g4Q&$tBF2 -zH;;}EwJ0cOmzhka+~uY55a0tp1-`N7aky$laMyVl5u3{ywcEJ2?^p#`As+?W3rxQZ -zT>8GM+_*l8qZZM6^?cI%c2VqZCzsEulDJU?iF$rFa~JQO`(t!-mojyO@@|M4nSjTh -zg{4;wAM~O{i#Ye(bHk#F5F%V$ZQHi3-0ks^U=MacVg|4SF!sI((;86hi_4JFW&FJT -z-Mmzs7~mfb-1j^jUk(9xTx{Q`P_nRWhmvJeC|L{?OIRff9GmYLJ2`LmBh)2+t3XFk -zDOo)Dtd0Tk;8U>tOQQ$8YSk(l8X6cF7@)tupRTSh_V3@%&Ye41yLK(8x?l?<0^z|D -zy8+bsnuQZ5z-bFpsx;~zk(Iljvnk?cily6Yb(00 -z4{L^Duwlc7aw>ci@L%J#0DwsZQFG1R@PYTDOwa@THZad+hkFK3rCZogNQN5sg623b -zCC61|YsaBrIoOUvqEz4l+0H4(D;%46jF_=LoX^7+sURQ%JG<3Xw`!CD!_7C}%)*5W -zF-;RKD5IB`(Ob4`Vdct|Wren&Qm0|^X8Qs?sD1UPmt798{^4?tYFeW>@i)WZW@bBg -zFgvlBZ1u_Pc8{TBu!aMr82y&OMk26CdO0SMp-Hqe)!0r`@@XR4meKR4huS0534@*M -z!K2T^6}Jta=KQyCl_B#}rEjYcsHgIFwvZQDHhXjlxoZY=Qd<`z(v -zD}f&Zyt@8+j+(L)@^`Djx~PSSjhdg!e_e*=>vEF}kL2ZF_kzBXA>WU{z8u{41l;(m -z(F1C2ZKbWPjTtj$(A3mKDwPVSKGQT2Lh#F9{*oJSyb)AEbW!jtqhvgbyY(m|{rex@ -z^%M(Ey^wkHKL$=cSZTFeT%MmjMo(KKxB2~ms3NM0Q({$o$iZMhh#mw&? -z9S*v&v5|&`hA_wXg5089Jn=jaUDwexjTc{hk*|I2YoIj#LEfY!4u^hD@IAoO<%`>H -z{b!baU=dRr>k+;Ub`c60)iV2`Zy#jSkn4it02D27(%^&R!Oje9>V&mh;l7HzsHLTa -zcsxFANjp*u!yu7JkVqt`udgSSO3~5L!Rpnk%iu2o9{fvy4(FicB;XsU*kAxGS+an0 -z&soHA$4sXwRZYw<5_K}ftO4|a4szXHWV*ZQ>+7SpH_i4g_}R;_zJ2(Mo12@%GS+y+ -zFbv}HI6??IIy%Zlj{#sg@WgoD@m5ZX&Hz3RtRN_)9)`S%s@uPTs@|H1LPEJ<8qD*c -z%>Bc>$zI?{c{>hE3)CT`#i-L*^H3*ClBhhc6tqrMHnttLSGS(wJ2vN{s<%;4ZV-t? -z!g4tb6->vd5)YuJx?4F&wEw>%ZNRe(pF`fP?FGILjNflY$lv<0%H_8-jR3Y9eGE_EB^yvNfC*>uwT*u0000 -+#include -+ -+MediaKitWriter::MediaKitWriter( Module &module ) : -+ err( false ) -+{ -+ addParam( "delay" ); -+ addParam( "chn" ); -+ addParam( "rate" ); -+ -+ SetModule( module ); -+} -+ -+bool MediaKitWriter::set() -+{ -+ if ( player.delay != sets().getDouble( "Delay" ) ) -+ { -+ player.delay = sets().getDouble( "Delay" ); -+ return false; -+ } -+ return sets().getBool( "WriterEnabled" ); -+} -+ -+bool MediaKitWriter::readyWrite() const -+{ -+ return !err && player.isOpen(); -+} -+ -+bool MediaKitWriter::processParams( bool * ) -+{ -+ bool resetAudio = false; -+ -+ uchar chn = getParam( "chn" ).toUInt(); -+ if ( player.channels != chn ) -+ { -+ resetAudio = true; -+ player.channels = chn; -+ } -+ uint rate = getParam( "rate" ).toUInt(); -+ if ( player.sample_rate != rate ) -+ { -+ resetAudio = true; -+ player.sample_rate = rate; -+ } -+ -+ if ( resetAudio || err ) -+ { -+ player.stop(); -+ err = !player.start(); -+ if ( !err ) -+ modParam( "delay", player.delay ); -+ else -+ QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Nie można otworzyć strumienia wyjścia dźwięku" ) ); -+ } -+ -+ return readyWrite(); -+} -+qint64 MediaKitWriter::write( const QByteArray &arr ) -+{ -+ if ( !arr.size() || !readyWrite() ) -+ return 0; -+ -+ err = !player.write( arr ); -+ if ( err ) -+ { -+ QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Błąd podczas odtwarzania" ) ); -+ return 0; -+ } -+ -+ return arr.size(); -+} -+ -+qint64 MediaKitWriter::size() const -+{ -+ return -1; -+} -+QString MediaKitWriter::name() const -+{ -+ return MediaKitWriterName; -+} -+ -+bool MediaKitWriter::open() -+{ -+ return player.isOK(); -+} -diff --git a/src/modules/MediaKit/MediaKitWriter.hpp b/src/modules/MediaKit/MediaKitWriter.hpp -new file mode 100644 -index 0000000..28fa249 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKitWriter.hpp -@@ -0,0 +1,30 @@ -+#include -+#include -+ -+#include -+ -+class MediaKitWriter : public Writer -+{ -+ Q_DECLARE_TR_FUNCTIONS( MediaKitWriter ) -+public: -+ MediaKitWriter( Module & ); -+private: -+ bool set(); -+ -+ bool readyWrite() const; -+ -+ bool processParams( bool *paramsCorrected ); -+ qint64 write( const QByteArray & ); -+ -+ qint64 size() const; -+ QString name() const; -+ -+ bool open(); -+ -+ /**/ -+ -+ SndPlayer player; -+ bool err; -+}; -+ -+#define MediaKitWriterName "MediaKit Writer" -diff --git a/src/modules/MediaKit/RingBuffer.cpp b/src/modules/MediaKit/RingBuffer.cpp -new file mode 100644 -index 0000000..915becc ---- /dev/null -+++ b/src/modules/MediaKit/RingBuffer.cpp -@@ -0,0 +1,129 @@ -+#include -+#include -+#include -+ -+#include "RingBuffer.hpp" -+ -+RingBuffer::RingBuffer( int size ) -+{ -+ initialized = false; -+ Buffer = new unsigned char[size]; -+ if(Buffer!=NULL) { -+ memset( Buffer, 0, size ); -+ BufferSize = size; -+ } else { -+ BufferSize = 0; -+ } -+ reader = 0; -+ writer = 0; -+ writeBytesAvailable = size; -+ if((locker=create_sem(1,"locker")) >= B_OK) { -+ initialized = true; -+ } else { -+ if(Buffer!=NULL) { -+ delete[] Buffer; -+ } -+ } -+} -+ -+RingBuffer::~RingBuffer( ) -+{ -+ if(initialized) { -+ delete[] Buffer; -+ delete_sem(locker); -+ } -+} -+ -+bool -+RingBuffer::Empty( void ) -+{ -+ memset( Buffer, 0, BufferSize ); -+ reader = 0; -+ writer = 0; -+ writeBytesAvailable = BufferSize; -+ return true; -+} -+ -+int -+RingBuffer::Read( unsigned char *data, int size ) -+{ -+ acquire_sem(locker); -+ -+ if( data == 0 || size <= 0 || writeBytesAvailable == BufferSize ) { -+ release_sem(locker); -+ return 0; -+ } -+ -+ int readBytesAvailable = BufferSize - writeBytesAvailable; -+ -+ if( size > readBytesAvailable ) { -+ size = readBytesAvailable; -+ } -+ -+ if(size > BufferSize - reader) { -+ int len = BufferSize - reader; -+ memcpy(data, Buffer + reader, len); -+ memcpy(data + len, Buffer, size-len); -+ } else { -+ memcpy(data, Buffer + reader, size); -+ } -+ -+ reader = (reader + size) % BufferSize; -+ writeBytesAvailable += size; -+ -+ release_sem(locker); -+ return size; -+} -+ -+int -+RingBuffer::Write( unsigned char *data, int size ) -+{ -+ acquire_sem(locker); -+ -+ if( data == 0 || size <= 0 || writeBytesAvailable == 0 ) { -+ release_sem(locker); -+ return 0; -+ } -+ -+ if( size > writeBytesAvailable ) { -+ size = writeBytesAvailable; -+ } -+ -+ if(size > BufferSize - writer) { -+ int len = BufferSize - writer; -+ memcpy(Buffer + writer, data, len); -+ memcpy(Buffer, data+len, size-len); -+ } else { -+ memcpy(Buffer + writer, data, size); -+ } -+ -+ writer = (writer + size) % BufferSize; -+ writeBytesAvailable -= size; -+ -+ release_sem(locker); -+ return size; -+} -+ -+int -+RingBuffer::GetSize( void ) -+{ -+ return BufferSize; -+} -+ -+int -+RingBuffer::GetWriteAvailable( void ) -+{ -+ return writeBytesAvailable; -+} -+ -+int -+RingBuffer::GetReadAvailable( void ) -+{ -+ return BufferSize - writeBytesAvailable; -+} -+ -+status_t -+RingBuffer::InitCheck( void ) -+{ -+ return initialized?B_OK:B_ERROR; -+} -diff --git a/src/modules/MediaKit/RingBuffer.hpp b/src/modules/MediaKit/RingBuffer.hpp -new file mode 100644 -index 0000000..4715632 ---- /dev/null -+++ b/src/modules/MediaKit/RingBuffer.hpp -@@ -0,0 +1,31 @@ -+#ifndef __RING_BUFFER_H__ -+#define __RING_BUFFER_H__ -+ -+#include -+ -+class RingBuffer { -+ -+public: -+ RingBuffer(int size); -+ ~RingBuffer(); -+ int Read( unsigned char* dataPtr, int numBytes ); -+ int Write( unsigned char *dataPtr, int numBytes ); -+ -+ bool Empty( void ); -+ int GetSize( ); -+ int GetWriteAvailable( ); -+ int GetReadAvailable( ); -+ status_t InitCheck( ); -+private: -+ unsigned char *Buffer; -+ int BufferSize; -+ int reader; -+ int writer; -+ int writeBytesAvailable; -+ -+ sem_id locker; -+ -+ bool initialized; -+}; -+ -+#endif -diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp -new file mode 100644 -index 0000000..7926fb3 ---- /dev/null -+++ b/src/modules/MediaKit/SndPlayer.cpp -@@ -0,0 +1,114 @@ -+#include -+ -+#include -+#include -+#include -+#include -+ -+ -+static void proc(void *cookie, void *buffer, size_t len, const media_raw_audio_format &format) -+{ -+ RingBuffer *ring = (RingBuffer*)cookie; -+ unsigned char* ptr = (unsigned char*)buffer; -+ -+ int readed = ring->Read(ptr,len); -+ -+ if(readed InitCheck() != B_OK) { -+ delete ring; ring = 0; -+ return false; -+ } -+ -+ player = new BSoundPlayer(&form, "QMPlay2_BSoundPlayer", proc, NULL, (void*)ring); -+ -+ if(player->InitCheck() != B_OK) { -+ delete player; -+ player = NULL; -+ return false; -+ } -+ -+ player->Start(); -+ player->SetHasData(true); -+ -+ _isOK = true; -+ -+ return player; -+} -+void SndPlayer::stop() -+{ -+ if ( player ) -+ { -+ if(player) { -+ player->Stop(); -+ delete player; -+ delete ring; -+ } -+ -+ player = NULL; -+ ring = NULL; -+ } -+} -+ -+double SndPlayer::getLatency() -+{ -+ double lat = player->Latency() / (ring->GetSize()*4.0); -+ -+ return lat; -+} -+ -+bool SndPlayer::write( const QByteArray &arr ) -+{ -+ int s = arr.size(); -+ while ( s > 0 && s % 4 ) -+ s--; -+ if ( s <= 0 ) -+ return false; -+ -+ int len=s; -+ -+ unsigned char *src_ptr = (unsigned char *)arr.data(); -+ -+ float *src = (float*)arr.data(); -+ float *dst = (float*)malloc(len*sizeof(float)); -+ float *dptr = dst; -+ -+ memcpy(dst,src,len); -+ -+ unsigned char *dst_ptr = (unsigned char *)dst; -+ -+ for(;;) { -+ int len2 = ring->Write(dst_ptr,len); -+ if(len2==len)break; -+ len-=len2; -+ dst_ptr+=len2; -+ snooze(10); -+ } -+ -+ if(dst!=NULL) -+ free(dst); -+ -+ return true; -+} -diff --git a/src/modules/MediaKit/SndPlayer.hpp b/src/modules/MediaKit/SndPlayer.hpp -new file mode 100644 -index 0000000..b0ca8c2 ---- /dev/null -+++ b/src/modules/MediaKit/SndPlayer.hpp -@@ -0,0 +1,49 @@ -+#ifndef PULSE_HPP -+#define PULSE_HPP -+ -+#include -+ -+#include -+ -+#include -+#include -+#include -+ -+#include "RingBuffer.hpp" -+ -+class SndPlayer -+{ -+public: -+ SndPlayer(); -+ inline ~SndPlayer() -+ { -+ stop(); -+ } -+ -+ inline bool isOK() const -+ { -+ return _isOK; -+ } -+ inline bool isOpen() const -+ { -+ return player; -+ } -+ -+ bool start(); -+ void stop(); -+ -+ double getLatency(); -+ -+ bool write( const QByteArray & ); -+ -+ double delay; -+ uchar channels; -+ uint sample_rate; -+ -+private: -+ bool _isOK; -+ BSoundPlayer *player; -+ RingBuffer *ring; -+}; -+ -+#endif -diff --git a/src/modules/MediaKit/icon.qrc b/src/modules/MediaKit/icon.qrc -new file mode 100644 -index 0000000..24b4ebd ---- /dev/null -+++ b/src/modules/MediaKit/icon.qrc -@@ -0,0 +1,3 @@ -+ -+ MediaKit.png -+ -diff --git a/src/modules/Modplug/Modplug.pro b/src/modules/Modplug/Modplug.pro -index ac024e0..0236514 100644 ---- a/src/modules/Modplug/Modplug.pro -+++ b/src/modules/Modplug/Modplug.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/Playlists/Playlists.pro b/src/modules/Playlists/Playlists.pro -index 7518cc2..16bf849 100644 ---- a/src/modules/Playlists/Playlists.pro -+++ b/src/modules/Playlists/Playlists.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/QPainter/QPainter.pro b/src/modules/QPainter/QPainter.pro -index b499b8b..b1c0790 100644 ---- a/src/modules/QPainter/QPainter.pro -+++ b/src/modules/QPainter/QPainter.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/QPainter/QPainterWriter.cpp b/src/modules/QPainter/QPainterWriter.cpp -index 915f6f1..ddc070f 100644 ---- a/src/modules/QPainter/QPainterWriter.cpp -+++ b/src/modules/QPainter/QPainterWriter.cpp -@@ -15,7 +15,11 @@ Drawable::Drawable( QPainterWriter &writer ) : - { - setAutoFillBackground( true ); - setMouseTracking( true ); -+#ifdef Q_OS_HAIKU -+ setPalette( Qt::black ); -+#endif - } -+ - Drawable::~Drawable() - { - clr(); -diff --git a/src/modules/Subtitles/Subtitles.pro b/src/modules/Subtitles/Subtitles.pro -index 49ac705..8ee5d43 100644 ---- a/src/modules/Subtitles/Subtitles.pro -+++ b/src/modules/Subtitles/Subtitles.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/VideoFilters/VideoFilters.pro b/src/modules/VideoFilters/VideoFilters.pro -index 4996c37..8242a9c 100644 ---- a/src/modules/VideoFilters/VideoFilters.pro -+++ b/src/modules/VideoFilters/VideoFilters.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro -index 8faac93..7d3b946 100644 ---- a/src/modules/Visualizations/Visualizations.pro -+++ b/src/modules/Visualizations/Visualizations.pro -@@ -4,6 +4,7 @@ CONFIG += plugin - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app -diff --git a/src/modules/modules.pro b/src/modules/modules.pro -index 4851ba2..802281c 100644 ---- a/src/modules/modules.pro -+++ b/src/modules/modules.pro -@@ -1,8 +1,10 @@ - TEMPLATE = subdirs --SUBDIRS = FFMpeg Inputs Modplug Playlists Subtitles QPainter Extensions Visualizations AudioFilters VideoFilters OpenGL -+SUBDIRS = FFMpeg Inputs Modplug Playlists Subtitles QPainter Extensions Visualizations AudioFilters VideoFilters -+!haiku: SUBDIRS += OpenGL - linux*: SUBDIRS += ALSA -+haiku: SUBDIRS += MediaKit - else: SUBDIRS += PortAudio --unix:!macx { -+unix:!macx:!haiku { - !greaterThan(QT_MAJOR_VERSION, 4)|qtHaveModule(x11extras): SUBDIRS += XVideo - packagesExist(libpulse-simple): SUBDIRS += PulseAudio - } -diff --git a/src/qmplay2/qmplay2.pro b/src/qmplay2/qmplay2.pro -index bc0ac7c..a7cc9d2 100644 ---- a/src/qmplay2/qmplay2.pro -+++ b/src/qmplay2/qmplay2.pro -@@ -8,7 +8,9 @@ win32: DESTDIR = ../../app - else: DESTDIR = ../../app/lib - - win32: LIBS += -lswscale -lswresample -lavutil -Wl,-Bstatic -lass -lfontconfig -lexpat -lfreetype -lfribidi -Wl,-Bdynamic -lwinmm -lshell32 --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libswscale.a /boot/system/develop/lib/x86/libswresample.a /boot/system/develop/lib/x86/libavutil.a -lass -+} else { - CONFIG += link_pkgconfig - PKGCONFIG += libswscale libswresample libavutil libass - } --- -2.2.2 - - -From 9806e524e5618a6d07286fdf991321a7690d6bd1 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Sun, 31 May 2015 20:42:24 +1000 -Subject: Fix Extensions module path - - -diff --git a/src/modules/Extensions/Extensions.pro b/src/modules/Extensions/Extensions.pro -index fba08a3..33457bd 100644 ---- a/src/modules/Extensions/Extensions.pro -+++ b/src/modules/Extensions/Extensions.pro -@@ -5,6 +5,7 @@ QT += network - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - - win32: DESTDIR = ../../../app/modules -+haiku: DESTDIR = ../../../app/modules - else: DESTDIR = ../../../app/share/qmplay2/modules - - win32: QMAKE_LIBDIR += ../../../app --- -2.2.2 - - -From 4292d4c538bbc94436a36dc031e3fb379e9ac219 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Sun, 31 May 2015 21:26:57 +1000 -Subject: Add haiku resources - - -diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef -new file mode 100644 -index 0000000..c23d039 ---- /dev/null -+++ b/haiku/QMPlay2.rdef -@@ -0,0 +1,42 @@ -+resource app_signature "application/x-vnd.QMPlay2"; -+resource app_flags B_SINGLE_LAUNCH; -+resource app_version { -+ major = 15, -+ middle = 05, -+ minor = 30, -+ -+ /* Application "variety" can be set to one of the following: -+ * B_APPV_DEVELOPMENT, -+ * B_APPV_ALPHA, -+ * B_APPV_BETA, -+ * B_APPV_GAMMA, -+ * B_APPV_GOLDEN_MASTER, -+ * B_APPV_FINAL -+ */ -+ variety = B_APPV_DEVELOPMENT, -+ internal = 0, -+ -+ short_info = "QMPlay2", -+ long_info = "QMPlay2 © 2010-2015 Błażej Szczygieł" -+}; -+ -+resource file_types message { -+ "types" = "video", -+ "types" = "audio" -+}; -+ -+resource vector_icon array { -+ $"6E63696602012C165AF20314D77803000DB4D0B47BB4D0B47BB5A4B493B717B5" -+ $"6DB659B515BCBFB846C814BDF0C26CBB17C8CEBE53CA3FBF23C99BBE9CCA9ABF" -+ $"6BCA35C053CA92C00FC985C0E0C7E7C196C8ADC12DC276C452B78EC9BFBD01C7" -+ $"06B6C1CA20B523CAD9B601CAA4B4ACCAF9B426CA1EB421CA9DB41FC965B46DC7" -+ $"FBB44EC8B0B561C2E0B4A9B879B57FBD9BB485B770B428B55FB438B66BB41CB4" -+ $"F6B4D0B47BB466B48CB4D0B47B0209B627B6EDB6A3B714B640B838B6A7BACAB6" -+ $"89B97FB6F3BD1FB6E1C1D3B6F0BF7BB6D1C408B623C864B659C633B71AC816B8" -+ $"DBC716B7F4C787BC65C561C369C1D7BFF0C3ADC4D7C11DC7BDBFBFC64EC075C7" -+ $"1DBF3FC5A7BE96C65EBEEFC0EEBC47B790B783BC40B9E3B71CB7480209B627B6" -+ $"EDB640B838B6A3B714B790B783B71CB748BC40B9E3C5A7BE96C0EEBC47C65EBE" -+ $"EFC7BDBFBFC71DBF3FC64EC075C369C1D7C4D7C11DBFF0C3ADB8DBC716BC65C5" -+ $"61B7F4C787B623C864B71AC816B659C633B6E1C1D3B6D1C408B6F0BF7BB6A7BA" -+ $"CAB6F3BD1FB689B97F020A00020001000A01010200" -+}; --- -2.2.2 - - -From a9ecc01978f198ad496868ab283f9a97f9bba986 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 1 Jun 2015 20:19:40 +1000 -Subject: Optimize mediakit writer - - -diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp -index 7926fb3..ca7ad89 100644 ---- a/src/modules/MediaKit/SndPlayer.cpp -+++ b/src/modules/MediaKit/SndPlayer.cpp -@@ -91,24 +91,13 @@ bool SndPlayer::write( const QByteArray &arr ) - - unsigned char *src_ptr = (unsigned char *)arr.data(); - -- float *src = (float*)arr.data(); -- float *dst = (float*)malloc(len*sizeof(float)); -- float *dptr = dst; -- -- memcpy(dst,src,len); -- -- unsigned char *dst_ptr = (unsigned char *)dst; -- - for(;;) { -- int len2 = ring->Write(dst_ptr,len); -- if(len2==len)break; -- len-=len2; -- dst_ptr+=len2; -- snooze(10); -+ int len2 = ring->Write(src_ptr,len); -+ if(len2 == len)break; -+ len -= len2; -+ src_ptr += len2; -+ snooze(100); - } - -- if(dst!=NULL) -- free(dst); -- - return true; - } --- -2.2.2 - - -From 6a88fc2723e21f6dce0f20637f29e776fff1696a Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 1 Jun 2015 20:24:04 +1000 -Subject: Fix flags - - -diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef -index c23d039..897f42c 100644 ---- a/haiku/QMPlay2.rdef -+++ b/haiku/QMPlay2.rdef -@@ -1,5 +1,5 @@ - resource app_signature "application/x-vnd.QMPlay2"; --resource app_flags B_SINGLE_LAUNCH; -+resource app_flags B_MULTIPLE_LAUNCH | B_ARGV_ONLY; - resource app_version { - major = 15, - middle = 05, --- -2.2.2 - - -From 78d5b833eda42e452d9c7aec5735ef7ddbaab053 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 1 Jun 2015 20:33:23 +1000 -Subject: Fix flags again - - -diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef -index 897f42c..f41469d 100644 ---- a/haiku/QMPlay2.rdef -+++ b/haiku/QMPlay2.rdef -@@ -1,5 +1,5 @@ - resource app_signature "application/x-vnd.QMPlay2"; --resource app_flags B_MULTIPLE_LAUNCH | B_ARGV_ONLY; -+resource app_flags B_MULTIPLE_LAUNCH; - resource app_version { - major = 15, - middle = 05, --- -2.2.2 - - -From 34ed2a733d44e8e18d05d553a814a3d393a451cf Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 1 Jun 2015 22:58:04 +1000 -Subject: Change default settings for haiku - - -diff --git a/src/gui/MainWidget.cpp b/src/gui/MainWidget.cpp -index 506f05d..71aad7f 100644 ---- a/src/gui/MainWidget.cpp -+++ b/src/gui/MainWidget.cpp -@@ -66,7 +66,7 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments ) - SettingsWidget::InitSettings(); - #ifdef Q_OS_HAIKU - QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", true ); --#else -+#else - QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false ); - #endif - -@@ -254,7 +254,16 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments ) - if ( QMPlay2Core.getSettings().getBool( "AutoUpdates" ) ) - updater.downloadUpdate(); - #endif -+#ifdef Q_OS_HAIKU -+ if ( !QMPlay2Core.getSettings().contains( "MainWidget/DockWidgetState" )) -+ { -+ hideAllExtensions(); -+ infoDock->hide(); -+ playlistDock->hide(); -+ } -+#endif - } -+ - MainWidget::~MainWidget() - { - QMPlay2Extensions::closeExtensions(); --- -2.2.2 - - -From 49bb67b67e05a360fafdb938b5e1f66bb07c30a2 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Tue, 2 Jun 2015 20:07:18 +1000 -Subject: Add haiku styled icons - - -diff --git a/src/gui/Icons/haiku/application-exit.png b/src/gui/Icons/haiku/application-exit.png -new file mode 100644 -index 0000000000000000000000000000000000000000..e31424063dca547e6e7859a465d7a9a572c6fba0 -GIT binary patch -literal 571 -zcmV-B0>u4^P)7{-6<=$P(0CM08SP@)vhp|;vXhc1P|9uzus?NS}=+GU9)x&+&wlMxFYA~x8i -zz>r{TA#g835H$zsGN2QsT{2{YbxE4}rh~GpX>Gmm@WI2wkLUfq&jm<{L?Rguhtt7e -zP?Kdj?RL9Gtya5Xnr59{M#|-K&+_^Fc~w=3Mx#U`5ekI@mSr6?P4gb`qn~{NbVdM* -zq9ik!%#i6g4nP`sG+-Yb2XH%%_J_1n*lnUcwS07(cj7I0F93m0dY4EO->DPHyj -zH#vSybIniiZgRz#ePXaC0a%s=K&ezh(=>z-_`_}vo%W-IygTG>3!el>FUPprZogVL -zS_g(!$Y!(K4eTw!M*Rz7q6hGJB|B%S(v^w -zg|XUYX{q&iL8k;%B*$^a0$Ku|>O0=-DfqD5-rtw^GKaRK>zdtVPG#1>FXPy1J>UFzW^lr0lNaC-hnbajz<9-eD9oOIVewG5E`#vqzfU|_jZXSkt7&K@C1Qj -zt)O&^KzC65@$WbivLy^S?gLtYWib+= -zh(n_&M`>&C{cXT_!MrN{HYayt;3eQ!@vRp;W^mhLz&{Oa^Fj6=T-}rw -z=ez=z14x0CGbeYOOH0)^$i_awJkIYmGw~XE-224r6i%4nt2FczUSa`5LWO$Ft|1R8$%ofiX!} -zSKld%)sd@7TM(O?nnYoK3ZI&)XfqAMm;(Yg!SjYwB_G+fLq~UaFXD4E>Qt@T_^{(j -zs7Qw|T{wJnQ-O{Mc{m-NHezEH1Oq?l?{~3cc`{C?i`K?-BrjP;O}*87`t039p&~tf -zcKfL_S~ifUP|YP}@hl?3M`-VOOV*0n_y{5IznhU&`AX82z^(}Qu -z(QvU$1iUAN2%Ho_-*Hh{zDB5%l+8fQq!xxSRexZm7&7k==TGE`ccw$4wtAxgs{ioj -zpQK-{FBkjvZtww*fd(M*f5X360we-az`Va5{RCt;2Gued_6q<2002ovPDHLkV1j!& -BK(PP- - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/applications-multimedia.png b/src/gui/Icons/haiku/applications-multimedia.png -new file mode 100644 -index 0000000000000000000000000000000000000000..dd0dbe7771f028dbd215f59c353c25d41dd798e4 -GIT binary patch -literal 604 -zcmV-i0;BzjP)zz#-{Yp>RvU -zNCXQvBx6cF5Dw)|a8OC}%PH;9ra?+d@}|e*^FHw4ec@>(0}0?QFbCjz0GtCNf8bYu -zlF4L>p-|}A;^HFxejiQKJ^-I2zzt*o1&FV$t-V=ZUXCp-E#dWg@pwE)lEh>(A(cuo -z91hVm4M4pUyx-p5{u~O0n4g~q!0-37zP?Vg*<^Kf6;)NKR;!FgBZ|c$KA#Uw)1rV^ -z0?hGvjL+wzR4O6MGL=e&TrS7X&JKr%hd7QyJRWC%f1k6nGc3#M0pEZZF5r1I8vT*a -z=jn7h?CtH*Znrr&IACLAgIcZD1;)S#7y<*}2KWjbNx)4Y5I|8BOw+`+ZQO1*ySuw= -zZEc~d>dQzZLMoNw`1qL3%}oHx<#MsrYJHglkY$-(uScm=A{-9W?RH70(_CI&Vp$e` -zzn_zn6BZU0ux*=awaWGNwF?Ni01}DB&uljPq=#rU8sh5e>a_$golc3xVknC8sAXN( -zIXyiEKmwRdCR|)xU|H6q1g2^J?Ii%maadVdA(>3hfWcsp>2%6qFqoOQS}p4J`n}-x -z_7+{&v2A+>EEEa|AvixjpP3tmfe_+eAcVj$3=G4V0UgId2!XEa51w-uCM_5YzWdMF -q|5U%5v8y=p4otjpOK%huqrKFMJQr^X2p7$MfZZG&Mo<1*qo;Il*!b -z?x>J`RE`^Nedz5KuR1zJBeWfaAG%yWJ^lUSzQf^B!I;eCBz(88@5x1%i&GU9b?{EGViHyWxS8jsldp$kl=WA;bx{hIIhl;W? -z@^W(ATMG-J*1Ec}o9*q^0!2aSI%Y+|Sy@@KF+bn%ITjl^7K7DLFo^DOAj@)U?aTG` -zlroyds$hw=-S#;0KR0@ -z=mblrs?NHrs;uTj0Ah53&l-ht@+_sVV{2cQw!o`RSI@fgH8cmPyqd?po)w_*A^yiSLcYJ|2v@E-}M -kNd`_Igws?E*wZim0>XVu{OgotQUCw|07*qoM6N<$f{L_Dod5s; - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/audio-volume-muted.png b/src/gui/Icons/haiku/audio-volume-muted.png -new file mode 100644 -index 0000000000000000000000000000000000000000..a0a7176b3ff8365c4827db7a69906fafb6fcb63b -GIT binary patch -literal 505 -zcmV73_$&U3y!z(0aME6_CUS2#VFiv?6wz3)AUX0sWqR4PoCW%lz~yWM8pZkK7A#sYx=`u#q}<1u>> -zjYcC@tJN@_PM>z-^ZB4C3J!+@L{Wrc7?{uJR!7-vmMMzD>h(HyyB&xKL{@y&YL!hU -z6Xx-FV45aWRfQl3AR??*D@#N~=yW=`Uaxn_d(nEmMz7a{%jE(QVYytwZnuMopzAsS -z;LDrnBhKgZ{beG;@py#IW&;tyFpSql?>qd}`X!Ou?S>!-_sd?d7q{CDL$x)M~XTpU+dVScKp22gh;XIBPOWr4q$r -zF*==2;CUX2L;~CG797VR6bf0QH&Uq-6$%AJqtU0|-S79v<#I?SleF1v;B-0>i9|k( -vTQX-u0IKf!}}v6BXIzoP4V2^T-9+L%49M$KR;jRoIh?Sews)m$aP&x -zrBY;?rZ7#ju(q~F#bS|~NG6lSIe&Ah*f-e7iO_HVDAXZEXht -zSeEtv`1lx7N=PZ8C<>&MXfztFo|F>RY88wz+3pECP16)Y2&&a;WZO0^EiF+f6w0iu -ztWcp)pjxd)r>Cc67{+G+>KzBuGz&rq5<<}8;v#99_6k6NbN*s|eVv35sj<>h5^U6;z`GKE5+41hrMetLR3>$)yA%eHM=SXdy&*ieV2X<8%_Ig3Oh -zt<1q-Q0JWA0|3tXqlt-$!A7HjW_5LSK~+^aj`L6*9v*&Ynr2ULZ!dh`2LME)QK+i= -zDV0i{kB^TJPEAe0_kBnyQK?i=EEaKebo3QKRV|mxyS8mV@9XPpMe6SEMm!!zJRTox -z_FUIRB9Xx1;o;u(_4W5ssdNq?uQ0}XW@l$Bqobo8`FtLp=V5Yk5(5JRP!t6K;QKyS -zS68vUz5OCnqOl7{(5OXYF>N -z9n@GX_AQso(bd%z9UL6c*x1+y01xgg&|eIslrru6{>yYajjgS%%ZrPPy;7;P3!rhE -qsQhaT#+dFn4hK*LkOy$~C+8<#rGy~Ene~nU0000b - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/document-properties.png b/src/gui/Icons/haiku/document-properties.png -new file mode 100644 -index 0000000000000000000000000000000000000000..8cda3b0783655e312034c6c75de796b6eb52b9e5 -GIT binary patch -literal 510 -zcmVF`12xH9T){f@=Y`{f*7db!1tg -zR4Soq8m9S$X7l^afMDnS{cRQ&X0fa@Y}=;O>EOCQXtmlmdk{1z7JGo>I24OTB9RE~ -zcAIQA%fZ1el9U|%gna%vy1quWTBTB{(Cv1~<#LRV-=`^#P2Vaq%g^3nu&?WM5FgOJ^e%~l_DOG -zqbN$!FpOHG(Ks3Ujeexl8qH>edc95}k)Tj0peV{BApJG*@bELe-sJ@gN{BnGtZZQz -z2Bv9ZS=KQS3aqYrA1DNUxlXFeBfxbW=L2x^3yI(Y`AbC3(f|Me07*qoM6N<$f>rqJ -Aga7~l - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/edit-clear.png b/src/gui/Icons/haiku/edit-clear.png -new file mode 100644 -index 0000000000000000000000000000000000000000..6c4b83b7ac6e451f461973dac0c9a6c53dedef25 -GIT binary patch -literal 644 -zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M -z2FBeW%xLxI@gtz1WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~*(*`Bv~l~6?FSDYJaY8Nv17;1UpRl|%9VTf?mc|? -z@cHxSFJHcV_3G8zw{Jgu`0)Aj=PzHr{QC9l_wV0-{`@KR`o0Pn77`^ve!&d#@_Ksq -z_8}pusXI=cy7Kht(+?kh{P_EqYvr0*Ks9qcT^vIsBJkEM|1so -z>*;dxIy;s3ojI&$kq&AP_I<(sjr3^IxrAi1R(@MB=kZ1RzVQB -zDO3ub#mKn2>M*2Cnt?_#&dqt>`?i>m=FUfS;N|6Tp65Bwd9<+`L~chJ(?Fv|{W@lU -z@(s_L4qrcD`snMrat?P}zTCo`x^{tE&G;rjTUQrK7ASnrGysB^Z=(A;0M51)fD_CP -zKmIc%%<`8kAD8zKQlgpL6p!+RhMqhR4e_)>Os6;B+V+dds(^G(a1M3=SXtR&=JEXo -zGqugc#QZ(m=4Dktx7x8fI{{F-h7hp0xQ1=#JSsgsrx_i+j#2=$mj#L_Ara0Y0B%tr -z1jOS5#Nz`EcMAcoTbBX4iC*qB1Ehqdr4$<*-#p~;@dQ4fRdGPo0jTm1N-2bZSZt73 -zZ16uFxJ6u%F9}GA5U{$sPBy#eA$NBN85z0S=)ejDu>$7-umX9cglO~<{rwl~_G?I4 -zyLwre87lE;+lUo1CkF9RH(-cLcqW -zNSJUqf)?g~M#VOSW3_W;)|y}As%mC0;>n3|gJYc{J?GMWBd -jN~CpN0sQ|G0k-}CTM^nm*fBId00000NkvXXu0mjff6Msz - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/edit-find.png b/src/gui/Icons/haiku/edit-find.png -new file mode 100644 -index 0000000000000000000000000000000000000000..380b9e7af2af4b4a15281c82973201fddbd86be1 -GIT binary patch -literal 636 -zcmV-?0)zdDP)I!l-F01rbG37j`CNRj>*!+=(C}T?&F5x2^`}FVG791ug?_ -zs>|6FkuU>7SArn@&_(m=o6y=g`M7UfH0`9tXLIkvdG6t!bMKk)q$>CfdHjp*$qFCi -z#mW8$JiItGGez*p*4EZ{)oRtj!GUJ8`8mFYMx!y_*w`=}4sCC5x9~pxhG>dl*y(gY -zx7&s41<>pDwA*bV1PEC8KZ16v)lw)F^!xn*{zM7my}i9wnx=R9{XV4l=emTq8;!<; -zwY4?*d|s#1aeRC%%QCrKP8`RUmzTle;h~+Ko$v91iD6b(SASk#UoVfxV<7~+UeC$N -ziSc+W%Q8_EiQ`xZLAhKO$MH)?M@J9wTZF>={QRxKU~s7=O;fwOyId%H0bj -zNs@2yHBM1RT&Yxk@#NVbCrNS-%?MeoR=c~hvI0T~k|cQ(_wg6n_;hJ$DJm9=pxf=< -zNRp(A-*b4aR4N$^1_pzH5Q18*_9~vAy6!u;oXO|&oM)pD;SF3dX>M)~?%)wrDwU5$ -zqmj{QH0{C5xE0|nP1EZR!&6h9oZ{v+{4o|UzVchBVLa)B^DO){>2Equ;B6;>vNKh;mhpcL#v1Hr;@PTWNkE#dT`P*-R&~P0`7t$ts -z7hA;RLmXzlv$?(wKr)#m5{Y0K!_;bBXlFYhe|{y;7;vODRqRKd@o|$_%)m5F3WY*T -zGZYG8+xJXQ&+seXjdI%dEr6GuXgJnx|H0Z=ti$_;sy -zl+Pn{`h|cfa<%t^i`}3%0hk%Q=Je(bpbmE@r&Yda8Q*4rKfj?|q1-%oH3dds4(R_U -g0k{L}77l@{CuNPnvBL105C8xG07*qoM6N<$g2w37;s5{u - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/folder-new.png b/src/gui/Icons/haiku/folder-new.png -new file mode 100644 -index 0000000000000000000000000000000000000000..c2b66d07ba6a5ee3a381edc9e5978d25eaace068 -GIT binary patch -literal 415 -zcmV;Q0bu@#P)I*gW_WKS)SATsptKAKX3TwXevir!)%U^v7*&Or3B~a>@Qz23zP(4 -z+=FMv%c=(QM}jsq%Divld#{w?<`O^91w07AU`OA=*j!VnrLFoGFUeos(p>hzl@ma~ -zjUO& -zZ{&pd;k`1zmP)ZRlAT%$vnV}nOipjKqSYtVUjS|oq|*^*Skk$~z4i7QY;ZYh0_30L -z!~jVbiGIFDXsBzf36P1tEif$3Lk}+_rr&|VC@Bx?- -zGl&^aV6UM;E(!SpX&@`%1o6`g_S&!MRs|HHxEtmO$g0OynJ@D1chhn!4bA`n002ov -JPDHLkV1h9Ey)Xa( - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/folder-open.png b/src/gui/Icons/haiku/folder-open.png -new file mode 100644 -index 0000000000000000000000000000000000000000..c8852c4f18e74b95f050b8849f6f0a983c1001e9 -GIT binary patch -literal 404 -zcmV;F0c-w=P)ANwC~2~$f*>fOl3FX8qrs)IDd-cl1nq6o?$YKGy^Pu?$f3;4 -zYrb@^Uc6VY4GA?E{H13*aL)5P=fFQvWSTBkIZJGEqIjX#g-nL4;|C6bt^i0xiSEsE -zs(=`fpscKuoZJ4cdoE<}nFpqUCjqcDNn$t2Q6xHe1Me@b;(>sl5HJG$#4#TcH2^+U -z<{$`%i2yzT5rYv;B`$nmTXKRxkkEpLmeWB=ZE5M{gS8#G(H}k@^X#AJriAP2?#xCU -zukZ{dXqD=;VNn=u3XbuKHz@glKJ9W99V}rwyxEO1s_Gv~&?uG-peY(QMZ59>{($sw -z*Ksi`g$B?PwKhe&@(L59(gNG;;JDa8Q&cTVb}bKC4=|+GnB@4X@OY* -ytAhcw#GQ_QeM?Hq5|b4;;9TC223pdofAIw=#(1xH5-_#^0000Aj>j=K!8kI$2T@G2rL4a$^s+r?sv;=?VWW1x?aL4Y3SO|jU+)pmXpNd -zNftw&0D3BeWXPdF-csLku+DC$n9HFm3PmMLF}s3VP%wRq;twqGe&m&*DDp9&RGGx_ -zsW(q2VuAUijxF27f~rznNmE$KpyhH%X_@J%Z+N{AuLF<%7G=NuC3xlS*Xx8)K^Yq02Mtf_6Xo5AO#^Zq-A>bKM -zUH*knf8hTH2{^gK*=ckgK4FxtI|MZTV!%Ja4)g;%D~Ue<1kgcos@_l`00000NkvXX -Hu0mjfdSXb` - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/folder.png b/src/gui/Icons/haiku/folder.png -new file mode 100644 -index 0000000000000000000000000000000000000000..003526358554ceec271bd7cc6600c84ccb76cadb -GIT binary patch -literal 723 -zcmV;^0xbQBP)92->w6h!#SNpnXEil2&4ih@cdD81^tx -ziryKh)nwDdN9s5_>Wtob=pA*Ohj-@w+svY@XweT2oU`~2hwpswpBPuoHXsHR15bcT -zzzi&=s|YAb_elT=Coin+h31#N;TCLVkMysIS0pY19n~4cd8);!ehkzPO=QMWSDdi;+IpE&@v^*uHG=E -zlA81Ro%7X0-zVzZT3?gYG%VJ9u;ybf-A5o0VA?mz(v$-WGuSLiWFx$FOaL@XK<&Hs -z`s+2-<>JIJS -zg(OLAu&l+JlSEfX81H$B*ENG~G-1fdM3!az?>kVZN4eNGcme1(0E?Hdv^Ob174#J7 -z8l+ap&Rs{=5;kqZz;b9Z0cnpiIaeo9)+B_?e -z3q=2*{{@z2?U - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/list-add.png b/src/gui/Icons/haiku/list-add.png -new file mode 100644 -index 0000000000000000000000000000000000000000..22fbe9db51c120ad0ab1adcedba4b8664a0802b8 -GIT binary patch -literal 392 -zcmV;30eAk1P)UfFscZ~(HWU=bihxAM -zjx1(oWwBt{WpUQPspdcV=R21f16>p-VsR2^ml16mI;*KmW((O``KEld(A~!_t+!SO -z!Sh-G5~PhSBh+aCcGm6yV4^0$Sxr@(O%ITsi~!sp_a8ukqMf&EB>YB!l$AP&01OxV -z+^#dDvdD=K(d3D$!6{dzyHYi|os6xbi%z2>``7(_6F|BWPk9>wm;sP60UYI!RGW1m -zJqdt`ix{;>gc|@7U>#ba`CZ}+od`e-#Qg8S7`^dHHaFE%JP6d^Xhv50000Dk!z6KuJY$*EgoGdGIi7wpG%)xuA%%fu -gkD~K=4F`4x)^KU-3h~S;pi3A$UHx3vIVCg!0JsxF`v3p{ - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/media-playback-pause.png b/src/gui/Icons/haiku/media-playback-pause.png -new file mode 100644 -index 0000000000000000000000000000000000000000..e3da6e829f195fa4af6a32220d6e0879eacc39e1 -GIT binary patch -literal 430 -zcmV;f0a5;mP))9bZbB`!cVHa{)^VUoDP(=e?iC6x*p_VkK?00>01E!{3%G6Rk3hi#tbSi$NXGkC41q`B3vf@y0WfwW0s;8^ -Y1lsWH;rm(FyZ`_I07*qoM6N<$g28>YqyPW_ - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/media-playback-start.png b/src/gui/Icons/haiku/media-playback-start.png -new file mode 100644 -index 0000000000000000000000000000000000000000..f65bfb7548e3c11c1b2fe1e9feb55445305134d4 -GIT binary patch -literal 531 -zcmV+u0_^>XP)(9vIj5;<^}e}dp2y`a -zTiC4uH&VJatGVtv4G3s2MfPDf15>dCCGa -zz$~z~|0K4X4Qis+Xx;#G)`T(>Of$J>{K`KU2mzLFk#v*0n;ozgEhtf9i5Hm60SiFO -zmcs;=W5G9Ih830=r$QN+1AZS|&OTrRcnN&q3GbQOi@Va!*r+002ovPDHLkV1h>$>EZwY - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/media-playback-stop.png b/src/gui/Icons/haiku/media-playback-stop.png -new file mode 100644 -index 0000000000000000000000000000000000000000..fe50fd82a11d640b34a608fea39487e75345a68f -GIT binary patch -literal 269 -zcmV+o0rLKdP)b;@5J1sSu8>lY21Uq9pKEXn4wFmd2)RS5P*EWy8h2YDCB|mPJ4*^jTDJq+ -zZ82}ZcHqu40a$Dnr}^`I<{3P0kGuM#ek}l&Z_8P=u3Rto@BON#UKIdpN~^64P*Z@% -z0zjg0*0T$UDFRRcT1wRj<*+#5f7FSh$1OO2oV$xgcFg=gOG_(bVPVRE -zg`x;nY9SUvkc10F)WX7*3;_w*x!u`6i@n|Z@%;I^`QG`SdB1lCIK~u3PLr0+3Y%=u -zt^#G|_{1`jU3$y9V!f~1^|)@= -zSDH~*hy;Mk5BX9qQQ(0&WkL?TuO9NX+#y6|1Q(Z|d>7FAK7cg4HJ(dT#^hPDPFmmr -zA9>6w%RNSR1rbOslcV1uec&N^4#~V+WN+48?OjFSqxh29f`}kf-*KBg9A=Ws1Reb@ -uz#7;1#?7p=#b@Z)^$k~%yrscTKfo_?aMTIkou63%0000;xqeg1Es&L@WYP1aTW11#62fEwr#wtP~QFKnleo -z1O=mo8i<65ETjnH16eWTf@@4>X78OlI~MauHkm+9b?(nO|Ko5CvTA^vK%V#9TZiU2 -z&y(W5;t?PxThbA8;%er;b;y4^MftbSq-TVlM>_bgbvt?P!Odb3ODm`|i%jnIF`7F542vcL0!D -z#svM0m#gKo8!fa{q+k!(tTb1~=jHtAAP7=Cbzqs6)qSFSQwCSLY2SOf7w@0 -zm9Jt4V0gZ_#VO+23HBA+Se#uXnUz5tL4=}1ZObyDaI%ojdfH1J;QHGj0NkH0=0P)Z -zkRB1X7q?2mE62xthLTphsIdrja9Y=r60|zAUR@#k%ij}yE>Nl -zaJYD*m0>6MAECXK>2|(i;nFNO@ -rp}0tc*FZhRk8*}Q7h(~gI-mXn_#owF+$zwk00000NkvXXu0mjfrjGN! - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/Icons/haiku/process-stop.png b/src/gui/Icons/haiku/process-stop.png -new file mode 100644 -index 0000000000000000000000000000000000000000..cda69cf5bb448b52589a3419ee4f0c9b7790e716 -GIT binary patch -literal 754 -zcmV$o`uS70m7{34+^pfLl35*(R<23?pJ34#};735V{U34ErHBciXghkYa -z3Q-vt8MaJGv(lIjD@n7h{hiFCuFlzU>qbMg=kA5~?|h0k(tSE -zhl71ZMY&4@1100|=-+~Kit^%2O-+t@ZH+)M$c@(4p^kxpwzfdvX7cGzsB -zbe)}cJ3H+5{eeK>%`ccS9R}rSNr_@!T_rL%M~BZh)F#BOak$eAr_R^al@(-Vp)W2H -zo}I;r#W3L8h+95^fAZTm3S=4Q -z`p5>$(h^@ZjTsmL!sa-vSs|LQs?`ovC8eswRF#Q%oFo_(aHJNz -znTLL8xYH8?FM;Ae-E@G_?x)^b=6~s2N -zQv`!`>5w1}7F>#HJu0VYibKk!&6%8~rg3O4M2(6#_`tV3FVFLS@4o{C&RkFfTAT(f -zt7;bW>2qL|_ztR13B?v9$=l;FMqxcA)PNR`o}WAcU{|)urRS_7)c6^Dex>hZI2M;Z -zT|NLZGgB_%L{k}^{tt^>@+V&rG42ACcX)sC1(S_@mY#nQ)Xm*hMIDw$qelS{PUfPq -zXg!H0rQ@epPC2G;o>Y#~!Ooklb!2nTxs^;F%cb2}t7?}3wHs6!;P&*D`seaiy;l3$_F3Dd`t@s9>p)~* -zqjrndZdY*u;Bp;o)59NOl!1ogAMpPT1gJh>4-D(?q=CcGA%qf&E%=qbK|Omv=!ERb -zpS(i7T4bVNZf-0KN%HoDV{xBu?ykLF)ys)QLjIjJzxHm6f$`b!$e3p-mGBDyPnQox -z9g^o)_`>|dvyd1MBU=A62N+J!bXJA5y{&-;9y=lwn^w#b}7ZlM)@>V8lsLnOe0 -z--X=g0A+sliS+;)gBjWWREqVPN_LyFtygSSw)1%fdq^=FQERkBBN3*BVBm8<_w4p2 -z<|gje)}DLenefbY%Jw1^03~Oy+A5DVuK^k8;z8EUN#R4EuO -zR@^g7%!Zc%kO=y|$nvL`I3M2!;RJetc>pnhL5y~t9R6C@l2ciYTC0z36O8-$RKeZnqcvliMdy-aPvkUm{MQSx|1pkdhiRXMBR! -zj;2wR;mrRnC;_;q!z4u41L}Ct#z1e|O;8^FvCEWigoI>-b9fct52K5$1I*=BgjAYq -zF6VOtp8iIJa}-#{WJzad*(Gy!@nyyD4qiZqd`)&B()B2&I)#Yn3qO)?moki#|1-=u(8BM`m6O@x9N9aJ>h5 -zfB=AM?b}&E5SZE!ZU&GFsDTLJ2fRRZW1c?&^vwy)d~mQP00000NkvXXu0mjfuUSdd - -literal 0 -HcmV?d00001 - -diff --git a/src/gui/gui.pro b/src/gui/gui.pro -index 30464ee..9e5435e 100644 ---- a/src/gui/gui.pro -+++ b/src/gui/gui.pro -@@ -22,7 +22,12 @@ haiku { - } - LIBS += -lqmplay2 - --RESOURCES += resources.qrc -+haiku { -+ RESOURCES += resources_haiku.qrc -+} else { -+ RESOURCES += resources.qrc -+} -+ - win32 { - RC_FILE = Windows/icons.rc - DEFINES -= UNICODE -diff --git a/src/gui/resources_haiku.qrc b/src/gui/resources_haiku.qrc -new file mode 100644 -index 0000000..f038534 ---- /dev/null -+++ b/src/gui/resources_haiku.qrc -@@ -0,0 +1,37 @@ -+ -+ -+ Icons/QMPlay2.png -+ -+ Icons/haiku/media-playback-start.png -+ Icons/haiku/media-playback-stop.png -+ Icons/haiku/media-skip-backward.png -+ Icons/haiku/media-skip-forward.png -+ Icons/haiku/media-playback-pause.png -+ -+ Icons/haiku/folder-orange.png -+ Icons/haiku/folder.png -+ Icons/haiku/folder-new.png -+ Icons/haiku/applications-multimedia.png -+ Icons/haiku/archive-remove.png -+ Icons/haiku/list-remove.png -+ Icons/haiku/list-add.png -+ Icons/haiku/edit-clear.png -+ Icons/haiku/folder-open.png -+ Icons/haiku/view-refresh.png -+ Icons/haiku/audio-volume-muted.png -+ Icons/haiku/view-fullscreen.png -+ Icons/haiku/configure.png -+ Icons/haiku/application-exit.png -+ Icons/haiku/process-stop.png -+ Icons/haiku/edit-copy.png -+ Icons/haiku/edit-paste.png -+ Icons/haiku/edit-find.png -+ Icons/haiku/document-properties.png -+ Icons/haiku/application-x-mswinurl.png -+ -+ -+ Colors/QMPlay1_dark.QMPlay2Color -+ -+ Languages.csv -+ -+ --- -2.2.2 - - -From 5d3142148cd6e439bd32d148e70bb41bc1065e69 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 3 Jun 2015 13:21:15 +1000 -Subject: Fix ffmpeg static link for Visualizations and AudioFilters modules - - -diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro -index 01d083c..0e02939 100644 ---- a/src/modules/AudioFilters/AudioFilters.pro -+++ b/src/modules/AudioFilters/AudioFilters.pro -@@ -11,7 +11,11 @@ win32: QMAKE_LIBDIR += ../../../app - else: QMAKE_LIBDIR += ../../../app/lib - LIBS += -lqmplay2 - win32: LIBS += -lavcodec -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -+} else { - CONFIG += link_pkgconfig - PKGCONFIG += libavcodec libavutil - } -diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro -index 7d3b946..021bc40 100644 ---- a/src/modules/Visualizations/Visualizations.pro -+++ b/src/modules/Visualizations/Visualizations.pro -@@ -11,7 +11,11 @@ win32: QMAKE_LIBDIR += ../../../app - else: QMAKE_LIBDIR += ../../../app/lib - LIBS += -lqmplay2 - win32: LIBS += -lavcodec -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -+} else { - CONFIG += link_pkgconfig - PKGCONFIG += libavcodec libavutil - } --- -2.2.2 - diff --git a/media-video/qmplay2/patches/qmplay2_x86-15.10.03.patchset b/media-video/qmplay2/patches/qmplay2_x86-15.10.03.patchset deleted file mode 100644 index 3e629dd65..000000000 --- a/media-video/qmplay2/patches/qmplay2_x86-15.10.03.patchset +++ /dev/null @@ -1,1114 +0,0 @@ -From c56ecc947daccdacf620b6f36ee607347c78df54 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Tue, 13 Oct 2015 02:56:37 +0000 -Subject: Add haiku support - - -diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef -new file mode 100644 -index 0000000..2702ac8 ---- /dev/null -+++ b/haiku/QMPlay2.rdef -@@ -0,0 +1,42 @@ -+resource app_signature "application/x-vnd.QMPlay2"; -+resource app_flags B_MULTIPLE_LAUNCH; -+resource app_version { -+ major = 15, -+ middle = 10, -+ minor = 03, -+ -+ /* Application "variety" can be set to one of the following: -+ * B_APPV_DEVELOPMENT, -+ * B_APPV_ALPHA, -+ * B_APPV_BETA, -+ * B_APPV_GAMMA, -+ * B_APPV_GOLDEN_MASTER, -+ * B_APPV_FINAL -+ */ -+ variety = B_APPV_DEVELOPMENT, -+ internal = 0, -+ -+ short_info = "QMPlay2", -+ long_info = "QMPlay2 © 2010-2015 Błażej Szczygieł" -+}; -+ -+resource file_types message { -+ "types" = "video", -+ "types" = "audio" -+}; -+ -+resource vector_icon array { -+ $"6E63696602012C165AF20314D77803000DB4D0B47BB4D0B47BB5A4B493B717B5" -+ $"6DB659B515BCBFB846C814BDF0C26CBB17C8CEBE53CA3FBF23C99BBE9CCA9ABF" -+ $"6BCA35C053CA92C00FC985C0E0C7E7C196C8ADC12DC276C452B78EC9BFBD01C7" -+ $"06B6C1CA20B523CAD9B601CAA4B4ACCAF9B426CA1EB421CA9DB41FC965B46DC7" -+ $"FBB44EC8B0B561C2E0B4A9B879B57FBD9BB485B770B428B55FB438B66BB41CB4" -+ $"F6B4D0B47BB466B48CB4D0B47B0209B627B6EDB6A3B714B640B838B6A7BACAB6" -+ $"89B97FB6F3BD1FB6E1C1D3B6F0BF7BB6D1C408B623C864B659C633B71AC816B8" -+ $"DBC716B7F4C787BC65C561C369C1D7BFF0C3ADC4D7C11DC7BDBFBFC64EC075C7" -+ $"1DBF3FC5A7BE96C65EBEEFC0EEBC47B790B783BC40B9E3B71CB7480209B627B6" -+ $"EDB640B838B6A3B714B790B783B71CB748BC40B9E3C5A7BE96C0EEBC47C65EBE" -+ $"EFC7BDBFBFC71DBF3FC64EC075C369C1D7C4D7C11DBFF0C3ADB8DBC716BC65C5" -+ $"61B7F4C787B623C864B71AC816B659C633B6E1C1D3B6D1C408B6F0BF7BB6A7BA" -+ $"CAB6F3BD1FB689B97F020A00020001000A01010200" -+}; -diff --git a/src/gui/Main.cpp b/src/gui/Main.cpp -index cc40f0f..a7077c8 100644 ---- a/src/gui/Main.cpp -+++ b/src/gui/Main.cpp -@@ -56,6 +56,11 @@ QStringList QMPlay2GUIClass::getModules( const QString &type, int typeLen ) - #elif defined Q_OS_ANDROID - if ( type == "videoWriters" ) - defaultModules << "QPainter"; -+#elif defined Q_OS_HAIKU -+ if ( type == "videoWriters" ) -+ defaultModules << "QPainter"; -+ else if ( type == "audioWriters" ) -+ defaultModules << "MediaKit"; - #endif - QStringList availableModules; - const QString moduleType = type.mid( 0, typeLen ); -@@ -396,7 +401,10 @@ static void signal_handler( int s ) - - int main( int argc, char *argv[] ) - { --#if defined Q_OS_WIN || defined Q_OS_MAC || defined Q_OS_ANDROID -+#ifdef Q_OS_HAIKU -+ setenv("HOME", "/boot/home", 1); -+#endif -+#if defined Q_OS_WIN || defined Q_OS_MAC || defined Q_OS_ANDROID || defined Q_OS_HAIKU - const QString unixPath; - #else - const QString unixPath = "/../share/qmplay2"; -diff --git a/src/gui/MainWidget.cpp b/src/gui/MainWidget.cpp -index b2f9c60..5e4119a 100644 ---- a/src/gui/MainWidget.cpp -+++ b/src/gui/MainWidget.cpp -@@ -99,7 +99,11 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments ) - connect( QMPlay2GUI.pipe, SIGNAL( newConnection() ), this, SLOT( newConnection() ) ); - - SettingsWidget::InitSettings(); -- QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false ); -+#ifdef Q_OS_HAIKU -+ QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", true ); -+#else -+ QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false ); -+#endif - - QMPlay2GUI.menuBar = new MenuBar; - -diff --git a/src/gui/PlayClass.cpp b/src/gui/PlayClass.cpp -index a956337..95f7644 100644 ---- a/src/gui/PlayClass.cpp -+++ b/src/gui/PlayClass.cpp -@@ -15,9 +15,11 @@ - #include - #include - -+#ifndef Q_OS_HAIKU - #if QT_VERSION >= 0x040800 - #define USE_QRAWFONT - #endif -+#endif - - #include - #ifdef USE_QRAWFONT -diff --git a/src/gui/gui.pro b/src/gui/gui.pro -index 017241b..be32357 100644 ---- a/src/gui/gui.pro -+++ b/src/gui/gui.pro -@@ -3,7 +3,7 @@ TEMPLATE = app - - QT += network - greaterThan(QT_MAJOR_VERSION, 4): QT += widgets --else:unix:!macx: PKGCONFIG += x11 -+else:unix:!macx:!haiku: PKGCONFIG += x11 - - TARGET = QMPlay2 - -@@ -11,6 +11,10 @@ win32|macx { - QMAKE_LIBDIR += ../../app - DESTDIR = ../../app - } -+haiku { -+ DESTDIR = ../../app -+ QMAKE_LIBDIR += ../../app/lib -+} - else { - QMAKE_LIBDIR += ../../app/lib - DESTDIR = ../../app/bin -diff --git a/src/modules/AudioCD/AudioCD.pro b/src/modules/AudioCD/AudioCD.pro -index b9c3e74..0a9e30f 100644 ---- a/src/modules/AudioCD/AudioCD.pro -+++ b/src/modules/AudioCD/AudioCD.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro -index a98c46f..2e85ac1 100644 ---- a/src/modules/AudioFilters/AudioFilters.pro -+++ b/src/modules/AudioFilters/AudioFilters.pro -@@ -7,13 +7,21 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib - } - - win32: LIBS += -lavcodec -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -lmodplug -+} else { - macx: QT_CONFIG -= no-pkg-config - CONFIG += link_pkgconfig - PKGCONFIG += libavcodec libavutil -diff --git a/src/modules/Extensions/Extensions.pro b/src/modules/Extensions/Extensions.pro -index 988955f..0c5b921 100644 ---- a/src/modules/Extensions/Extensions.pro -+++ b/src/modules/Extensions/Extensions.pro -@@ -8,6 +8,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/FFmpeg/FFmpeg.pro b/src/modules/FFmpeg/FFmpeg.pro -index 4e3bfb7..a386813 100644 ---- a/src/modules/FFmpeg/FFmpeg.pro -+++ b/src/modules/FFmpeg/FFmpeg.pro -@@ -8,13 +8,23 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib - } - - win32: LIBS += -lws2_32 -lavformat -lavcodec -lswscale -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavformat.a -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libswscale.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -lmodplug -+} else { - macx: QT_CONFIG -= no-pkg-config - CONFIG += link_pkgconfig - PKGCONFIG += libavformat libavcodec libswscale libavutil -@@ -35,7 +45,7 @@ DEPENDPATH += . ../../qmplay2/headers - HEADERS += FFmpeg.hpp FFDemux.hpp FFDec.hpp FFDecSW.hpp FFReader.hpp FFCommon.hpp - SOURCES += FFmpeg.cpp FFDemux.cpp FFDec.cpp FFDecSW.cpp FFReader.cpp FFCommon.cpp - --unix:!macx:!android { -+unix:!macx:!android:!haiku { - #Common HWAccel - HEADERS += FFDecHWAccel.hpp HWAccelHelper.hpp - SOURCES += FFDecHWAccel.cpp HWAccelHelper.cpp -diff --git a/src/modules/Inputs/Inputs.pro b/src/modules/Inputs/Inputs.pro -index dd6cbf7..39fd42e 100644 ---- a/src/modules/Inputs/Inputs.pro -+++ b/src/modules/Inputs/Inputs.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/MediaKit/MediaKit.cpp b/src/modules/MediaKit/MediaKit.cpp -new file mode 100644 -index 0000000..1647325 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKit.cpp -@@ -0,0 +1,65 @@ -+#include -+#include -+ -+MediaKit::MediaKit() : -+ Module( "MediaKit" ) -+{ -+ moduleImg = QImage( ":/MediaKit" ); -+ -+ init( "WriterEnabled", true ); -+ init( "Delay", 0.2 ); -+} -+ -+QList< MediaKit::Info > MediaKit::getModulesInfo( const bool showDisabled ) const -+{ -+ QList< Info > modulesInfo; -+ if ( showDisabled || getBool( "WriterEnabled" ) ) -+ modulesInfo += Info( MediaKitWriterName, WRITER, QStringList( "audio" ) ); -+ return modulesInfo; -+} -+void *MediaKit::createInstance( const QString &name ) -+{ -+ if ( name == MediaKitWriterName && getBool( "WriterEnabled" ) ) -+ return new MediaKitWriter( *this ); -+ return NULL; -+} -+ -+MediaKit::SettingsWidget *MediaKit::getSettingsWidget() -+{ -+ return new ModuleSettingsWidget( *this ); -+} -+ -+QMPLAY2_EXPORT_PLUGIN( MediaKit ) -+ -+/**/ -+ -+#include -+#include -+#include -+#include -+ -+ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) : -+ Module::SettingsWidget( module ) -+{ -+ enabledB = new QCheckBox( tr( "Włączony" ) ); -+ enabledB->setChecked( sets().getBool( "WriterEnabled" ) ); -+ -+ QLabel *delayL = new QLabel( tr( "Opóźnienie" ) + ": " ); -+ -+ delayB = new QDoubleSpinBox; -+ delayB->setRange( 0.01, 1.0 ); -+ delayB->setSingleStep( 0.01 ); -+ delayB->setSuffix( " " + tr( "sek" ) ); -+ delayB->setValue( sets().getDouble( "Delay" ) ); -+ -+ QGridLayout *layout = new QGridLayout( this ); -+ layout->addWidget( enabledB, 0, 0, 1, 2 ); -+ layout->addWidget( delayL, 1, 0, 1, 1 ); -+ layout->addWidget( delayB, 1, 1, 1, 1 ); -+} -+ -+void ModuleSettingsWidget::saveSettings() -+{ -+ sets().set( "WriterEnabled", enabledB->isChecked() ); -+ sets().set( "Delay", delayB->value() ); -+} -diff --git a/src/modules/MediaKit/MediaKit.hpp b/src/modules/MediaKit/MediaKit.hpp -new file mode 100644 -index 0000000..16920f6 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKit.hpp -@@ -0,0 +1,31 @@ -+#include -+ -+class MediaKit : public Module -+{ -+public: -+ MediaKit(); -+private: -+ QList< Info > getModulesInfo( const bool ) const; -+ void *createInstance( const QString & ); -+ -+ SettingsWidget *getSettingsWidget(); -+}; -+ -+/**/ -+ -+#include -+ -+class QDoubleSpinBox; -+class QCheckBox; -+ -+class ModuleSettingsWidget : public Module::SettingsWidget -+{ -+ Q_DECLARE_TR_FUNCTIONS( ModuleSettingsWidget ) -+public: -+ ModuleSettingsWidget( Module & ); -+private: -+ void saveSettings(); -+ -+ QCheckBox *enabledB; -+ QDoubleSpinBox *delayB; -+}; -diff --git a/src/modules/MediaKit/MediaKit.png b/src/modules/MediaKit/MediaKit.png -new file mode 100644 -index 0000000000000000000000000000000000000000..36cb89c5e5200c5b613e4cf005b772df61aef49c -GIT binary patch -literal 5396 -zcmV+v73=DWP)1<6FprHd1$Uua_7y$_eS%QE%L=ndUbzGUafkzy0 -z5K$OpK;(=98j&Cv0xD}p1ci`D!UV`lmhMivtC#AkuH~(F{VCh!<^JyP-iCMN9eGFoKa2J^{{5-INx%uf9AG-o2*iOHPz16-C$JUR1Uv)0 -z4)}kA@xEmdz^TAZC=l{6+g{*0V8&Y=(EpYNq<~KVA46#xfD;$A^5ILDFn9KJCQhuS -zzCKB9Z8bI3Rd}AnvTQ8dp;&b2+@EIC=IuPZW*tvHy}tYk7x)k0TR_j@4D7E>Kojsq -z;8Q>qz(+1QgAXh{h52o>X_?hX#Lz(-ISj4huQu%3_az;jy{uXLdp`ZSn<^h#jB<}d -zlD`%Kao|h9SAx%6ckK!;Uj80tAJG(ak$+)GmEc7{QpGi}uRYB@_x*;ifAh}r!&d>f -zAId=g8U&nyGRqc#?_Pg77hZ5GGpD5(0r2_qmxfD}CP*dJJS!M~J$|69Pd;~nhVNkAO99{3!< -z)nB-fPyf@|Oq)6}04zcJNa@qHx0@X=ZDrdN>&b2Z(-^Nx;Z@HCq6oJOt+XZlX2Q{@ -zbNoeTan#9eM9e6lgC=!y+xItY!Fp%c{w2~#H;(L(~NB05zO -zotPmoghrK9VB*V9G2!uRxahXeGr74DG#v)|S@VNSIQKi@*i!t3*+GAc;4c8y0JXP& -z|1z#wxs=J1;vh?aO?qD^Pu#MG|Nhy}u=~4k>dt2S!f*4)30LyacX=3%D4#56~aH?@G>F)`q6JAYDAyWy@2W*m&o?cs@AhiR?T5YW_6!B)VKd -zcgZDf```sZQPTno5TFZcOr2`e7}EkG0WpTq&@`y(*v^Gj_t19Qe9#OS=x5*B%b9)! -zpz?&-z@CGFI9v<309Xa+k3D!5%a$IAh6R);W;6WpN5A8ZUq1qXck=agU3xuTP4gJ^ -zHS(^+@g!LfH4Q+hhJ?^SD1f@qh#5MjA&5tGOkH5=0z;_pgr=HTJCTm3x3lPEsU`+9 -zN^Q?JCRKOwn~exmD!uOQB;XX3*+(8*{g1r=jF!OU^W+Y6^Wyi{klVHqE!Ilp;}77T -zz8s=)Y)?{fCAKRmdJ@Bz6v{CYK+_ZfnnqM;L<|uU5H$o5QFZ~MM>LYA0zWwsp(d(R6H&n}rO;H6Aji~`9`w;PrF8*lBiMU>`w<}X -ziiAWQA>h1)VTZ+U2Lb;I%)fMb8!IlIgGLtoEOt6g&o7=J;-&Fte2(4^-GCFX#gh_U -z(=dca)XpbS>fZy9t@N* -zPVi>{pHHRWy04x%>Kj8b<+$>WYAvA*eCI@g-T? -zCzXhhvwa2)LE4ev2PmW*3XJ|}5_C-)W&R+MzK>f|4}K0b3xs;MsXpvQ5sjp;Gb!$qwR8rm -z3^FB;ld0u%hjK4 -zeNEFwn7`7#=lkeF1O#|09{{351SAiafF{(Emd{+#f-VL@ -zmhjU#@hvoRBy`b0= -zfOjigAT<5q_(Sa@C7$gl|3`wQzOS%=_~8=pMIip&Z?@6g=&SkOv*Cqp2n}`{EBS)H -z0ITFurLZpZQP_^M0+`-^F3_WSEa0= -zmE1~aHV{!kL}=7R1&(hpIT2xE-le8cPK^mkNN8|$m4=9FxF{;NnJ0r=Y2{DAG;kqu_e34x}Hh<2T -z?3A^k_I=;S^*n6XV`i)~$Vh##iU4GW2eJPP;CmTB7%lQguLUE%;q?KdWn{%B*|oySWLrnT^!%X -zwr%WUo`l`ck%b;a)@19%6L5U6JrB!vDA+cq9JLi>;QYA^0DZX-&)!2NU=c9qqsvpw -zo=IT-7QD6#G*~AtW1VJJ_-cjkdXV;2P)oT!gN`4%gXQ|zo@8oGgc?&PhRvjo7dR$j -zQ5#L+c^FevGr>BQPdplmQgV(YU%W<(?7ss+VX2vsWj2@8L -z1wii*0oxCifMo#Zystjcz6HH`7z9TX74inrS -zc0Y4Jsbm$-lqp!2MX{(%*Rm|6lsJyV;NT$HY?hv$9y&TYXm4+)>(5)LYG}psAaB{! -zckCo0_5dbioiLBsK4kbC4wZnV0P|Z>;H3i{fS%$N{iCcm;vgj{LE!&#L;@qjIV$bQ -z&>B2XGH7}9ba$bzyOUH+lp3>JO3MBL?b=4<2dB=d9v9o -z>2#WOI!$+XH(gy_^z`)LbnYfvm7+M128d6G1r4qSZj!Y&)e}6yebei7YUIqpR=xZZqCjoN+Ce}mfSH%QGbarb;Qf2DIe3hCxK~VF2iS7HizQmJ~ -zxG!;ii6bSp=hN(i<$JK$f@!lSGKsjRwk6y!>vigDf{J$mrF{){ -zcf&QS)b09uRS;-zZ;t}E0jG_JfH*)+RRA8qs70D3x0lUBaGP>5T#@369 -z`~vp%z|}uh-Qw|~6>v*S3%hph0yvLx5Ksh?mYpV1en+ed>Boq;<0~OXQ02a|*u^5W -z?;5l3xIkCPC(pl-8B@Nhz?Xmwpo8ndZEJ`6Rk~F3Eh}yyd&kq%*PtT46Tr|w3i!#Ruagj{xJtxF6Wm)`%+bFJWn;p -z^{8o{!=lf8?+}nL;Odn(v*U`dP!nUw@5^Hn@ZeK$)xQmY?D*r4r>?G!>gsCZ@i>NI -z;JRV8dQ@FtEIWA}*!$$OOz$`V)0$9uHhY+ss3Mgq(e1^`(8E%I3|R0hh(Jng&qGRy -z?Rv~OQV&(02(~@dszPE;g4Q&$tBF2 -zH;;}EwJ0cOmzhka+~uY55a0tp1-`N7aky$laMyVl5u3{ywcEJ2?^p#`As+?W3rxQZ -zT>8GM+_*l8qZZM6^?cI%c2VqZCzsEulDJU?iF$rFa~JQO`(t!-mojyO@@|M4nSjTh -zg{4;wAM~O{i#Ye(bHk#F5F%V$ZQHi3-0ks^U=MacVg|4SF!sI((;86hi_4JFW&FJT -z-Mmzs7~mfb-1j^jUk(9xTx{Q`P_nRWhmvJeC|L{?OIRff9GmYLJ2`LmBh)2+t3XFk -zDOo)Dtd0Tk;8U>tOQQ$8YSk(l8X6cF7@)tupRTSh_V3@%&Ye41yLK(8x?l?<0^z|D -zy8+bsnuQZ5z-bFpsx;~zk(Iljvnk?cily6Yb(00 -z4{L^Duwlc7aw>ci@L%J#0DwsZQFG1R@PYTDOwa@THZad+hkFK3rCZogNQN5sg623b -zCC61|YsaBrIoOUvqEz4l+0H4(D;%46jF_=LoX^7+sURQ%JG<3Xw`!CD!_7C}%)*5W -zF-;RKD5IB`(Ob4`Vdct|Wren&Qm0|^X8Qs?sD1UPmt798{^4?tYFeW>@i)WZW@bBg -zFgvlBZ1u_Pc8{TBu!aMr82y&OMk26CdO0SMp-Hqe)!0r`@@XR4meKR4huS0534@*M -z!K2T^6}Jta=KQyCl_B#}rEjYcsHgIFwvZQDHhXjlxoZY=Qd<`z(v -zD}f&Zyt@8+j+(L)@^`Djx~PSSjhdg!e_e*=>vEF}kL2ZF_kzBXA>WU{z8u{41l;(m -z(F1C2ZKbWPjTtj$(A3mKDwPVSKGQT2Lh#F9{*oJSyb)AEbW!jtqhvgbyY(m|{rex@ -z^%M(Ey^wkHKL$=cSZTFeT%MmjMo(KKxB2~ms3NM0Q({$o$iZMhh#mw&? -z9S*v&v5|&`hA_wXg5089Jn=jaUDwexjTc{hk*|I2YoIj#LEfY!4u^hD@IAoO<%`>H -z{b!baU=dRr>k+;Ub`c60)iV2`Zy#jSkn4it02D27(%^&R!Oje9>V&mh;l7HzsHLTa -zcsxFANjp*u!yu7JkVqt`udgSSO3~5L!Rpnk%iu2o9{fvy4(FicB;XsU*kAxGS+an0 -z&soHA$4sXwRZYw<5_K}ftO4|a4szXHWV*ZQ>+7SpH_i4g_}R;_zJ2(Mo12@%GS+y+ -zFbv}HI6??IIy%Zlj{#sg@WgoD@m5ZX&Hz3RtRN_)9)`S%s@uPTs@|H1LPEJ<8qD*c -z%>Bc>$zI?{c{>hE3)CT`#i-L*^H3*ClBhhc6tqrMHnttLSGS(wJ2vN{s<%;4ZV-t? -z!g4tb6->vd5)YuJx?4F&wEw>%ZNRe(pF`fP?FGILjNflY$lv<0%H_8-jR3Y9eGE_EB^yvNfC*>uwT*u0000 -+#include -+ -+MediaKitWriter::MediaKitWriter( Module &module ) : -+ err( false ) -+{ -+ addParam( "delay" ); -+ addParam( "chn" ); -+ addParam( "rate" ); -+ -+ SetModule( module ); -+} -+ -+bool MediaKitWriter::set() -+{ -+ if ( player.delay != sets().getDouble( "Delay" ) ) -+ { -+ player.delay = sets().getDouble( "Delay" ); -+ return false; -+ } -+ return sets().getBool( "WriterEnabled" ); -+} -+ -+bool MediaKitWriter::readyWrite() const -+{ -+ return !err && player.isOpen(); -+} -+ -+bool MediaKitWriter::processParams( bool * ) -+{ -+ bool resetAudio = false; -+ -+ uchar chn = getParam( "chn" ).toUInt(); -+ if ( player.channels != chn ) -+ { -+ resetAudio = true; -+ player.channels = chn; -+ } -+ uint rate = getParam( "rate" ).toUInt(); -+ if ( player.sample_rate != rate ) -+ { -+ resetAudio = true; -+ player.sample_rate = rate; -+ } -+ -+ if ( resetAudio || err ) -+ { -+ player.stop(); -+ err = !player.start(); -+ if ( !err ) -+ modParam( "delay", player.delay ); -+ else -+ QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Nie można otworzyć strumienia wyjścia dźwięku" ) ); -+ } -+ -+ return readyWrite(); -+} -+qint64 MediaKitWriter::write( const QByteArray &arr ) -+{ -+ if ( !arr.size() || !readyWrite() ) -+ return 0; -+ -+ err = !player.write( arr ); -+ if ( err ) -+ { -+ QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Błąd podczas odtwarzania" ) ); -+ return 0; -+ } -+ -+ return arr.size(); -+} -+ -+qint64 MediaKitWriter::size() const -+{ -+ return -1; -+} -+QString MediaKitWriter::name() const -+{ -+ return MediaKitWriterName; -+} -+ -+bool MediaKitWriter::open() -+{ -+ return player.isOK(); -+} -diff --git a/src/modules/MediaKit/MediaKitWriter.hpp b/src/modules/MediaKit/MediaKitWriter.hpp -new file mode 100644 -index 0000000..28fa249 ---- /dev/null -+++ b/src/modules/MediaKit/MediaKitWriter.hpp -@@ -0,0 +1,30 @@ -+#include -+#include -+ -+#include -+ -+class MediaKitWriter : public Writer -+{ -+ Q_DECLARE_TR_FUNCTIONS( MediaKitWriter ) -+public: -+ MediaKitWriter( Module & ); -+private: -+ bool set(); -+ -+ bool readyWrite() const; -+ -+ bool processParams( bool *paramsCorrected ); -+ qint64 write( const QByteArray & ); -+ -+ qint64 size() const; -+ QString name() const; -+ -+ bool open(); -+ -+ /**/ -+ -+ SndPlayer player; -+ bool err; -+}; -+ -+#define MediaKitWriterName "MediaKit Writer" -diff --git a/src/modules/MediaKit/RingBuffer.cpp b/src/modules/MediaKit/RingBuffer.cpp -new file mode 100644 -index 0000000..915becc ---- /dev/null -+++ b/src/modules/MediaKit/RingBuffer.cpp -@@ -0,0 +1,129 @@ -+#include -+#include -+#include -+ -+#include "RingBuffer.hpp" -+ -+RingBuffer::RingBuffer( int size ) -+{ -+ initialized = false; -+ Buffer = new unsigned char[size]; -+ if(Buffer!=NULL) { -+ memset( Buffer, 0, size ); -+ BufferSize = size; -+ } else { -+ BufferSize = 0; -+ } -+ reader = 0; -+ writer = 0; -+ writeBytesAvailable = size; -+ if((locker=create_sem(1,"locker")) >= B_OK) { -+ initialized = true; -+ } else { -+ if(Buffer!=NULL) { -+ delete[] Buffer; -+ } -+ } -+} -+ -+RingBuffer::~RingBuffer( ) -+{ -+ if(initialized) { -+ delete[] Buffer; -+ delete_sem(locker); -+ } -+} -+ -+bool -+RingBuffer::Empty( void ) -+{ -+ memset( Buffer, 0, BufferSize ); -+ reader = 0; -+ writer = 0; -+ writeBytesAvailable = BufferSize; -+ return true; -+} -+ -+int -+RingBuffer::Read( unsigned char *data, int size ) -+{ -+ acquire_sem(locker); -+ -+ if( data == 0 || size <= 0 || writeBytesAvailable == BufferSize ) { -+ release_sem(locker); -+ return 0; -+ } -+ -+ int readBytesAvailable = BufferSize - writeBytesAvailable; -+ -+ if( size > readBytesAvailable ) { -+ size = readBytesAvailable; -+ } -+ -+ if(size > BufferSize - reader) { -+ int len = BufferSize - reader; -+ memcpy(data, Buffer + reader, len); -+ memcpy(data + len, Buffer, size-len); -+ } else { -+ memcpy(data, Buffer + reader, size); -+ } -+ -+ reader = (reader + size) % BufferSize; -+ writeBytesAvailable += size; -+ -+ release_sem(locker); -+ return size; -+} -+ -+int -+RingBuffer::Write( unsigned char *data, int size ) -+{ -+ acquire_sem(locker); -+ -+ if( data == 0 || size <= 0 || writeBytesAvailable == 0 ) { -+ release_sem(locker); -+ return 0; -+ } -+ -+ if( size > writeBytesAvailable ) { -+ size = writeBytesAvailable; -+ } -+ -+ if(size > BufferSize - writer) { -+ int len = BufferSize - writer; -+ memcpy(Buffer + writer, data, len); -+ memcpy(Buffer, data+len, size-len); -+ } else { -+ memcpy(Buffer + writer, data, size); -+ } -+ -+ writer = (writer + size) % BufferSize; -+ writeBytesAvailable -= size; -+ -+ release_sem(locker); -+ return size; -+} -+ -+int -+RingBuffer::GetSize( void ) -+{ -+ return BufferSize; -+} -+ -+int -+RingBuffer::GetWriteAvailable( void ) -+{ -+ return writeBytesAvailable; -+} -+ -+int -+RingBuffer::GetReadAvailable( void ) -+{ -+ return BufferSize - writeBytesAvailable; -+} -+ -+status_t -+RingBuffer::InitCheck( void ) -+{ -+ return initialized?B_OK:B_ERROR; -+} -diff --git a/src/modules/MediaKit/RingBuffer.hpp b/src/modules/MediaKit/RingBuffer.hpp -new file mode 100644 -index 0000000..4715632 ---- /dev/null -+++ b/src/modules/MediaKit/RingBuffer.hpp -@@ -0,0 +1,31 @@ -+#ifndef __RING_BUFFER_H__ -+#define __RING_BUFFER_H__ -+ -+#include -+ -+class RingBuffer { -+ -+public: -+ RingBuffer(int size); -+ ~RingBuffer(); -+ int Read( unsigned char* dataPtr, int numBytes ); -+ int Write( unsigned char *dataPtr, int numBytes ); -+ -+ bool Empty( void ); -+ int GetSize( ); -+ int GetWriteAvailable( ); -+ int GetReadAvailable( ); -+ status_t InitCheck( ); -+private: -+ unsigned char *Buffer; -+ int BufferSize; -+ int reader; -+ int writer; -+ int writeBytesAvailable; -+ -+ sem_id locker; -+ -+ bool initialized; -+}; -+ -+#endif -diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp -new file mode 100644 -index 0000000..ca7ad89 ---- /dev/null -+++ b/src/modules/MediaKit/SndPlayer.cpp -@@ -0,0 +1,103 @@ -+#include -+ -+#include -+#include -+#include -+#include -+ -+ -+static void proc(void *cookie, void *buffer, size_t len, const media_raw_audio_format &format) -+{ -+ RingBuffer *ring = (RingBuffer*)cookie; -+ unsigned char* ptr = (unsigned char*)buffer; -+ -+ int readed = ring->Read(ptr,len); -+ -+ if(readed InitCheck() != B_OK) { -+ delete ring; ring = 0; -+ return false; -+ } -+ -+ player = new BSoundPlayer(&form, "QMPlay2_BSoundPlayer", proc, NULL, (void*)ring); -+ -+ if(player->InitCheck() != B_OK) { -+ delete player; -+ player = NULL; -+ return false; -+ } -+ -+ player->Start(); -+ player->SetHasData(true); -+ -+ _isOK = true; -+ -+ return player; -+} -+void SndPlayer::stop() -+{ -+ if ( player ) -+ { -+ if(player) { -+ player->Stop(); -+ delete player; -+ delete ring; -+ } -+ -+ player = NULL; -+ ring = NULL; -+ } -+} -+ -+double SndPlayer::getLatency() -+{ -+ double lat = player->Latency() / (ring->GetSize()*4.0); -+ -+ return lat; -+} -+ -+bool SndPlayer::write( const QByteArray &arr ) -+{ -+ int s = arr.size(); -+ while ( s > 0 && s % 4 ) -+ s--; -+ if ( s <= 0 ) -+ return false; -+ -+ int len=s; -+ -+ unsigned char *src_ptr = (unsigned char *)arr.data(); -+ -+ for(;;) { -+ int len2 = ring->Write(src_ptr,len); -+ if(len2 == len)break; -+ len -= len2; -+ src_ptr += len2; -+ snooze(100); -+ } -+ -+ return true; -+} -diff --git a/src/modules/MediaKit/SndPlayer.hpp b/src/modules/MediaKit/SndPlayer.hpp -new file mode 100644 -index 0000000..b0ca8c2 ---- /dev/null -+++ b/src/modules/MediaKit/SndPlayer.hpp -@@ -0,0 +1,49 @@ -+#ifndef PULSE_HPP -+#define PULSE_HPP -+ -+#include -+ -+#include -+ -+#include -+#include -+#include -+ -+#include "RingBuffer.hpp" -+ -+class SndPlayer -+{ -+public: -+ SndPlayer(); -+ inline ~SndPlayer() -+ { -+ stop(); -+ } -+ -+ inline bool isOK() const -+ { -+ return _isOK; -+ } -+ inline bool isOpen() const -+ { -+ return player; -+ } -+ -+ bool start(); -+ void stop(); -+ -+ double getLatency(); -+ -+ bool write( const QByteArray & ); -+ -+ double delay; -+ uchar channels; -+ uint sample_rate; -+ -+private: -+ bool _isOK; -+ BSoundPlayer *player; -+ RingBuffer *ring; -+}; -+ -+#endif -diff --git a/src/modules/MediaKit/icon.qrc b/src/modules/MediaKit/icon.qrc -new file mode 100644 -index 0000000..24b4ebd ---- /dev/null -+++ b/src/modules/MediaKit/icon.qrc -@@ -0,0 +1,3 @@ -+ -+ MediaKit.png -+ -diff --git a/src/modules/Modplug/Modplug.pro b/src/modules/Modplug/Modplug.pro -index 1d93c99..90659bb 100644 ---- a/src/modules/Modplug/Modplug.pro -+++ b/src/modules/Modplug/Modplug.pro -@@ -8,6 +8,11 @@ win32|macx { - QMAKE_LIBDIR += ../../../app - LIBS += -lz - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+ LIBS += -lz -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/Playlists/Playlists.pro b/src/modules/Playlists/Playlists.pro -index 63ca9db..73dc6d4 100644 ---- a/src/modules/Playlists/Playlists.pro -+++ b/src/modules/Playlists/Playlists.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/QPainter/QPainter.pro b/src/modules/QPainter/QPainter.pro -index 9ef2c8c..19bb184 100644 ---- a/src/modules/QPainter/QPainter.pro -+++ b/src/modules/QPainter/QPainter.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/Subtitles/Subtitles.pro b/src/modules/Subtitles/Subtitles.pro -index 429f697..55d3afc 100644 ---- a/src/modules/Subtitles/Subtitles.pro -+++ b/src/modules/Subtitles/Subtitles.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/VideoFilters/VideoFilters.pro b/src/modules/VideoFilters/VideoFilters.pro -index 5440b65..0bde6b1 100644 ---- a/src/modules/VideoFilters/VideoFilters.pro -+++ b/src/modules/VideoFilters/VideoFilters.pro -@@ -7,6 +7,10 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib -diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro -index 0c40e27..b97adf4 100644 ---- a/src/modules/Visualizations/Visualizations.pro -+++ b/src/modules/Visualizations/Visualizations.pro -@@ -7,12 +7,20 @@ win32|macx { - DESTDIR = ../../../app/modules - QMAKE_LIBDIR += ../../../app - } -+haiku { -+ DESTDIR = ../../../app/modules -+ QMAKE_LIBDIR += ../../../app/lib -+} - else { - DESTDIR = ../../../app/share/qmplay2/modules - QMAKE_LIBDIR += ../../../app/lib} - - win32: LIBS += -lavcodec -lavutil --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libavcodec.a -+ LIBS += /boot/system/develop/lib/x86/libavutil.a -+ LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx -lmodplug -+} else { - macx: QT_CONFIG -= no-pkg-config - CONFIG += link_pkgconfig - PKGCONFIG += libavcodec libavutil -diff --git a/src/modules/modules.pro b/src/modules/modules.pro -index cacee92..b43c363 100644 ---- a/src/modules/modules.pro -+++ b/src/modules/modules.pro -@@ -1,15 +1,18 @@ - TEMPLATE = subdirs - SUBDIRS = FFmpeg Inputs Modplug Playlists Subtitles QPainter Extensions Visualizations AudioFilters VideoFilters --!contains(QT_CONFIG, opengles1): SUBDIRS += OpenGL2 -+!contains(QT_CONFIG, opengles1):!haiku: SUBDIRS += OpenGL2 - !android: SUBDIRS += AudioCD - linux*: { - !android: SUBDIRS += ALSA - else: SUBDIRS += OpenSLES - } -+haiku { -+ SUBDIRS += MediaKit -+} - else { - SUBDIRS += PortAudio - } --unix:!macx:!android { -+unix:!macx:!android:!haiku: { - !greaterThan(QT_MAJOR_VERSION, 4)|qtHaveModule(x11extras): SUBDIRS += XVideo - packagesExist(libpulse-simple): SUBDIRS += PulseAudio - } -diff --git a/src/qmplay2/qmplay2.pro b/src/qmplay2/qmplay2.pro -index 989746d..ca02ab2 100644 ---- a/src/qmplay2/qmplay2.pro -+++ b/src/qmplay2/qmplay2.pro -@@ -13,7 +13,9 @@ win32 { - !contains(QMAKE_CXX, x86_64-w64-mingw32-g++): LIBS += -lfontconfig - LIBS += -lexpat -lfreetype -lfribidi -Wl,-Bdynamic -lwinmm -lshell32 - } --else { -+haiku { -+ LIBS += /boot/system/develop/lib/x86/libswscale.a /boot/system/develop/lib/x86/libswresample.a /boot/system/develop/lib/x86/libavutil.a -lass -+} else { - macx: QT_CONFIG -= no-pkg-config - CONFIG += link_pkgconfig - PKGCONFIG += libswscale libswresample libavutil libass --- -2.2.2 - diff --git a/media-video/qmplay2/qmplay2-15.05.30.recipe b/media-video/qmplay2/qmplay2-15.05.30.recipe deleted file mode 100644 index 34ee1e147..000000000 --- a/media-video/qmplay2/qmplay2-15.05.30.recipe +++ /dev/null @@ -1,91 +0,0 @@ -SUMMARY="A video and audio player which can play most formats and codecs" -DESCRIPTION="QMPlay2 is a video and audio player. It can play all formats \ -supported by ffmpeg, libmodplug (including J2B and SFX). It also supports \ -Audio CD, raw files and Rayman 2 music. It contains YouTube and Prostoplee\ -r browser." -HOMEPAGE="http://zaps166.sourceforge.net" -COPYRIGHT="2010-2015 Błażej Szczygieł" -LICENSE="GNU GPL v3" -REVISION="2" -SOURCE_URI="git+https://github.com/zaps166/QMPlay2.git#43fd55b4e648d52f11de8f9c9c303f6149867f17" -PATCHES="qmplay2_x86-15.05.30.patchset" - -ARCHITECTURES="!x86_gcc2 x86 ?x86_64" -SECONDARY_ARCHITECTURES="x86" - -PROVIDES=" - qmplay2$secondaryArchSuffix = $portVersion - app:QMPlay2$secondaryArchSuffix = $portVersion - " -REQUIRES=" - haiku${secondaryArchSuffix} - libqt4$secondaryArchSuffix >= 4.8.0 - lib:libvorbis$secondaryArchSuffix - lib:libogg$secondaryArchSuffix - lib:libtag$secondaryArchSuffix - lib:libtag_c$secondaryArchSuffix - lib:libass$secondaryArchSuffix - lib:libcdio$secondaryArchSuffix - lib:libcddb$secondaryArchSuffix - lib:libtheora$secondaryArchSuffix - lib:libvpx$secondaryArchSuffix - lib:libiconv$secondaryArchSuffix - lib:libz$secondaryArchSuffix - lib:libfreetype$secondaryArchSuffix - lib:libfontconfig$secondaryArchSuffix - lib:libfribidi$secondaryArchSuffix - " - -BUILD_REQUIRES=" - haiku${secondaryArchSuffix}_devel - libqt4${secondaryArchSuffix}_devel >= 4.8.0 - devel:libavutil$secondaryArchSuffix >= 54 - devel:libavcodec$secondaryArchSuffix >= 56 - devel:libavformat$secondaryArchSuffix >= 56 - devel:libavdevice$secondaryArchSuffix >= 56 - devel:libavfilter$secondaryArchSuffix >= 5 - devel:libavresample$secondaryArchSuffix >= 2 - devel:libswscale$secondaryArchSuffix >= 3 - devel:libswresample$secondaryArchSuffix >= 1.1 - devel:libpostproc$secondaryArchSuffix >= 53 - devel:libvorbis$secondaryArchSuffix - devel:libogg$secondaryArchSuffix - devel:libtag$secondaryArchSuffix - devel:libtag_c$secondaryArchSuffix - devel:libass$secondaryArchSuffix - devel:libcdio$secondaryArchSuffix - devel:libcddb$secondaryArchSuffix - devel:libtheora$secondaryArchSuffix - devel:libvpx$secondaryArchSuffix - devel:libiconv$secondaryArchSuffix - devel:libz$secondaryArchSuffix - devel:libfreetype$secondaryArchSuffix - devel:libfontconfig$secondaryArchSuffix - devel:libfribidi$secondaryArchSuffix - " -BUILD_PREREQUIRES=" - cmd:qmake$secondaryArchSuffix - cmd:make - cmd:find - cmd:xargs - cmd:g++$secondaryArchSuffix - cmd:pkg_config$secondaryArchSuffix - " - -BUILD() -{ - ./compile_unix -} - -INSTALL() -{ - mkdir -p $appsDir/QMPlay2 - - cp app/QMPlay2 $appsDir/QMPlay2 - cp -R app/lib $appsDir/QMPlay2 - cp -R app/modules $appsDir/QMPlay2 - cp -R app/share/qmplay2/lang $appsDir/QMPlay2 - - addResourcesToBinaries haiku/QMPlay2.rdef $appsDir/QMPlay2/QMPlay2 - addAppDeskbarSymlink $appsDir/QMPlay2/QMPlay2 QMPlay2 -} diff --git a/media-video/qmplay2/qmplay2-15.10.03.recipe b/media-video/qmplay2/qmplay2-15.10.03.recipe deleted file mode 100644 index 471736de4..000000000 --- a/media-video/qmplay2/qmplay2-15.10.03.recipe +++ /dev/null @@ -1,93 +0,0 @@ -SUMMARY="A video and audio player which can play most formats and codecs" -DESCRIPTION="QMPlay2 is a video and audio player. It can play all formats \ -supported by ffmpeg, libmodplug (including J2B and SFX). It also supports \ -Audio CD, raw files and Rayman 2 music. It contains YouTube and Prostoplee\ -r browser." -HOMEPAGE="http://zaps166.sourceforge.net" -COPYRIGHT="2010-2015 Błażej Szczygieł" -LICENSE="GNU GPL v3" -REVISION="1" -SOURCE_URI="git+https://github.com/zaps166/QMPlay2.git#be5bbeba1e13cd6dbc3252d980e43868f56dadb5" -PATCHES="qmplay2_x86-15.10.03.patchset" - -ARCHITECTURES="!x86_gcc2 x86 ?x86_64" -SECONDARY_ARCHITECTURES="x86" - -PROVIDES=" - qmplay2$secondaryArchSuffix = $portVersion - app:QMPlay2$secondaryArchSuffix = $portVersion - " -REQUIRES=" - haiku${secondaryArchSuffix} - libqt4$secondaryArchSuffix >= 4.8.0 - lib:libvorbis$secondaryArchSuffix - lib:libogg$secondaryArchSuffix - lib:libtag$secondaryArchSuffix - lib:libtag_c$secondaryArchSuffix - lib:libass$secondaryArchSuffix - lib:libcdio$secondaryArchSuffix - lib:libcddb$secondaryArchSuffix - lib:libtheora$secondaryArchSuffix - lib:libvpx$secondaryArchSuffix - lib:libmodplug$secondaryArchSuffix - lib:libiconv$secondaryArchSuffix - lib:libz$secondaryArchSuffix - lib:libfreetype$secondaryArchSuffix - lib:libfontconfig$secondaryArchSuffix - lib:libfribidi$secondaryArchSuffix - " - -BUILD_REQUIRES=" - haiku${secondaryArchSuffix}_devel - libqt4${secondaryArchSuffix}_devel >= 4.8.0 - devel:libavutil$secondaryArchSuffix >= 54 - devel:libavcodec$secondaryArchSuffix >= 56 - devel:libavformat$secondaryArchSuffix >= 56 - devel:libavdevice$secondaryArchSuffix >= 56 - devel:libavfilter$secondaryArchSuffix >= 5 - devel:libavresample$secondaryArchSuffix >= 2 - devel:libswscale$secondaryArchSuffix >= 3 - devel:libswresample$secondaryArchSuffix >= 1.1 - devel:libpostproc$secondaryArchSuffix >= 53 - devel:libvorbis$secondaryArchSuffix - devel:libogg$secondaryArchSuffix - devel:libtag$secondaryArchSuffix - devel:libtag_c$secondaryArchSuffix - devel:libass$secondaryArchSuffix - devel:libcdio$secondaryArchSuffix - devel:libcddb$secondaryArchSuffix - devel:libtheora$secondaryArchSuffix - devel:libvpx$secondaryArchSuffix - devel:libmodplug$secondaryArchSuffix - devel:libiconv$secondaryArchSuffix - devel:libz$secondaryArchSuffix - devel:libfreetype$secondaryArchSuffix - devel:libfontconfig$secondaryArchSuffix - devel:libfribidi$secondaryArchSuffix - " -BUILD_PREREQUIRES=" - cmd:qmake$secondaryArchSuffix - cmd:make - cmd:find - cmd:xargs - cmd:g++$secondaryArchSuffix - cmd:pkg_config$secondaryArchSuffix - " - -BUILD() -{ - ./compile_unix -} - -INSTALL() -{ - mkdir -p $appsDir/QMPlay2 - - cp app/QMPlay2 $appsDir/QMPlay2 - cp -R app/lib $appsDir/QMPlay2 - cp -R app/modules $appsDir/QMPlay2 - cp -R app/share/qmplay2/lang $appsDir/QMPlay2 - - addResourcesToBinaries haiku/QMPlay2.rdef $appsDir/QMPlay2/QMPlay2 - addAppDeskbarSymlink $appsDir/QMPlay2/QMPlay2 QMPlay2 -} diff --git a/media-video/qmplay2/qmplay2-17.04.21.recipe b/media-video/qmplay2/qmplay2-17.10.24.recipe similarity index 75% rename from media-video/qmplay2/qmplay2-17.04.21.recipe rename to media-video/qmplay2/qmplay2-17.10.24.recipe index 70b08e564..40f6d3c72 100644 --- a/media-video/qmplay2/qmplay2-17.04.21.recipe +++ b/media-video/qmplay2/qmplay2-17.10.24.recipe @@ -8,11 +8,14 @@ COPYRIGHT="2010-2017 Błażej Szczygieł" LICENSE="GNU GPL v3" REVISION="1" SOURCE_URI="https://github.com/zaps166/QMPlay2/releases/download/$portVersion/QMPlay2-src-$portVersion.tar.xz" -CHECKSUM_SHA256="1a1d3910e28346febc7ef94dd3fcc3d7c0bde5e485114c744ada10647af31728" +CHECKSUM_SHA256="527f5f848aaefa4b5c7ddbce2f86ce46ffdc76be2890635106a2eaa9a8736b41" SOURCE_DIR="QMPlay2-src-$portVersion" PATCHES="qmplay2-$portVersion.patchset" - -ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" +ADDITIONAL_FILES=" + qmplay2.rdef.in + MediaKit.png + " +ARCHITECTURES="!x86_gcc2 ?x86_64" SECONDARY_ARCHITECTURES="?x86" PROVIDES=" @@ -64,18 +67,33 @@ BUILD_PREREQUIRES=" BUILD() { + cp $portDir/additional-files/MediaKit.png src/modules/MediaKit qmake . make $jobArgs } INSTALL() { + local APP_SIGNATURE="application/x-vnd.QMPlay2" + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/qmplay2.rdef.in > qmplay2.rdef + + addResourcesToBinaries qmplay2.rdef app/bin/QMPlay2 + mkdir -p $appsDir/QMPlay2 cp app/bin/QMPlay2 $appsDir/QMPlay2 cp -R app/lib $appsDir/QMPlay2 mv $appsDir/QMPlay2/lib/qmplay2/modules $appsDir/QMPlay2/ - addResourcesToBinaries haiku/QMPlay2.rdef $appsDir/QMPlay2/QMPlay2 addAppDeskbarSymlink $appsDir/QMPlay2/QMPlay2 QMPlay2 }