MantisBT - MPfm |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0000302 | MPfm | [All Projects] Global | public | 2012-02-26 22:26 | 2013-06-24 12:53 |
|
Reporter | ycastonguay | |
Assigned To | ycastonguay | |
Priority | high | Severity | feature | Reproducibility | N/A |
Status | assigned | Resolution | fixed | |
Platform | | OS | | OS Version | |
Product Version | | |
Target Version | 0.7.0.0 | Fixed in Version | 0.6.0.0 | |
|
Summary | 0000302: Add support for multiple platforms using the Mono Framework (Linux, OS X, iOS, Android) |
Description | Mono is a C# cross platform open source implementation of .NET. It supports WinForms. http://www.mono-project.com/Main_Page [^]
Converting to Mono would make the application work on Linux and Mac OS X, *IF* the third party libraries can work on those platforms. They all theoretically support these platforms, but that doesn't mean they work under Mono on those platforms.
I ran the MoMA test (Mono Migration Analyzer) and it seems that converting to Mono wouldn't be that bad after all. The errors it gave are 98% because of using the Win32 version of bass.dll (P/Invoke). According to this thread (http://www.un4seen.com/forum/?topic=7260.0;hl=mono+linux [^]) if the Linux version is used, there are no P/Invoke problems.
More info:
http://www.mono-project.com/Interop_with_Native_Libraries [^]
http://www.mono-project.com/Guide:_Porting_Winforms_Applications [^]
-------
The prototype is sufficiently advanced to say that a Mono version will be done! |
Steps To Reproduce | |
Additional Information | |
Tags | No tags attached. |
Relationships | parent of | 0000305 | resolved | ycastonguay | Determine default audio configuration by platform (Linux/Mac) | parent of | 0000303 | resolved | ycastonguay | Change the way BASS plugins are loaded to support other platforms (Windows/Linux/Mac) | parent of | 0000308 | resolved | ycastonguay | Add a GTK# project to the solution (for Linux) | parent of | 0000309 | resolved | ycastonguay | Add a MonoMac project to the solution (for Mac OS X) | parent of | 0000323 | resolved | ycastonguay | Remove the dependency for the Reactive Extensions | parent of | 0000322 | resolved | ycastonguay | Remove the dependency for the Async Framework | parent of | 0000324 | assigned | ycastonguay | Use a MVP-style pattern to centralize code for UI on multiple platforms | parent of | 0000381 | assigned | ycastonguay | Implement the MPfm.MVP views in MonoMac (Mac OS X 10.6+) | parent of | 0000382 | assigned | ycastonguay | Implement the MPfm.MVP views in GTKSharp (Linux) | parent of | 0000394 | assigned | ycastonguay | Implement the MPfm.MVP views in a lightweight console application | parent of | 0000405 | assigned | ycastonguay | Implement the MPfm.MVP views for iOS | parent of | 0000406 | assigned | ycastonguay | Implement the MPfm.MVP views for Android | parent of | 0000422 | assigned | ycastonguay | Implement the MPfm.MVP views for Windows | Not all the children of this issue are yet resolved or closed. |
|
Attached Files | output.html (440,936) 2012-02-26 22:27 http://mp4m.org/mantis/file_download.php?file_id=1&type=bug |
|
Issue History |
Date Modified | Username | Field | Change |
2012-02-26 22:26 | ycastonguay | New Issue | |
2012-02-26 22:26 | ycastonguay | Status | new => assigned |
2012-02-26 22:26 | ycastonguay | Assigned To | => ycastonguay |
2012-02-26 22:27 | ycastonguay | Description Updated | bug_revision_view_page.php?rev_id=130#r130 |
2012-02-26 22:27 | ycastonguay | File Added: output.html | |
2012-02-26 22:29 | ycastonguay | Note Added: 0000447 | |
2012-02-29 17:05 | ycastonguay | Note Added: 0000448 | |
2012-02-29 18:14 | ycastonguay | Note Added: 0000449 | |
2012-02-29 18:15 | ycastonguay | Note Edited: 0000448 | bug_revision_view_page.php?bugnote_id=448#r132 |
2012-03-10 07:27 | ycastonguay | Note Added: 0000469 | |
2012-03-10 08:53 | ycastonguay | Note Deleted: 0000469 | |
2012-03-11 19:24 | ycastonguay | Note Added: 0000471 | |
2012-03-11 19:24 | ycastonguay | Status | assigned => resolved |
2012-03-11 19:24 | ycastonguay | Fixed in Version | => 0.6.0.0 |
2012-03-11 19:24 | ycastonguay | Resolution | open => fixed |
2012-03-11 19:35 | ycastonguay | Status | resolved => assigned |
2012-03-11 19:36 | ycastonguay | Summary | Check if the project could be converted to Mono (support for Linux and Mac OS X) => Add support for the Mono Framework (support for Linux and Mac OS X) |
2012-03-11 19:36 | ycastonguay | Description Updated | bug_revision_view_page.php?rev_id=133#r133 |
2012-03-11 19:37 | ycastonguay | Relationship added | parent of 0000306 |
2012-03-11 19:37 | ycastonguay | Relationship added | parent of 0000305 |
2012-03-11 19:38 | ycastonguay | Relationship added | parent of 0000303 |
2012-03-11 19:38 | ycastonguay | Relationship added | parent of 0000304 |
2012-03-11 22:33 | ycastonguay | Relationship added | parent of 0000308 |
2012-03-11 22:34 | ycastonguay | Relationship added | parent of 0000309 |
2012-03-20 21:00 | ycastonguay | Target Version | 0.6.0.0 => 0.7.0.0 |
2012-03-31 09:53 | ycastonguay | Relationship added | parent of 0000323 |
2012-03-31 09:53 | ycastonguay | Relationship added | parent of 0000322 |
2012-03-31 09:54 | ycastonguay | Relationship added | parent of 0000324 |
2012-06-09 14:18 | ycastonguay | Relationship added | parent of 0000381 |
2012-06-09 14:20 | ycastonguay | Relationship added | parent of 0000382 |
2012-07-03 20:09 | ycastonguay | Relationship added | parent of 0000394 |
2013-01-11 17:55 | ycastonguay | Summary | Add support for the Mono Framework (support for Linux and Mac OS X) => Add support for multiple platforms using the Mono Framework (Linux, OS X, iOS, Android) |
2013-01-11 17:59 | ycastonguay | Relationship added | parent of 0000405 |
2013-01-11 18:14 | ycastonguay | Relationship added | parent of 0000406 |
2013-06-24 12:53 | ycastonguay | Relationship added | parent of 0000422 |
Notes |
|
|
The Async framework and Reactive Extensions might not work at all under Mono. |
|
|
(0000448)
|
ycastonguay
|
2012-02-29 17:05
(edited on: 2012-02-29 18:15) |
|
After some testing, I was able to do a very simple prototype with the BASS library. It indeed works using Mono on Linux and Mac OS X.
The next step is deciding on a UI framework. Technically, Mono supports Windows Forms but when I tried to run MPfm on Mono, the designer.cs files gave a lot of errors. The SplitContainer does not seem to be supported.
So maybe WinForms can be kept for Windows, but GTK could be used for Linux and Mac. MonoMac + Cocoa can be used for Mac too; it doesn't require a UI framework to run, only Mono installed. The native controls are used instead. However, that would mean a different UI toolkit for each platform.
I'm also looking at what can be bundled as an app for the Mac App Store (Mono, GTK). If GTK can be used, that could be a better idea than having 3 different UI toolkits.
http://www.mono-project.com/Gui_Toolkits [^]
http://stackoverflow.com/questions/751884/winforms-vs-gtksharp-with-mono [^]
|
|
|
|
Mono supports SQLite natively for .NET 4.0. The code seems slightly different than what is used in Windows though, so maybe an interface should be added to the Gateway class.
http://www.mono-project.com/SQLite [^] |
|
|
|
I've pushed the prototype further and now the Player class is 90% functional under Mono. The gapless playback and sync points work so far on Linux. |
|