These questions goes out to Yuvalt however if anyone else care to fill me in then please do:
Question-1: I read that you deviced not to change all the Win32 API calls, but rather implement them in Linux. How do you handle that? Have you implemeneted a re-usable wrapper or common library based on code from
the WINE project, or? if not (yet) would that be good idea (to borrow code or library parts from
the WINE project)?
Question-2: How do you handle DirectX API calls (2D/3D video, sound, input devices, etc.), have/will you implement those in Linux or SDL or change them in XBMC? Again maybe add a wrapper from selected code parts or libraries from
the WINE project? There are also other open source projects with related wrappers like for example
http://sourceforge.net/projects/dxglwrap/ (a DirectX to OpenGL wrapper), though
the WINE project is probebely more up-to-date(?).
Question-3: Does the OpenGL renderer handle overlay for video (overlay texture like for example the menu on top of video)
Question-4: How do/will you now handle multiple output modules/renderers (auto-detect or static on build)? By the way, please keep API open for future Video Acceleration possibilities (for GPU assisted video decoding).
Question-5: How do you handle the skin texture compression format? can the same packed/compressed xpr skin-files be used under both Linux and Xbox/Win32? If not should we plan to migra to a other texture compression format that can be compatible under all operating-system and be decompressed/unpacked xpr using both DirectX and OpenGL?
Questsion-6: How do you handle the out the multiple modules (ALSA vs. OSS vs. DirectX DirectSound? auto-detect or static on build, or does SDL handle it?
Question-7: How well does the DLL loader in XBMC handle loading players such as paplayer, mplayer and the dvdplayer under Linux? Does the players (or the DLL loader) have to be modified or can they be loaded 'as is' under Linux? Maybe a common Win32 registry emulator is needed as well?
Question-8: Have you already implemened IR (infrared) remote support under Linux?, if not may I recommend
Lirc and
Wlirc (maybe add as a library/module to libSDL?). If possible maybe even replace the Xbox IR library (from the XDK) with a ported version of lirc/wlirc to stay consistant across platforms.
Questions-9: Have you already looked into using
Valgrind for debugging under Linux? (see
http://valgrind.org and
http://wiki.winehq.org/Wine_and_Valgrind). It can probebely help find memeory-leak bugs, etc. indirectly for XBMC on the Xbox as well, (ie. fix them for Linux and they will be fixed on the Xbox and Win32 as well).
Question-10: Have you/we decided on any Linux porting guide-lines?, like for example:
* Code documentation (DocBook, rst, or doxygen for the code documentation steps)
* Modular design (independent modules made upp by localized/isolated code libraries without dependcies)
**XBMC should still compile and run if a module is disabled/removed
* Cross-platform / cross-compiling; aim to compile and run on at least, Xbox, Win32 (Windows XP) and Linux
* Aim for the GUI/interface to run smoothly on a low spec computer (less than 1Ghz)
* Avoid harddisk trashing (access read/write), utilize RAM memory, no harddrive paging. Aim to run on Solid-State (CompactFlash)
* Fast load and boot times for end-user perception (other thing can still run/start in the background without the user knowledge)
**15-seconds or less from when the end user press the power-button on the computer til he/she can browse the GUI
PS! Great stuff with the Linux port so far, keept it up