<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XBMC &#187; Jonathan</title>
	<atom:link href="http://xbmc.org/author/jmarshall/feed/" rel="self" type="application/rss+xml" />
	<link>http://xbmc.org</link>
	<description></description>
	<lastBuildDate>Sun, 22 Jan 2012 07:56:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux.conf.au Report</title>
		<link>http://xbmc.org/jmarshall/2010/01/28/linux-conf-au-report/</link>
		<comments>http://xbmc.org/jmarshall/2010/01/28/linux-conf-au-report/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 22:24:32 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>

		<guid isPermaLink="false">http://xbmc.org/?p=3457</guid>
		<description><![CDATA[David Teirney and I just got back from hosting a successful booth at the Linux.conf.au open day in Wellington, NZ.
It was great to meet a bunch of people and show them just what XBMC is all about.  In particular it was great meeting Erik de Castro Lopo of libsamplerate fame, which we use for resampling [...]]]></description>
			<content:encoded><![CDATA[<p>David Teirney and I just got back from hosting a successful booth at the <a href="http://www.lca2010.org.nz/">Linux.conf.au</a> open day in Wellington, NZ.</p>
<p>It was great to meet a bunch of people and show them just what XBMC is all about.  In particular it was great meeting Erik de Castro Lopo of <a href="http://www.mega-nerd.com/SRC/">libsamplerate</a> fame, which we use for resampling audio when video is synced to the refresh rate of the monitor.</p>
<p>We had 3 systems showing off what XBMC could do, one of which was the MSI Windtop AE2020 &#8211; an all in one unit with a 20&#8243; touchscreen kindly on loan from MSI Europe (Look out for an upcoming post where you&#8217;ll see some of the new touch stuff being utilized within XBMC.)</p>
<p>Thanks heaps to the Linux.conf.au organizing committee and everyone who popped over to the booth &#8211; we&#8217;ll definitely see you all again in Brisbane at next year&#8217;s Linux.conf.au!</p>
<div id="attachment_3458" class="wp-caption aligncenter" style="width: 650px"><img class="size-full wp-image-3458" title="linuxconf-scaled" src="http://xbmc.org/wordpress/wp-content/uploads/2010/01/linuxconf-scaled.jpg" alt="Left: Jonathan Right: Patrick" width="640" height="480" /><p class="wp-caption-text">Left: Jonathan Marshall (almost smiling for once), Right: Patrick, JM&#39;s helper for the day</p></div>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2010/01/28/linux-conf-au-report/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Singles support in the Music Library</title>
		<link>http://xbmc.org/jmarshall/2009/09/09/singles-support-in-the-music-library/</link>
		<comments>http://xbmc.org/jmarshall/2009/09/09/singles-support-in-the-music-library/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 10:39:30 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>

		<guid isPermaLink="false">http://xbmc.org/?p=2653</guid>
		<description><![CDATA[I have many singles in my music collection &#8211; songs that were released independently of an album, or perhaps in parallel to an album release. As part of an album release, the single may be a particular edit (such as an edit for radio) and thus be somewhat different than the album version of the [...]]]></description>
			<content:encoded><![CDATA[<p>I have many singles in my music collection &#8211; songs that were released independently of an album, or perhaps in parallel to an album release. As part of an album release, the single may be a particular edit (such as an edit for radio) and thus be somewhat different than the album version of the track. There&#8217;s also a whole heap of singles released that don&#8217;t end up on an album.</p>
<p>Singles and albums are <em>different</em> and it&#8217;s always irked me that music software tends to just lump the two together into a single listing, where you end up with hundreds of single-song &#8220;albums&#8221; in your listings. Of course, this is the same way XBMC has dealt with it. Until now.</p>
<p>Now, you have another option for your Singles, thanks to the <a title="suggestion" href="http://forum.xbmc.org/showthread.php?t=56516">suggestion</a> by forum member <strong>thomash72</strong>. If you wish your singles to be separate from albums, then just remove the ALBUM tag from the track. XBMC treats any songs without an ALBUM tag as a single, and thus:</p>
<p>1.  Album covers aren&#8217;t cached for these blank ALBUMs &#8211; instead we cache the thumb per song, so each single from the same artist can have it&#8217;s own covers.</p>
<p>2.  The songs don&#8217;t show up in the Albums listing in the Music Library (after all, they&#8217;re not albums).</p>
<p>3.  If you browse to an artist, then it&#8217;ll list all the albums by that artist and, in addition, will group the singles by that artist into a Singles folder.</p>
<p style="text-align: left;"><img class="size-full wp-image-2656 aligncenter" title="Singles item when browsing by Albums by Artist." src="http://xbmc.org/wordpress/wp-content/uploads/2009/09/Picture-3.jpg" alt="Singles item when browsing by Albums by Artist." width="640" height="466" />4.  Lastly, if you have any Singles in your music library, a new Singles item will be available in your Library listing.<img class="size-full wp-image-2655 aligncenter" title="Library listing with Singles" src="http://xbmc.org/wordpress/wp-content/uploads/2009/09/Picture-2.jpg" alt="Library listing with Singles" width="640" height="466" /></p>
<p>Finally, a nice way to have your singles available in the library without them cluttering up the albums listing!</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/09/09/singles-support-in-the-music-library/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Video library redesign - do you use the Actors/Genres nodes?</title>
		<link>http://xbmc.org/jmarshall/2009/05/24/video-library-redesign-do-you-use-the-actorsgenres-nodes/</link>
		<comments>http://xbmc.org/jmarshall/2009/05/24/video-library-redesign-do-you-use-the-actorsgenres-nodes/#comments</comments>
		<pubDate>Sun, 24 May 2009 00:23:57 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[video library]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=43</guid>
		<description><![CDATA[I&#8217;m currently reviewing the video library in order to make it far more flexible, as well as making it easier to use. The first thing I&#8217;m evaluating is just what sort of heirarchy is required for Movies and TV shows.  Our current heirarchy gives Genre, Actor, Director, Year, and Studio nodes in addition to the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently reviewing the video library in order to make it far more flexible, as well as making it easier to use. The first thing I&#8217;m evaluating is just what sort of heirarchy is required for Movies and TV shows.  Our current heirarchy gives Genre, Actor, Director, Year, and Studio nodes in addition to the Title node.  Most of our users skip this stage by flattening the library &#8211; indeed, many skins nowadays take you directly to the Title nodes from the homepage, so some users may not know they exist!</p>
<p><a href="http://xbmc.org/jmarshall/files/genre_node.jpg" rel="shadowbox[post-1462];player=img;"><img class="aligncenter size-full wp-image-44" src="http://xbmc.org/jmarshall/files/genre_node.jpg" alt="" width="500" height="281" /></a></p>
<p>Given that these nodes are not widely used, it seems sensible to see whether or not we can do things differently to get the same (or better) functionality without having such a heirarchy in place.</p>
<p>My initial thoughts:</p>
<ul>
<li>Studio and Year browsing are likely not used at all.</li>
<li>Actors and Directors are better served by searching and/or a &#8220;Related movies to this movie&#8221; feature.</li>
<li>Genre browsing might be better served by some sort of &#8220;filter&#8221; system, where we just show you the movies or shows broken down by one or more genres.</li>
</ul>
<p>One idea for a &#8220;filter&#8221; system is a Filter button which when clicked gives you a list of pre-configured filters, or allows you to design of a new filter, which is saved for later use.  Similar to smartplaylists, but simplified down a bit, and available in any listing.</p>
<p>If you have some thoughts, and in particular, if you make use of the current &#8220;category&#8221; nodes on a regular basis, then please <a href="http://forum.xbmc.org/showthread.php?t=51605">head over to the forums and make yourself heard</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/05/24/video-library-redesign-do-you-use-the-actorsgenres-nodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XBMC running on nVidia ION reference box</title>
		<link>http://xbmc.org/jmarshall/2009/05/23/xbmc-running-on-nvidia-ion-reference-box/</link>
		<comments>http://xbmc.org/jmarshall/2009/05/23/xbmc-running-on-nvidia-ion-reference-box/#comments</comments>
		<pubDate>Sun, 24 May 2009 02:35:37 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[video playback]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=32</guid>
		<description><![CDATA[nVidia have been kind enough to loan one of our devs (motd2k) an ION reference box that we can use to showcase XBMC at Linuxtag.

It has what appears to be an Atom 230 processor, so compilation of XBMC took just over an hour, but thanks to hardware accelerated video decoding, performance while running XBMC is [...]]]></description>
			<content:encoded><![CDATA[<p><a title="nVidia" href="http://nvidia.com">nVidia</a> have been kind enough to loan one of our devs (motd2k) an <a title="ION" href="http://www.nvidia.com/object/sff_ion.html">ION</a> reference box that we can use to showcase XBMC at <a title="Linuxtag 2009" href="http://xbmc.org/blog/2009/05/04/xbmc-will-have-a-booth-at-linuxtag-2009-in-berlin/">Linuxtag</a>.</p>
<p style="text-align: center"><a href="http://xbmc.org/jmarshall/files/nvidia_ion.jpg" rel="shadowbox[post-1458];player=img;"><img class="size-full wp-image-36 aligncenter" src="http://xbmc.org/jmarshall/files/nvidia_ion.jpg" alt="" width="500" height="286" /></a></p>
<p>It has what appears to be an Atom 230 processor, so compilation of XBMC took just over an hour, but thanks to hardware accelerated video decoding, <a href="http://www.youtube.com/watch?v=rv1Q_DWieAQ" rel="shadowbox[post-1458];player=swf;width=640;height=385;" target="_blank">performance while running XBMC is awesome</a></p>
<p>[HTML1]</p>
<p>More pics are available in the <a href="http://forum.xbmc.org/showthread.php?t=51519">forums</a>, and if you want to see it in action, get to Linuxtag in Berlin, June 24-27.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/05/23/xbmc-running-on-nvidia-ion-reference-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New multiimage control code allows background loading</title>
		<link>http://xbmc.org/jmarshall/2009/05/14/new-multiimage-control-code-allows-background-loading/</link>
		<comments>http://xbmc.org/jmarshall/2009/05/14/new-multiimage-control-code-allows-background-loading/#comments</comments>
		<pubDate>Thu, 14 May 2009 02:11:46 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=30</guid>
		<description><![CDATA[With the nice new background loading textures, complete with their own crossfading and so on, it made sense to rewrite the multiimage control to make use of this.  Previously the multiimage control generated however many image controls it needed and did all the fading, texture loading and sizing itself.
Now it just utilizes a single image [...]]]></description>
			<content:encoded><![CDATA[<p>With the nice new <a title="better background loading" href="http://xbmc.org/jmarshall/2009/05/12/some-texture-tweaks-for-better-background-loading/">background loading textures</a>, complete with their own crossfading and so on, it made sense to rewrite the multiimage control to make use of this.  Previously the multiimage control generated however many image controls it needed and did all the fading, texture loading and sizing itself.</p>
<p>Now it just utilizes a single image control with &lt;fadetime&gt; set, and just sets the new filename when necessary.  Obviously it supports background=&#8221;true&#8221; (on the &lt;imagepath&gt; tag) to allow the images to load in the background.</p>
<p>Combined with the recently added support for static content updates, you can now do most of the background changing on different states that skins normally do with a single multiimage control, rather than having a separate control (or multiple separate controls) for each state.  Examples would be the various <a title="Aeon" href="http://www.aeonproject.com/">Aeon</a> incarnations, <a title="Mediastream" href="http://teamrazorfish.co.uk/">Mediastream</a>, or even PM3.HD&#8217;s homescreen.</p>
<p>Steps involve:</p>
<ol>
<li>Fill your container (wraplist or list) with static content.</li>
<li>Set the &lt;icon&gt; tag to point to the &#8220;normal&#8221; background image you want displayed for that item (image should be outside of Textures.xpr).</li>
<li>Set the &lt;thumb&gt; tag to a skin settable background images (or path of background images, or to something like Weather.Fanart etc.)</li>
<li>Create a single multiimage control for the backdrop, using &lt;imagepath background=&#8221;true&#8221;&gt;ListItem.Icon&lt;/imagepath&gt;.</li>
</ol>
<p>Due to the &#8220;fallback&#8221; functionality of ListItem.Icon, if there is a custom background image or folder set, it&#8217;ll use it, else it&#8217;ll use the normal backdrop for that item.</p>
<p>As the user moves through the items in the list, the multiimage control will update the path to the current image, and you&#8217;ll get seamless transistions between the different backdrops, with no stutter due to all the image loading being done in the background.</p>
<p>Nicer effects and smoother navigation with far less code &#8211; what could be better!</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/05/14/new-multiimage-control-code-allows-background-loading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some texture tweaks for better background loading</title>
		<link>http://xbmc.org/jmarshall/2009/05/12/some-texture-tweaks-for-better-background-loading/</link>
		<comments>http://xbmc.org/jmarshall/2009/05/12/some-texture-tweaks-for-better-background-loading/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:31:04 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=28</guid>
		<description><![CDATA[Another couple of nice changes have hit SVN for you skinners.  There&#8217;s been a bug fixed in the large texture manager (that handles background loading of images) &#8211; it used to wait up to a second between loading images, which meant you couldn&#8217;t really use them in situations where you needed a lot of textures [...]]]></description>
			<content:encoded><![CDATA[<p>Another couple of nice changes have hit SVN for you skinners.  There&#8217;s been a bug fixed in the large texture manager (that handles background loading of images) &#8211; it used to wait up to a second between loading images, which meant you couldn&#8217;t really use them in situations where you needed a lot of textures loaded all at once.  This has been remedied.</p>
<p>I&#8217;ve also added an attribute background=&#8221;true&#8221; to all texture related tags.  This forces the image to be loaded via the large texture manager <em>except for textures in Textures.xpr</em>.</p>
<p>Jezz_X also suggested a slight tweak to info images with &lt;fadetime&gt; set.  Now, if the first texture to load in a window is already in memory (due to being used in a previous window) it will load instantly, and thus forgo the usual fade in.</p>
<p>All these changes mean:</p>
<ul>
<li>You can use the background texture loader for images within containers &#8211; this means your wall thumbs can be loaded in the background, giving silky smooth scrolling, at the expense of a slight delay in loading the image (you can mask this by using a loading image for instance).</li>
<li>You can use the background texture loader for background images that persist across window transitions &#8211; there&#8217;s no fade in due to the new window being opened.</li>
</ul>
<p>With judicious use of background=&#8221;true&#8221; you can have texture-rich skins whilst still having nice, smooth scrolling.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/05/12/some-texture-tweaks-for-better-background-loading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier to adjust audio and video settings</title>
		<link>http://xbmc.org/jmarshall/2009/05/11/easier-to-adjust-audio-and-video-settings/</link>
		<comments>http://xbmc.org/jmarshall/2009/05/11/easier-to-adjust-audio-and-video-settings/#comments</comments>
		<pubDate>Mon, 11 May 2009 03:22:42 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[Skins]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[video playback]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=23</guid>
		<description><![CDATA[Just thought I&#8217;d comment on a nice recently added feature. ubikdood did up a nice patch that gave a popup slider dialog, similar to the seek bar and volume bar, when the audio and subtitle delays were adjusted, to give nice, visual feedback as you adjust these settings directly via a keypress.

After discussions with Jezz_X, [...]]]></description>
			<content:encoded><![CDATA[<p>Just thought I&#8217;d comment on a nice recently added feature. ubikdood did up <a title="Patch" href="http://trac.xbmc.org/ticket/6393">a nice patch</a> that gave a popup slider dialog, similar to the seek bar and volume bar, when the audio and subtitle delays were adjusted, to give nice, visual feedback as you adjust these settings directly via a keypress.</p>
<p style="text-align: center"><a href="http://xbmc.org/jmarshall/files/screenshot003.jpg" rel="shadowbox[post-1449];player=img;"><img class="size-full wp-image-25 aligncenter" src="http://xbmc.org/jmarshall/files/screenshot003.jpg" alt="" width="640" height="360" /></a></p>
<p style="text-align: left">After discussions with Jezz_X, we thought it&#8217;d be nice to extend this feature to the other slider based settings in the Audio and Video OSDs.  The Audio and Video OSDs currently tend to take up a lot of space on screen, which makes some adjustments difficult.  If the audio and video sync is out, it&#8217;s hard enough trying to fix it without having a bunch of stuff covering up the video!</p>
<p style="text-align: left"><a href="http://xbmc.org/jmarshall/files/screenshot000.jpg" rel="shadowbox[post-1449];player=img;"><img class="size-full wp-image-24 aligncenter" src="http://xbmc.org/jmarshall/files/screenshot000.jpg" alt="" width="640" height="360" /></a></p>
<p>Now, when you click on &#8220;Zoom amount&#8221; from the video settings, the dialogs fade away and the slider bar pops up, allowing you to adjust the setting while in full view of the video file.  Now fine tuning of video settings is much easier.</p>
<p style="text-align: center"><a href="http://xbmc.org/jmarshall/files/screenshot004.jpg" rel="shadowbox[post-1449];player=img;"><img class="size-full wp-image-26 aligncenter" src="http://xbmc.org/jmarshall/files/screenshot004.jpg" alt="" width="640" height="360" /></a></p>
<p>It&#8217;s a nice touch that I&#8217;m hoping all skins take on board.  For the skinners, just add a DialogSlider.xml file based on the PM3.HD one, and modify the OSDs to animate out of the way when it pops up.</p>
<p>We&#8217;ve also added two new actions &#8220;AudioDelay&#8221; and &#8220;SubtitleDelay&#8221; which popup the slider allowing you to change these settings directly &#8211; a bit more remote friendly than having two buttons (one for plus and one for minus) for each feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/05/11/easier-to-adjust-audio-and-video-settings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes to paths: What it means for scripts and plugins</title>
		<link>http://xbmc.org/jmarshall/2009/02/10/changes-to-paths-what-it-means-for-scripts-and-plugins/</link>
		<comments>http://xbmc.org/jmarshall/2009/02/10/changes-to-paths-what-it-means-for-scripts-and-plugins/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 23:09:31 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=20</guid>
		<description><![CDATA[As a follow up to my last post, scripters and plugin writers should be aware of the best practises for accessing files under python:
1.  Don&#8217;t use the old Q:, P:, T:, U:, Z: paths. Replace these with their special:// counterparts below.
2.  Use xbmc.translatePath() to translate any path to it&#8217;s true path if/when you need to [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow up to my <a title="last post" href="http://xbmc.org/jmarshall/2009/02/10/change-in-the-internal-path-structures/">last post</a>, scripters and plugin writers should be aware of the best practises for accessing files under python:</p>
<p>1.  <strong>Don&#8217;t use the old Q:, P:, T:, U:, Z: paths.</strong> Replace these with their special:// counterparts below.</p>
<p>2.  <strong>Use xbmc.translatePath() </strong>to translate any path to it&#8217;s true path if/when you need to read or write from the filesystem.</p>
<p>Note that xbmc.translatePath() will take care of number 1 for you in the meantime, but this functionality is not guaranteed to be available forever.</p>
<p>So what should you use?</p>
<p>1.  Use <strong>special://home/</strong> if you need to read or write to the writeable version of the xbmc install folder.</p>
<p>2.  Use <strong>special://profile/</strong> if you need to read or write to the current users userdata folder.</p>
<p>3.  Use <strong>special://temp/</strong> if you need to read or write to a temporary location.</p>
<p>If you absolutely have to, you can also:</p>
<p>4.  Use <strong>special://xbmc/</strong> to read from the xbmc install folder itself.</p>
<p>5.  Use <strong>special://masterprofile/ </strong>to read from the master users&#8217; userdata folder.</p>
<p>These should not be needed by the majority of scripts, however, so if you find yourself needing to do either of 4 or 5, please contact me so that I know why, and can see whether there&#8217;s a better way to do things.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/02/10/changes-to-paths-what-it-means-for-scripts-and-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change in the internal path structures</title>
		<link>http://xbmc.org/jmarshall/2009/02/10/change-in-the-internal-path-structures/</link>
		<comments>http://xbmc.org/jmarshall/2009/02/10/change-in-the-internal-path-structures/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:54:42 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=18</guid>
		<description><![CDATA[Hi &#8211; long time since my last blog &#8211; I&#8217;ve been too busy with real life stuff, not to mention XBMC related activities!  This post is to detail the rather boring, but very important path cleanup work that WiSo and I have just completed.
As a remnant from the xbox days, XBMC used 5 internal DOS [...]]]></description>
			<content:encoded><![CDATA[<p>Hi &#8211; long time since my last blog &#8211; I&#8217;ve been too busy with real life stuff, not to mention XBMC related activities!  This post is to detail the rather boring, but very important path cleanup work that WiSo and I have just completed.</p>
<p>As a remnant from the xbox days, XBMC used 5 internal DOS based drives as base paths in order to find files and store settings and so on.  These were Q: (the location of the xbmc executeable), Z: (a temporary cache), P: (the current profiles userdata folder), U: (a writeable version of Q:), and T: (the master users userdata folder).  References to these littered the code, and caused many a headache with the initial port to Linux, where essentially it was decided to wrap the win32 filesystem layer that we had in place, and, in addition, provide a path translation routine (CUtil::TranslatePath, macro&#8217;d to _P()) to translate from the virtual path to the real path.</p>
<p>On win32 we didn&#8217;t have to bother with this, but we did have to (internally) map those drives to the appropriate directories.  This, ofcourse, caused problems for anyone who wanted to use those drive letters for removable storage or network drives.<span id="more-1444"></span></p>
<p>The main problem with all this is that the magic _P() macro was treated as a &#8220;cure-all&#8221; for any path related problems.  If you had a problem with paths, just throw a splattering of _P() calls all over the show, and eventually one of them would catch it and &#8220;fix&#8221; the problem.  Not a particularly good fix, but it did the trick in most cases, so that xbmc could find textures, fonts and skin files and the like.  The problem, ofcourse, is that the majority of the _P() splatterings should not have been there, and this has caused nightmares in more recent times.</p>
<p>A quick example:  We have a tokenize routine which is mainly used for tokenizing paths.  Someone had decided to throw a _P() in that so that we were ensured that we were looking for the correct directory separator.  This is all well and good, until you realize that the routine is also used for tokenizing other strings.  For instance, it&#8217;s used to split multi-line text up into single lines, so that the fribidi stuff can do it&#8217;s magic to convert logical Hebrew and Arabic text to it&#8217;s visual counterpart.  Low and behold, this was causing the direction of the slash to change!  Me, being not of Hebrew or Arabic persuasion, was rather perplexed by all this.  Was it the intended behaviour?  After all, the routine was supposed to flip the text!  Needless to say, it took a wee while to track it down to the errant _P() in the tokenize routine!</p>
<p>Of late, many more examples have been found.  The solution was obvious: Go through the code and account for every single path translation and ensure that it absolutely _has_ to be there.  Basically: No path translation should occur _ever_ unless we need to hit the filesystem directly.  There were more than 500 instances of _P() to be removed.  Fun and games!</p>
<p>At the same time, we changed things from using DOS based paths to other paths, so that win32 users could claim back their drive letters, and reused one of the protocols we already had.  We now have:</p>
<p><strong>special://xbmc</strong> (where the executable resides)<br />
<strong>special://home </strong>(a writable version of special://xbmc)<br />
<strong>special://masterprofile</strong> (the &#8220;master&#8221; userdata folder, usually special://home/userdata)<br />
<strong>special://profile</strong> (the current profiles&#8217; userdata folder, usually special://masterprofile/profiles/&lt;profilename&gt;)<br />
<strong>special://temp</strong> (a temporary cache folder, such as /tmp/xbmc on *nix)</p>
<p>So that&#8217;s it pretty much.  Lots of changes required to fix up what was on the face of it not a particularly bad implementation to get stuff running on Linux, that over time grew into a monster.</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2009/02/10/change-in-the-internal-path-structures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thanks for all the bug reports</title>
		<link>http://xbmc.org/jmarshall/2008/09/09/thanks-for-all-the-bug-reports/</link>
		<comments>http://xbmc.org/jmarshall/2008/09/09/thanks-for-all-the-bug-reports/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 17:46:18 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Frontpage]]></category>
		<category><![CDATA[atlantis]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[thanks]]></category>

		<guid isPermaLink="false">http://xbmc.org/jmarshall/?p=16</guid>
		<description><![CDATA[Just a quick post of gratitude for all the bug reports we&#8217;ve had over the last month or so.  Without your great support at testing things out and taking the time to narrow down and get any issues reproducible, XBMC wouldn&#8217;t be as great as it is now.
As you can see, we&#8217;ve been busy tackling [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post of gratitude for all the bug reports we&#8217;ve had over the last month or so.  Without your great support at testing things out and taking the time to narrow down and get any issues reproducible, XBMC wouldn&#8217;t be as great as it is now.</p>
<p><a title="We've been busy" href="http://trac.xbmc.org/milestone/8.10">As you can see</a>, we&#8217;ve been busy tackling these reports &#8211; 228 closed tickets out of 326 at the time of writing, so we&#8217;re 70% of the way there, and that includes only bugs that have actually had tickets assigned (i.e. not stuff we&#8217;ve discovered ourselves or was reported on the forums that there was an easy fix for that didn&#8217;t really warrant ticket creation).  sho has been doing an awesome job at managing the trac reports &#8211; busy assigning them to us devs and following up on them to make sure that they get fixed.</p>
<p>We hope to have the first beta release out within a week, and will be shortly inviting some of our more active users on the <a title="xbmc forums" href="http://forum.xbmc.org">forum</a> and <a title="xbmc trac" href="http://trac.xbmc.org">trac</a> to come aboard the team as official beta testers.  There&#8217;ll be some nice surprises included with the beta as well that we hope you guys will smile about, including a treat or two for you Mac users.</p>
<p>Let&#8217;s keep up the testing and bug bashing to make Atlantis as stable as possible.  Your help in looking over the <a title="Outstanding trac reports for Atlantis" href="http://trac.xbmc.org/query?status=accepted&amp;status=assigned&amp;status=new&amp;status=reopened&amp;order=priority&amp;col=id&amp;col=summary&amp;col=owner&amp;col=type&amp;col=priority&amp;col=component&amp;col=version&amp;milestone=8.10">trac reports</a> and reproducing and supplying more information about the reports makes our job much, much easier, so keep it up!</p>
]]></content:encoded>
			<wfw:commentRss>http://xbmc.org/jmarshall/2008/09/09/thanks-for-all-the-bug-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

