Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000302MPfm[All Projects] Globalpublic2012-02-26 22:262013-06-24 12:53
Reporterycastonguay 
Assigned Toycastonguay 
PriorityhighSeverityfeatureReproducibilityN/A
StatusassignedResolutionfixed 
PlatformOSOS Version
Product Version 
Target Version0.7.0.0Fixed in Version0.6.0.0 
Summary0000302: Add support for multiple platforms using the Mono Framework (Linux, OS X, iOS, Android)
DescriptionMono 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!
TagsNo tags attached.
Attached Fileshtml file icon output.html [^] (440,936 bytes) 2012-02-26 22:27

- Relationships
parent of 0000305resolvedycastonguay Determine default audio configuration by platform (Linux/Mac) 
parent of 0000303resolvedycastonguay Change the way BASS plugins are loaded to support other platforms (Windows/Linux/Mac) 
parent of 0000308resolvedycastonguay Add a GTK# project to the solution (for Linux) 
parent of 0000309resolvedycastonguay Add a MonoMac project to the solution (for Mac OS X) 
parent of 0000323resolvedycastonguay Remove the dependency for the Reactive Extensions 
parent of 0000322resolvedycastonguay Remove the dependency for the Async Framework 
parent of 0000324assignedycastonguay Use a MVP-style pattern to centralize code for UI on multiple platforms 
parent of 0000381assignedycastonguay Implement the MPfm.MVP views in MonoMac (Mac OS X 10.6+) 
parent of 0000382assignedycastonguay Implement the MPfm.MVP views in GTKSharp (Linux) 
parent of 0000394assignedycastonguay Implement the MPfm.MVP views in a lightweight console application 
parent of 0000405assignedycastonguay Implement the MPfm.MVP views for iOS 
parent of 0000406assignedycastonguay Implement the MPfm.MVP views for Android 
parent of 0000422assignedycastonguay Implement the MPfm.MVP views for Windows 
Not all the children of this issue are yet resolved or closed.

-  Notes
(0000447)
ycastonguay (administrator)
2012-02-26 22:29

The Async framework and Reactive Extensions might not work at all under Mono.
(0000448)
ycastonguay (administrator)
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 [^]

(0000449)
ycastonguay (administrator)
2012-02-29 18:14

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 [^]
(0000471)
ycastonguay (administrator)
2012-03-11 19:24

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.

- 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 View Revisions
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 View Revisions
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 View Revisions
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


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker