diff --git a/app-emulation/aqemu/additional-files/aqemu.rdef.in b/app-emulation/aqemu/additional-files/aqemu.rdef.in index 51624e91a..ee4e0f108 100644 --- a/app-emulation/aqemu/additional-files/aqemu.rdef.in +++ b/app-emulation/aqemu/additional-files/aqemu.rdef.in @@ -1,5 +1,5 @@ -resource app_flags B_SINGLE_LAUNCH | B_ARGV_ONLY; +resource app_flags B_SINGLE_LAUNCH; resource app_version { major = @MAJOR@, @@ -15,3 +15,104 @@ resource app_version { resource app_signature "@APP_SIGNATURE@"; +resource vector_icon { + $"6E6369660F020016023948D63D3094BDDFAB39FD1F4ABA27497CCF00FFFF1002" + $"010602374523320A99B7657F3CB86948145E49514700F3C7B8FFD56138020106" + $"02377098344AFAB86DC73BA4CE49CB2B4B39D100F3C7B8FFD5613803CDBCB705" + $"FF05A4050104017B020116043600000000000000003600004780004480000001" + $"480169FFFFFF0400540500030000E5033366FF036698FF0398CBFF150212C0AD" + $"BDA5C0A6BDA3C125BDC0C1FCBE39C19CBDEAC209BE44C280BED9C267BEABC28C" + $"BEEEC2B6BFA0C2B0BF74C2CFC031C29AC155C2C0C0C7C28EC17E4449C22A47C0" + $"6DC439BF18C4E7BF12C4DCBED3C4F9BE4BC51DBE90C510BE1BC52DBD26C550BD" + $"57C54EBCD6C553BC37C54DBC87C54DBC3AC55DBC41C57CBC3DC56CBC38C56637" + $"C53ABC31C550BBBCC527BAE6C4E6BB4DC512BA79C4B8B9B5C433BA0FC480B984" + $"C408B934C3A2B954C3DBB8E2C314B8E6C1C8B8CCC268B8E9C1B63141B926C0C5" + $"353DBD4DBDFABC93BE2D3F3A0221BAF9B64B3226BB2DB67CBB6FB6FABB50B6BB" + $"BB81B726BB9EB77FBB95B751BBAEB7C1BBB9B849BBB6B805362EBBB4B929BBB9" + $"B8DEBBA2B9EBBB4FBB67BB7BBAAABB40BB97BB2BBBF9BB36BBC8BAFEBCA3BACC" + $"BDFFBADCBD50BACCBE55BACDBF01BAB9BEACBAD7BF31BAE3BF94BAD8BF63BAF1" + $"BFD2BB1CC04BBB00C011BB2AC06FBB3CC0BBBB31C096BB4EC0FDBB59C187BB5A" + $"C142BB5CC1DBBB13C276BB4AC234BAE9C2A3BA74C2CDBAB2C2C6BA2EC2D4B9AB" + $"C298B9E4C2C3B988C27EB951C239B969C25DB93AC216B916C1C9B929C1EEB914" + $"C1A7B901C165B909C186B905C123B8F7C0A1B8F1C0E3B8FDC075B905C01DB8FC" + $"C049B911BFE5B927BF74B918BFACB932BF41B94DBEDBB93CBF0DB9A8BD78BA33" + $"BAA8BA1BBC18BA37BA53BA29B9AABA34B9FEBA0FB945B9AAB88DB9EEB8DEB99D" + $"B87EB980B864B990B86FB963B85DB927B868B944B860B90AB871B8CEB875B8EB" + $"B86BB8B4B87EB87EB877B899B87BB8D1B85FB82CB7B22A2EB845B79EB875B773" + $"B861B78DB872B7362E28B88EB6333026020F444CC143C47EC15CC4B14350434E" + $"C0E7C634C0D7C8B14157C0D757C0B4C958C0D7C9294159BFD9CA39BFDFCA2CBF" + $"BCCA70BF83CAEDBF85CAEABF7BCAF9BF6ACB10BF72CB043FCB28BEB0CB36BED6" + $"CB46BE8FCB2ABE68CAC9BE67CAD6BE2ECAEEBDB0CB26BDF2CB103A5DBD15CAFE" + $"BD18CB19395BBDBCCA06BD83CA2BBE2EC9B2BF34C94DBEBEC99A40574053BFC7" + $"C7E2BFC7C5E43F4EBF64C5723F4E02143B4E3A4EBDC5C57D3953BD0DC6D5BCEA" + $"C783BCEEC8BE3856BCF1C8E0BCB9C93D3958BC82C949BC16C92ABC4BC935BBAB" + $"C912BACEC91DBB3BC90BBAACC921BA67C92ABA89C9213158B93AC93C3158B91C" + $"C935B8EDC908B8F9C9282F56B95BC877B935C880B974C86DB9A8C870B98FC871" + $"B9B8C861B9D8C846B9C4C84EBA05C82DBA6BC835BA3AC829BAA7C843BB22C856" + $"BAE3C8563656BC0CC809BBF7C826BC21C7EDBC63C6FA3755BC66C6C9BC5EC602" + $"BC65C624BC56C5D4BC41C57CBC4DC5A8BC3DC56CBC37C54DBC3AC55DBC87C54D" + $"BD26C550BCD6C553BD26C5500207B8E8B717B8CBB751B8F7B6FFB925B6DDB906" + $"B6E1B943B6DFB966B712B958B6FAB976B72EBA16B787312BBA3DB798BA4CB7F0" + $"BA58B7C6312FB74BB85C2D2E2B2C2E2B2D2CB8C7B73D0025C413BBB7C413BBB7" + $"C438BBADC483BB9FC45DBB9EC48DBB9EC49ABBABC494BBA4C49ABBBFC482BBE0" + $"C48FBBD1C45FBC0CC403BC4EC42FBC2BC45EBC29C523BC05C4BEBC00C540BC06" + $"C577BC1FC561BC0AC58CBC36C573BC72C587BC5CC553BC97C4FBBCC5C524BCAB" + $"C4C1BCE9C45DBD45C48EBD16C4B0BD294EBCEAC500BD04C57CBCDFC5D3BCEFC5" + $"AEBCD2C5E9BD06C5F4BD48C5F8BD28C5E2BD65C5A1BD7EC5C0BD72C52FBDA7C4" + $"50BE0AC4B3BDBFC4A2BDF8C54ABDFCC4F7BDEEC56FBE02C5B0BE2AC594BE0FC5" + $"BDBE37C5C2BE5DC5C8BE4AC5BBBE70C594BE7EC5A6BE78C54CBE92C4B7BE91C5" + $"00BE8AC473BE93C3EDBE9CC430BE93C372BEA6C280BED9C2F6BEB4C267BEABC2" + $"23BE5DC248BE81C233BE53C255BE41C244BE49C2A5BE1EC34ABDE9C2F5BDFDC3" + $"8BBDD7C40EBDB9C3D3BDDCC3E0BDAEC380BDB5C3AFBDB0C308BDBFC22ABE1BC2" + $"93BDE2C21ABE24C1FCBE39C20BBE2EC19CBDEAC0ADBDA5C125BDC0C0F5BD4AC1" + $"9BBCA8C147BCF7C1E3BC66C282BBF6C22EBC28C2B6BBD8C32DBBBF48BBBFC319" + $"BBD7C2EBBC01C301BBECC2E1BC09C2CEBC1BC2D8BC12C2BDBC2CC2ABBC5AC2B3" + $"BC43C31FBC1BC413BBB7C394BBDBC413BBB7021AC12EC2E5C118C2E2C14DC2E3" + $"C166C2A8C15CC2C2C170C2BEC17FC2EDC179C2D5C196C34AC181C40BC19DC3AE" + $"C175C42CC147C463C164C44FC130C472C115C445C121C454C107C469C0C7C49D" + $"C0F3C497C0A9C4A2C08BC46EC09AC483C083C49DC04FC4F0C073C4CEC03BC505" + $"BFFDC4FBC016C50DBFE7C4EABFCFC4B6BFDDC4CEBFC1C4C9BF97C4E3BFB4C4E8" + $"BF78C4DCBF4EC4ABBF62C4C2BF3AC494BF1EC45CBF30C475BF0DC44CBEE8C42C" + $"BEF3C443BEBFC3E5BED0C340BEC1C38FBED8C33EBEE9C339BEE0C33BBEF2C350" + $"BF13C376BEFBC36ABF33C387BF75C364BF5CC37CBF90C34DBFA6C30ABF9CC32A" + $"BFB4C324BFDDC351BFBFC345BFF4C35CC022C345C00EC352C03BC334C055C2FD" + $"C048C318C05FC309C073C320C068C316C083C330C0B1C328C09DC32EC0D8C318" + $"C0F7C2C8C0EDC2EFC108C2D30205C29BBCA8C23EBCDCC2C9BC91C32DBC74C2F9" + $"BC79C319BC88C2E6BCA1C2FFBC95C2A0BCC4C229BD29C261BCF3C204BD48C1B9" + $"BD86C1E4BD6FC1E9BD260205C3FFBC88C3B3BCA2C41EBC7DC45FBC75C43EBC74" + $"C44FBC81C42BBC8EC43EBC89C405BC9AC3BEBCC1C3E1BCADC393BCDCC33EBD13" + $"C36DBD00C36ABCCF0207C22ABE1BC21ABE24C293BDE2C380BDB5C308BDBFC3AF" + $"BDB0C40EBDB9C3E0BDAEC3D3BDDCC34ABDE9C38BBDD7C2F5BDFDC255BE41C2A5" + $"BE1EC244BE49C223BE5DC233BE53C216BE50C1FCBE39C209BE44C20BBE2E0204" + $"4030C34530BC3A30304030BC3A30C3454050BC3A50C34550504050C34550BC3A" + $"02042F2330232E232D252D242D262F272E2730273125312631240A0BC28CB54E" + $"BDD920B9ADB75220C4AAB81BC737BAE1C44CBDDFC5C5BEAEC8D0BF2DCABDC30D" + $"CCB1C778C81A0A04C1EDB5D8BE36B9C2C2E8CBC2C69FC7D80A08B8FEC27FBE8C" + $"C539BFE6CA41C2E8CBC2BE36B9C2BA4CB7CDB409C452B745C5F00A03B7FCC63E" + $"BA2AC3F3B955C38A0A04BE04B3E3BA4CB7CDBE36B9C2C1EDB5D80A06BEB9B9D6" + $"3CB930BDC7BA11C24ECB6EC2E8CBC2C34CCB5D0A08C1EDB5D8C189B5A6BE22B9" + $"34BAA6B776BA4CB7CDBA1AB831BE54BA47C20BB65D0A03BC37BC2FB9AEC141BE" + $"26C3930A042A424B504F4434371C0A07020A14024067BA0000000000003EDA12" + $"C3C3B549B8E30A060103124032F3000000000000402C3F38AEA3C438E3011583" + $"00040A010103024032F3000000000000402C3F38AEA3C438E30A060606020900" + $"0504124032F3000000000000402C3F38AEA3C438E301178322040A0001000240" + $"32F3000000000000402C3F38AEA3C438E30A020102024032F300000000000040" + $"2C3F38AEA3C438E30A060105124032F3000000000000402C3F38AEA3C438E301" + $"178100040A040105024032F3000000000000402C3F38AEA3C438E30A05010612" + $"4032F3000000000000402C3F38AEA3C438E301178100040A040106024032F300" + $"0000000000402C3F38AEA3C438E30A050107024032F3000000000000402C3F38" + $"AEA3C438E30A050108024032F3000000000000402C3F38AEA3C438E30A050109" + $"024032F3000000000000402C3F38AEA3C438E30A0A010C123ECD962F7232AF77" + $"F93ED248448DB3473A7B01158100040A0B010D023ECD962F7232AF77F93ED248" + $"448DB3473A7B0A0C010E023ECD962F7232AF77F93ED248448DB3473A7B0A0B01" + $"0F023ECD962F7232AF77F93ED248448DB3473A7B0A0D0110023ECD962F7232AF" + $"77F93ED248448DB3473A7B0A0D0111023ECD962F7232AF77F93ED248448DB347" + $"3A7B0A0E0112023ECD962F7232AF77F93ED248448DB3473A7B0A0A0113023ECD" + $"962F7232AF77F93ED248448DB3473A7B0A060101124032F3000000000000402C" + $"3F38AEA3C438E301178322040A010101024032F3000000000000402C3F38AEA3" + $"C438E30A030104024032F3000000000000402C3F38AEA3C438E30A06010B123E" + $"D3400000000000003ED34044B3E640EFDE01178422040A08010B023ED3400000" + $"000000003ED34044B3E640EFDE0A06010B123FFFFF0000000000003FFFFF4400" + $"0040000001178300040A08010B023FFFFF0000000000003FFFFF440000400000" +}; + diff --git a/app-emulation/aqemu/additional-files/haikuicons.zip b/app-emulation/aqemu/additional-files/haikuicons.zip new file mode 100644 index 000000000..e25490d1b Binary files /dev/null and b/app-emulation/aqemu/additional-files/haikuicons.zip differ diff --git a/app-emulation/aqemu/aqemu-0.9.2.recipe b/app-emulation/aqemu/aqemu-0.9.2.recipe index c0d75e774..46a4889d2 100644 --- a/app-emulation/aqemu/aqemu-0.9.2.recipe +++ b/app-emulation/aqemu/aqemu-0.9.2.recipe @@ -5,11 +5,14 @@ the majority of QEMU and KVM options." HOMEPAGE="https://github.com/tobimensch/aqemu/" COPYRIGHT="2008-2017 Andrey Rijov" LICENSE="GNU GPL v2" -REVISION="3" +REVISION="4" SOURCE_URI="https://github.com/tobimensch/aqemu/archive/v$portVersion.tar.gz" CHECKSUM_SHA256="e3d54de00ebdce3754f97f7e0e7cce8cebb588e8ce6bc249401cc909281b08de" PATCHES="aqemu-$portVersion.patchset" -ADDITIONAL_FILES="aqemu.rdef.in" +ADDITIONAL_FILES=" + aqemu.rdef.in + haikuicons.zip + " ARCHITECTURES="!x86_gcc2 x86_64" SECONDARY_ARCHITECTURES="x86" @@ -21,6 +24,7 @@ PROVIDES=" REQUIRES=" haiku$secondaryArchSuffix qemu$secondaryArchSuffix + lib:libdbus_1$secondaryArchSuffix lib:libQt5Core$secondaryArchSuffix lib:libQt5Gui$secondaryArchSuffix lib:libQt5Network$secondaryArchSuffix @@ -32,6 +36,7 @@ REQUIRES=" BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel + devel:libdbus_1$secondaryArchSuffix devel:libQt5Core$secondaryArchSuffix devel:libQt5Gui$secondaryArchSuffix devel:libQt5Network$secondaryArchSuffix @@ -44,26 +49,30 @@ BUILD_REQUIRES=" BUILD_PREREQUIRES=" cmd:cmake cmd:gcc$secondaryArchSuffix + cmd:lrelease$secondaryArchSuffix >= 5 cmd:make + cmd:qdbuscpp2xml$secondaryArchSuffix >= 5 " +PATCH() +{ + unzip -o $sourceDir/../../additional-files/haikuicons.zip -d $sourceDir/resources +} + BUILD() { mkdir -p build cd build - cmake $cmakeDirArgs .. + cmake .. -DCMAKE_BUILD_TYPE=Release make $jobArgs } INSTALL() { - cd build - make install - mkdir -p $appsDir/AQEMU - mv $prefix/bin/aqemu $appsDir/AQEMU/AQEMU - mv $prefix/share/aqemu/* $appsDir/AQEMU - rm -rf $binDir $prefix/share + cp build/aqemu $appsDir/AQEMU/AQEMU + cp -rf resources/{docs,os_icons,os_templates} $appsDir/AQEMU + cp -rf *.rcc $appsDir/AQEMU # Add Haiku resources local APP_SIGNATURE="application/x-vnd.qt5-aqemu" diff --git a/app-emulation/aqemu/patches/aqemu-0.9.2.patchset b/app-emulation/aqemu/patches/aqemu-0.9.2.patchset index 729d421d7..d025a21b6 100644 --- a/app-emulation/aqemu/patches/aqemu-0.9.2.patchset +++ b/app-emulation/aqemu/patches/aqemu-0.9.2.patchset @@ -1,8 +1,9 @@ -From 44d7e9a4ebb1062d5949f5a5d8e6346ad6cec8e9 Mon Sep 17 00:00:00 2001 -From: Ruixuan Tu -Date: Wed, 4 Dec 2019 21:00:00 +0800 +From 4a0e535415da4d786bb4f910416beea93dbe111a Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 5 May 2020 18:27:33 +1000 Subject: GCi 2019 Task - Aqemu - Add platform specific code to get memory size + diff --git a/src/Add_Port_Window.cpp b/src/Add_Port_Window.cpp index 116122c..46b8e27 100644 --- a/src/Add_Port_Window.cpp @@ -93,15 +94,217 @@ index d0e2f35..fe325f7 100644 static bool Scan_USB_Proc( QList &list ); static bool Read_SysFS_File( const QString &path, QString &data ); diff --git a/src/main.cpp b/src/main.cpp -index 46c96b6..c8ad196 100644 +index 40a3c61..ace8799 100644 --- a/src/main.cpp +++ b/src/main.cpp -@@ -361,7 +361,7 @@ int AQEMU_Main::find_data_folders() - // Find Data Folder - if( settings->value("AQEMU_Data_Folder", "").toString().isEmpty() ) - { -- #ifdef Q_OS_WIN32 -+ #if defined Q_OS_WIN32 || defined Q_OS_HAIKU - if( QDir(QDir::currentPath() + "\\os_icons").exists() && - QDir(QDir::currentPath() + "\\os_templates").exists() ) - { +@@ -240,7 +240,7 @@ int main( int argc, char *argv[] ) + // Find Data Folder + if( settings.value("AQEMU_Data_Folder", "").toString().isEmpty() ) + { +- #ifdef Q_OS_WIN32 ++ #if defined Q_OS_WIN32 || defined Q_OS_HAIKU + if( QDir(QDir::currentPath() + "\\os_icons").exists() && + QDir(QDir::currentPath() + "\\os_templates").exists() ) + { +-- +2.26.0 + + +From 97e54f7588b6ea1074dd7da0d87135091cfc1126 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 5 May 2020 19:32:10 +1000 +Subject: Add Qt to X11 scancode mapper for VNC + + +diff --git a/src/Embedded_Display/vncview.cpp b/src/Embedded_Display/vncview.cpp +index 8faef72..97527b1 100644 +--- a/src/Embedded_Display/vncview.cpp ++++ b/src/Embedded_Display/vncview.cpp +@@ -46,6 +46,116 @@ + #include + #include + ++#ifdef Q_OS_HAIKU ++ ++static const uint misc_keys[] = ++{ ++ XK_Escape, ++ XK_Tab, ++ XK_Tab, //XK_ISO_Left_Tab ++ XK_BackSpace, ++ XK_Return, ++ XK_KP_Enter, ++ XK_Insert, ++ XK_Delete, ++ XK_Pause, ++ XK_Print, ++ XK_Sys_Req, ++ XK_Clear, ++ ++ 0, 0, 0, 0, // padding ++ ++ XK_Home, ++ XK_End, ++ XK_Left, ++ XK_Up, ++ XK_Right, ++ XK_Down, ++ XK_Page_Up, ++ XK_Page_Down, ++ ++ 0, 0, 0, 0, 0, 0, 0, 0, // padding ++ ++ XK_Shift_L, ++ XK_Control_L, ++ XK_Super_L, ++ XK_Alt_L, ++ XK_Caps_Lock, ++ XK_Num_Lock, ++ XK_Scroll_Lock, ++ ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, // padding ++ ++ XK_F1, ++ XK_F2, ++ XK_F3, ++ XK_F4, ++ XK_F5, ++ XK_F6, ++ XK_F7, ++ XK_F8, ++ XK_F9, ++ XK_F10, ++ XK_F11, ++ XK_F12, ++ XK_F13, ++ XK_F14, ++ XK_F15, ++ XK_F16, ++ XK_F17, ++ XK_F18, ++ XK_F19, ++ XK_F20, ++ XK_F21, ++ XK_F22, ++ XK_F23, ++ XK_F24, ++ XK_F25, ++ ++ 0 ++}; ++ ++static bool capslock_active = false; ++static Qt::KeyboardModifiers mod_last = 0; ++ ++unsigned int map_qt_to_x11(QKeyEvent *e) ++{ ++ int k = e->key(); ++ bool pressed = (e->type() == QEvent::KeyPress); ++ Qt::KeyboardModifiers mod = e->modifiers(); ++ Qt::KeyboardModifiers modXor = mod ^ mod_last; ++ mod_last = mod; ++ ++ if (k >= XK_space && k <= XK_ydiaeresis) ++ { ++ #define XOR(a, b) (!(a && b) && (a || b)) ++ ++ // check if lowercase ascii ++ if ((k >= XK_A && k <= XK_Z ++ || k >= XK_Agrave && k <= XK_Thorn) ++ && !(XOR(mod & Qt::ShiftModifier, capslock_active))) ++ return k + 0x20; ++ ++ #undef XOR ++ qDebug() << k; ++ return k; ++ } ++ ++ if (k >= 0x01000000 && k <= 0x01000048) { ++ return misc_keys[k - 0x01000000]; ++ } ++ ++ if (modXor & Qt::ShiftModifier) ++ return XK_Shift_L; ++ if (modXor & Qt::ControlModifier) ++ return XK_Control_L; ++ if (modXor & Qt::AltModifier) ++ return XK_Alt_L; ++ ++ return 0; ++} ++#endif ++ + // Definition of key modifier mask constants + #define KMOD_Alt_R 0x01 + #define KMOD_Alt_L 0x02 +@@ -579,7 +689,11 @@ void VncView::keyEventHandler(QKeyEvent *e) + return; + + // parts of this code are based on http://italc.sourcearchive.com/documentation/1.0.9.1/vncview_8cpp-source.html ++#ifdef Q_OS_HAIKU ++ rfbKeySym k = map_qt_to_x11(e); ++#else + rfbKeySym k = e->nativeVirtualKey(); ++#endif + + // we do not handle Key_Backtab separately as the Shift-modifier + // is already enabled +-- +2.26.0 + + +From 2493544de2b6e7acbe143115ecd653152b1c8309 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 5 May 2020 20:49:18 +1000 +Subject: Use application dir as data dir + + +diff --git a/src/main.cpp b/src/main.cpp +index ace8799..ef05043 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -240,7 +240,7 @@ int main( int argc, char *argv[] ) + // Find Data Folder + if( settings.value("AQEMU_Data_Folder", "").toString().isEmpty() ) + { +- #if defined Q_OS_WIN32 || defined Q_OS_HAIKU ++ #ifdef Q_OS_WIN32 + if( QDir(QDir::currentPath() + "\\os_icons").exists() && + QDir(QDir::currentPath() + "\\os_templates").exists() ) + { +@@ -257,6 +257,9 @@ int main( int argc, char *argv[] ) + dataDirs << "/usr/share/aqemu/" + << "/usr/share/apps/aqemu/" + << "/usr/local/share/aqemu/"; ++#ifdef Q_OS_HAIKU ++ dataDirs << QCoreApplication::applicationDirPath() + "/"; ++#endif + + // Find data dir + for( int dx = 0; dx < dataDirs.count(); ++dx ) +-- +2.26.0 + + +From 109b0f04f8d6d2a365c1762cd35ec7b8c412f30e Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 23 May 2020 13:35:04 +1000 +Subject: Disable optimizations + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2dd5eb7..5f52c2d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -23,6 +23,8 @@ IF( DEBUG ) + ADD_DEFINITIONS( -Wall -g ) + ENDIF( DEBUG ) + ++set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O0") ++ + # For find VNC libs + SET( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ) + +-- +2.26.0 +