<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Planet Maemo: category &quot;feed:6b5f2c9f097a97dac5362c4b8bd9fd58&quot;</title>
        <description>Blog entries from Maemo community</description>
        <link>http://maemo.org/news/planet-maemo/</link>
        <lastBuildDate>Sun, 05 Apr 2026 05:57:04 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <language>en</language>
        <managingEditor>planet@maemo.org</managingEditor>
        <item>
            <title>Review of Igalia’s Graphics activities (2018)</title>
            <link>https://blog.andresgomez.org/2019/02/25/review-of-igalias-graphics-activities-2018/</link>
            <description><![CDATA[

<p>This is the first report about <a rel="noreferrer noopener" aria-label="Igalia (opens in a new tab)" href="https://www.igalia.com/" target="_blank">Igalia</a>’s activities around <a rel="noreferrer noopener" aria-label="Computer Graphics (opens in a new tab)" href="https://en.wikipedia.org/wiki/Computer_graphics_(computer_science)" target="_blank">Computer Graphics</a><a href="https://en.wikipedia.org/wiki/Web_platform"></a>, specifically <a rel="noreferrer noopener" aria-label="3D graphics (opens in a new tab)" href="https://en.wikipedia.org/wiki/3D_computer_graphics" target="_blank">3D graphics</a> and, in particular, the <a rel="noreferrer noopener" aria-label="Mesa3D Graphics Library (opens in a new tab)" href="https://www.mesa3d.org" target="_blank">Mesa3D Graphics Library</a> (Mesa), focusing on the year 2018.</p>



<h2 class="wp-block-heading" id="gl_arb_gl_spirv">GL_ARB_gl_spirv and GL_ARB_spirv_extensions</h2>



<p><a rel="noreferrer noopener" aria-label="GL_ARB_gl_spirv (opens in a new tab)" href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gl_spirv.txt" target="_blank">GL_ARB_gl_spirv</a> is an <a rel="noreferrer noopener" aria-label="OpenGL (opens in a new tab)" href="https://www.opengl.org/" target="_blank">OpenGL</a> extension whose purpose is to enable an OpenGL  program to consume <a rel="noreferrer noopener" aria-label="SPIR-V (opens in a new tab)" href="https://www.khronos.org/spir/" target="_blank">SPIR-V</a> shaders. In the case of <a rel="noreferrer noopener" aria-label="GL_ARB_spirv_extensions (opens in a new tab)" href="https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_spirv_extensions.txt" target="_blank">GL_ARB_spirv_extensions</a>, it provides a mechanism by which an OpenGL implementation would be able to announce which particular SPIR-V extensions it supports, which is a nice complement to GL_ARB_gl_spirv.</p>



<p>As both extensions, GL_ARB_gl_spirv and GL_ARB_spirv_extensions, are core functionality in <a rel="noreferrer noopener" aria-label="OpenGL 4.6 (opens in a new tab)" href="https://www.khronos.org/news/press/khronos-releases-opengl-4.6-with-spir-v-support" target="_blank">OpenGL 4.6</a>, the drivers need to provide them in order to be compliant with that version.</p>



<p>Although Igalia picked up the already started implementation of these extensions in Mesa back in 2017, 2018 is a year in which we put a big deal of work to provide the needed push to have all the remaining bits in place. Much of this effort provides general support to all the drivers under the Mesa umbrella but, in particular, Igalia implemented the backend code for <a rel="noreferrer noopener" aria-label="Intel (opens in a new tab)" href="https://www.intel.com/content/www/us/en/company-overview/company-overview.html" target="_blank">Intel</a>&#8216;s <a rel="noreferrer noopener" aria-label="i965 (opens in a new tab)" href="https://01.org/linuxgraphics/community/mesa" target="_blank">i965</a> driver (gen7+). Assuming that the review process for the <a rel="noreferrer noopener" aria-label="remaining patches (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/mesa/merge_requests/178" target="_blank">remaining patches</a> goes without important bumps, it is expected that the whole implementation will land in Mesa during the beginning of 2019.</p>



<p>Throughout the year, <a rel="noreferrer noopener" aria-label="Alejandro Piñeiro (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/apinheiro/" target="_blank">Alejandro Piñeiro</a> gave status updates of the ongoing work through his talks at <a rel="noreferrer noopener" aria-label="FOSDEM (opens in a new tab)" href="https://archive.fosdem.org/2018/schedule/event/spirv/" target="_blank">FOSDEM</a> and <a rel="noreferrer noopener" aria-label="XDC 2018 (opens in a new tab)" href="https://www.x.org/wiki/Events/XDC2018/Talks/#alejandro" target="_blank">XDC 2018</a>. This is a video of the latter:</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Alejandro Piñeiro - ARB_gl_spirv implementation in Mesa: status update" width="584" height="329" src="https://www.youtube.com/embed/XB3TPPNUX28?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">ETC2/EAC</h2>



<p>The <a href="https://en.wikipedia.org/wiki/Ericsson_Texture_Compression">ETC and EAC</a> formats are <a href="https://en.wikipedia.org/wiki/Lossy_compression">lossy</a> <a href="https://en.wikipedia.org/wiki/Texture_compression">compressed</a> texture formats used mostly in embedded devices. OpenGL implementations of the versions <a href="https://www.khronos.org/registry/OpenGL/specs/gl/glspec43.core.pdf">4.3</a> and upwards, and <a rel="noreferrer noopener" aria-label="OpenGL/ES (opens in a new tab)" href="https://www.khronos.org/opengles/" target="_blank">OpenGL/ES</a> implementations of the versions <a href="https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf">3.0</a> and upwards must support them in order to be <a href="https://www.khronos.org/news/press/khronos-open-sources-opengl-and-opengl-es-conformance-tests">conformant</a> with the standard.</p>



<p>Most modern GPUs are able to work directly with the ETC2/EAC formats. Implementations for older GPUs that don&#8217;t have that support but want to be conformant with the latest versions of the specs need to provide that functionality through the software parts of the driver.</p>



<p>During 2018, Igalia implemented the missing bits to support <a rel="noreferrer noopener" aria-label="GL_OES_copy_image (opens in a new tab)" href="https://www.khronos.org/registry/OpenGL/extensions/OES/OES_copy_image.txt" target="_blank">GL_OES_copy_image</a> in Intel&#8217;s i965 for gen7+, while gen8+ was already complying through its HW support. As we were writing this entry, the work has <a rel="noreferrer noopener" aria-label="finally landed (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/mesa/commit/248f2e788860240ab84fc10f0d18332c34712b85" target="_blank">finally landed</a>.</p>



<h2 class="wp-block-heading" id="vk_khr_16bit_storage">VK_KHR_16bit_storage</h2>



<p>Igalia <a rel="noreferrer noopener" aria-label="finished the work (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/mesa/commit/ba642ee3ee36d7aefd21e8b8d4da0c5c24ec0ec8" target="_blank">finished the work</a> to provide support for the <a rel="noreferrer noopener" href="https://www.khronos.org/vulkan/" target="_blank">Vulkan</a> extension <a href="https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/doc/specs/vulkan/appendices/VK_KHR_16bit_storage.txt">VK_KHR_16bit_storage</a> into Intel&#8217;s <a rel="noreferrer noopener" href="https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware" target="_blank">Anvil</a> driver.</p>



<p>This extension allows the use of 16-bit types (half floats, 16-bit ints, and 16-bit uints) in push constant blocks, and buffers (shader storage buffer objects).  This feature can help to reduce the memory bandwith for Uniform and Storage Buffer data accessed from the shaders and / or optimize Push Constant space, of which there are only a few bytes available, making it a precious shader resource.</p>



<h2 class="wp-block-heading">shaderInt16</h2>



<p>Igalia added Vulkan&#8217;s optional feature <a rel="noreferrer noopener" aria-label="shaderInt16 (opens in a new tab)" href="https://www.khronos.org/registry/vulkan/specs/1.1/html/vkspec.html#features-features-shaderInt16" target="_blank">shaderInt16</a> to Intel&#8217;s Anvil driver. This new functionality provides the means to operate with 16-bit integers inside a shader which, ideally, would lead to better performance when you don&#8217;t need a full 32-bit range. However, not all HW platforms may have native support, still needing to run in 32-bit and, hence, not benefiting from this feature. Such is the case for operations associated with integer division in the case of Intel platforms.</p>



<p>shaderInt16 complements the functionality provided by the <a href="#vk_khr_16bit_storage">VK_KHR_16bit_storage</a>  extension.</p>



<h2 class="wp-block-heading" id="vk_khr_8bit_storage">SPV_KHR_8bit_storage and VK_KHR_8bit_storage</h2>



<p><a rel="noreferrer noopener" aria-label="SPV_KHR_8bit_storage (opens in a new tab)" href="http://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_8bit_storage.html" target="_blank">SPV_KHR_8bit_storage</a> is a SPIR-V extension that complements the <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://github.com/KhronosGroup/Vulkan-Docs/blob/master/appendices/VK_KHR_8bit_storage.txt" target="_blank">VK_KHR_8bit_storage</a> Vulkan extension to allow the use of 8-bit types in uniform and storage buffers, and push constant blocks. Similarly to the the <a href="#vk_khr_16bit_storage">VK_KHR_16bit_storage</a> extension, this feature can help to reduce the needed memory bandwith.</p>



<p>Igalia <a href="https://gitlab.freedesktop.org/mesa/mesa/commit/6db20229ab6f1324a191d0a1b13437e31a9ec9cd">implemented</a> its support into Intel&#8217;s Anvil driver.</p>



<h2 class="wp-block-heading">VK_KHR_shader_float16_int8</h2>



<p>Igalia implemented the support for <a href="https://github.com/KhronosGroup/Vulkan-Docs/blob/master/appendices/VK_KHR_shader_float16_int8.txt">VK_KHR_shader_float16_int8</a> into Intel&#8217;s Anvil driver. This is an extension that enables Vulkan to consume SPIR-V shaders that use <em>Float16</em> and <em>Int8</em> types in arithmetic operations. It extends the functionality included with <a href="#vk_khr_16bit_storage">VK_KHR_16bit_storage</a> and <a href="#vk_khr_8bit_storage">VK_KHR_8bit_storage</a>.</p>



<p>In theory, applications that do not need the range and precision of regular 32-bit floating point and integers, can use these new types to improve performance. Additionally, its implementation is mostly API agnostic, so most of the work we did should also help to have a proper <em>mediump</em> implementation for <a rel="noreferrer noopener" aria-label="GLSL (opens in a new tab)" href="https://en.wikipedia.org/wiki/OpenGL_Shading_Language" target="_blank">GLSL</a> ES shaders in the future.</p>



<p>The <a rel="noreferrer noopener" aria-label="review process (opens in a new tab)" href="https://lists.freedesktop.org/archives/mesa-dev/2019-February/215000.html" target="_blank">review process</a> for the implementation is still ongoing and is on its way to land in Mesa.</p>



<h2 class="wp-block-heading">VK_KHR_shader_float_controls</h2>



<p><a rel="noreferrer noopener" aria-label="VK_KHR_shader_float_controls (opens in a new tab)" href="https://github.com/KhronosGroup/Vulkan-Docs/blob/master/appendices/VK_KHR_shader_float_controls.txt" target="_blank">VK_KHR_shader_float_controls</a> is a Vulkan extension which allows applications to query and override the implementation’s default floating point behavior for rounding modes, denormals, signed zero and infinity.</p>



<p>Igalia has coded its support into Intel&#8217;s Anvil driver and it is currently <a rel="noreferrer noopener" aria-label="under review (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/mesa/merge_requests/223" target="_blank">under review</a> before being merged into Mesa.</p>



<h2 class="wp-block-heading" id="vkrunner">VkRunner</h2>



<p><a rel="noreferrer noopener" aria-label="VkRunner (opens in a new tab)" href="https://github.com/igalia/vkrunner" target="_blank">VkRunner</a> is a Vulkan shader tester based on <code>shader_runner</code> in <a href="https://piglit.freedesktop.org/">Piglit</a>. Its goal is to make it feasible to test scripts as similar as possible to Piglit’s <code>shader_test</code> format.</p>



<p>Igalia initially created VkRunner as a tool to get more test coverage during the implementation of <a href="#gl_arb_gl_spirv">GL_ARB_gl_spirv</a>. Soon, it was clear that it was useful way beyond the implementation of this specific extension but as a generic way of testing SPIR-V shaders.</p>



<p>Since then, VkRunner has been enabled as an external dependency to run new tests added to the <a rel="noreferrer noopener" aria-label="Piglit (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/piglit/commit/221d924689e3bb2796cea957b8106bd14fd03e2c" target="_blank">Piglit</a> and <a rel="noreferrer noopener" aria-label="VK-GL-CTS (opens in a new tab)" href="https://github.com/KhronosGroup/VK-GL-CTS/commit/b6d5fe696488f90e49c5b00987fe76f69b751080" target="_blank">VK-GL-CTS</a> suites.</p>



<p><a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/nroberts/" target="_blank">Neil Roberts</a> introduced VkRunner at <a href="https://xdc2018.x.org/slides/neil_roberts_vkrunner.pdf">XDC 2018</a>. This is his talk:</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Neil Roberts - VkRunner: a simple Vulkan shader script test utility (Lightning Talk)" width="584" height="329" src="https://www.youtube.com/embed/VRGseMUCQXA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">freedreno</h2>



<p>During 2018, Igalia has also started contributing to the <a rel="noreferrer noopener" aria-label="freedreno (opens in a new tab)" href="https://gitlab.freedesktop.org/mesa/mesa/tree/master/src/freedreno" target="_blank">freedreno</a> Mesa driver for <a rel="noreferrer noopener" aria-label="Qualcomm (opens in a new tab)" href="https://www.qualcomm.com/company/about" target="_blank">Qualcomm</a> GPUs. Among the work done, we have tackled multiple bugs identified through the usual testing suites used in the graphic drivers development: Piglit and VK-GL-CTS.</p>



<h2 class="wp-block-heading">Khronos Conformance</h2>



<p>The Khronos conformance program is intended to ensure that products that implement Khronos standards (such as OpenGL or Vulkan drivers) do what they are supposed to do and they do it consistently across implementations from the same or different vendors.</p>



<p>This is achieved by producing an extensive test suite, the Conformance Test Suite (VK-GL-CTS or CTS for short), which aims to verify that the semantics of the standard are properly implemented by as many vendors as possible.</p>



<p>In 2018, Igalia has continued its work ensuring that the Intel Mesa drivers for both Vulkan and OpenGL are conformant. This work included reviewing and testing patches submitted for inclusion in VK-GL-CTS and continuously checking that the drivers passed the tests. When failures were encountered we provided patches to correct the problem either in the tests or in the drivers, depending on the outcome of our analysis or, even, brought a discussion forward when the source of the problem was incomplete, ambiguous or incorrect spec language.</p>



<p>The most important result out of this significant dedication has been successfully passing conformance applications.</p>



<h3 class="wp-block-heading">OpenGL 4.6</h3>



<p>Igalia helped making Intel&#8217;s i965 driver <a rel="noreferrer noopener" aria-label="conformant with OpenGL 4.6 (opens in a new tab)" href="https://www.khronos.org/conformance/adopters/conformant-products/opengl" target="_blank">conformant with OpenGL 4.6</a> since day zero. This was a significant achievement since, besides Intel Mesa, only <a rel="noreferrer noopener" aria-label="nVIDIA (opens in a new tab)" href="https://www.nvidia.com/object/about-nvidia.html" target="_blank">nVIDIA</a> managed to do this too.</p>



<p>Igalia specifically contributed to achieve the OpenGL 4.6 milestone providing the <a href="#gl_arb_gl_spirv">GL_ARB_gl_spirv</a> implementation.</p>



<h3 class="wp-block-heading">Vulkan 1.1</h3>



<p>Igalia also helped to make Intel&#8217;s Anvil driver <a rel="noreferrer noopener" aria-label="conformant with Vulkan 1.1 (opens in a new tab)" href="https://www.khronos.org/conformance/adopters/conformant-products/vulkan" target="_blank">conformant with Vulkan 1.1</a> since day zero, too.</p>



<p>Igalia specifically contributed to achieve the Vulkan 1.1 milestone providing the <a href="#vk_khr_16bit_storage">VK_KHR_16bit_storage</a> implementation.</p>



<h2 class="wp-block-heading" id="mesa_releases">Mesa Releases</h2>



<p>Igalia continued the work that was already carrying on in Mesa&#8217;s Release Team throughout 2018. This effort involved a continuous dedication to track the general status of Mesa against the usual test suites and benchmarks but also to react quickly upon detected regressions, specially coordinating with the Mesa developers and the distribution packagers.</p>



<p>The work was obviously visible by releasing multiple bugfix releases as well as doing the branching and creating a feature release.<br></p>



<h2 class="wp-block-heading" id="ci">CI</h2>



<p>Continuous Integration is a must in any serious SW project. In the case of API implementations it is even critical since there are many important variables that need to be controlled to avoid regressions and track the progress when including new features: agnostic tests that can be used by different implementations, different OS platforms, CPU architectures and, of course, different GPU architectures and generations.</p>



<p>Igalia has kept a sustained effort to keep Mesa (and Piglit) CI integrations in good health with an eye on the reported regressions to act immediately upon them. This has been a key tool for our work around <a href="#mesa_releases">Mesa releases</a> and the experience allowed us to push the <a rel="noreferrer noopener" aria-label="initial proposal (opens in a new tab)" href="https://lists.freedesktop.org/archives/mesa-dev/2018-August/202050.html" target="_blank">initial proposal</a> for a new CI integration when the <a rel="noreferrer noopener" aria-label="FreeDesktop (opens in a new tab)" href="https://www.freedesktop.org/wiki/" target="_blank">FreeDesktop</a> projects decided to start its migration to <a rel="noreferrer noopener" aria-label="GitLab (opens in a new tab)" href="https://gitlab.freedesktop.org/" target="_blank">GitLab</a>.</p>



<p>This work, along with the one done with the <a href="#mesa_releases">Mesa releases</a>, lead to a <a rel="noreferrer noopener" aria-label="shared presentation (opens in a new tab)" href="https://www.x.org/wiki/Events/XDC2018/Talks/#emil_juan" target="_blank">shared presentation</a>, given by <a rel="noreferrer noopener" aria-label="Juan Antonio Suárez (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/jasuarez/" target="_blank">Juan Antonio Suárez</a> during XDC 2018. This is the video of the talk:</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Velikov &amp; Suarez with Griffais - Releasing and testing free opensource graphics drivers" width="584" height="329" src="https://www.youtube.com/embed/jEIJEz7JCks?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading" id="xdc">XDC 2018</h2>



<p>2018 was the year that saw <a rel="noreferrer noopener" aria-label="A Coruña (opens in a new tab)" href="https://en.wikipedia.org/wiki/A_Coru%C3%B1a" target="_blank">A Coruña</a> hosting the <a rel="noreferrer noopener" aria-label="X.Org Developer's Conference (opens in a new tab)" href="https://xdc2018.x.org/" target="_blank">X.Org Developer&#8217;s Conference</a> (XDC) and Igalia as <strong>Platinum Sponsor</strong>.</p>



<p>The conference was organized by <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.gpul.org/" target="_blank">GPUL</a> (Galician Linux User and Developer Group) together with <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.udc.es/" target="_blank">University of A Coruña</a>, Igalia and, of course, the <a href="https://www.x.org/">X.Org Foundation</a>.</p>



<p>Since A Coruña is the town in which the company originated and where we have our headquarters, Igalia had a key role in the organization, which was greatly benefited by our vast experience running events. Moreover, several Igalians joined the conference crew and, as mentioned above, we delivered talks around <a href="#gl_arb_gl_spirv">GL_ARB_gl_spirv</a>, <a href="#vkrunner">VkRunner</a>, and <a href="#mesa_releases">Mesa releases</a> and <a href="#ci">CI testing</a>.</p>



<p>The feedback from the attendees was very rewarding and we believe the conference was a great event. Here you can see the Closing Session speech given  by <a rel="noreferrer noopener" aria-label="Samuel Iglesias (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/siglesias/" target="_blank">Samuel Iglesias</a>:</p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Closing Session" width="584" height="329" src="https://www.youtube.com/embed/WCBaJaIHZK4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Other activities</h2>



<h3 class="wp-block-heading">Conferences</h3>



<p>As usual, Igalia was present in many graphics related conferences during the year:</p>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label="FOSDEM (opens in a new tab)" href="https://archive.fosdem.org/2018/" target="_blank">FOSDEM</a>, in Brussels.</li><li><a rel="noreferrer noopener" aria-label="GDC (opens in a new tab)" href="https://www.gdcvault.com/free/gdc-18" target="_blank">GDC</a>, in San Francisco.</li><li><a rel="noreferrer noopener" aria-label="SIGGRAPH (opens in a new tab)" href="https://s2018.siggraph.org/" target="_blank">SIGGRAPH</a>, in Vancouver.</li><li>And obviously, <a href="#xdc">XDC</a>, in A Coruña.</li></ul>



<h3 class="wp-block-heading">New Igalians in the team</h3>



<p>Igalia&#8217;s graphics team kept growing. Two new developers joined us in 2018:</p>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label="Hyunjun Ko (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/hko/" target="_blank">Hyunjun Ko</a> is an experienced Igalian with a strong background in multimedia. Specifically, <a rel="noreferrer noopener" aria-label="GStreamer (opens in a new tab)" href="https://gstreamer.freedesktop.org/" target="_blank">GStreamer</a> and Intel&#8217;s <a rel="noreferrer noopener" aria-label="VAAPI (opens in a new tab)" href="https://01.org/vaapi" target="_blank">VAAPI</a>. He is now contributing his impressive expertise into our Graphics team.</li><li><a rel="noreferrer noopener" aria-label="Arcady Goldmints-Orlov (opens in a new tab)" href="https://www.igalia.com/nc/igalia-247/igalian/item/agoldmints/" target="_blank">Arcady Goldmints-Orlov</a> is the latest addition to the team. His previous expertise as a graphics developer around the nVIDIA GPUs fits perfectly for the kind of work we are pushing currently in Igalia.</li></ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Thank you for reading this blog post and we look forward to more work on graphics  in 2019!</p>



<p><a href="https://www.igalia.com" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)"><img decoding="async" class="aligncenter" src="https://people.igalia.com/agomez/files/igalia-tagline.jpg" alt="Igalia"></a></p>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2019%2F02%2F25%2Freview-of-igalias-graphics-activities-2018%2F&amp;linkname=Review%20of%20Igalia%E2%80%99s%20Graphics%20activities%20%282018%29" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=1e9390d04d08a60390d11e994d39f4575e3a9e6a9e6&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/1e9390d04d08a60390d11e994d39f4575e3a9e6a9e6/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=1e9390d04d08a60390d11e994d39f4575e3a9e6a9e6&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/1e9390d04d08a60390d11e994d39f4575e3a9e6a9e6/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Mon, 25 Feb 2019 14:50:56 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-1e9390d04d08a60390d11e994d39f4575e3a9e6a9e6</guid>
        </item>
        <item>
            <title>Introducing Facerecognition Resetter Plugin for the Nokia N9</title>
            <link>https://blog.andresgomez.org/2012/10/22/introducing-facerecognition-resetter-plugin-for-the-nokia-n9/</link>
            <description><![CDATA[
<p>As my mate <a href="http://simonpena.com/" title="Simon Pena Placer" target="_blank">Simón</a> was writing short time ago in his post <a href="http://simonpena.com/blog/tech/announcing-the-gallery-tilt-shift-plugin-for-the-nokia-n9/" title="Announcing the Gallery Tilt Shift plugin for the Nokia N9" target="_blank">Announcing the Gallery Tilt Shift plugin for the Nokia N9</a>, we got published at <a href="http://www.igalia.com" title="Igalia" target="_blank">Igalia</a> some plugins for enhancing the experience of the built-in Gallery application in the N9/N950 through the <a href="http://store.ovi.com/publisher/Igalia/" title="Igalia at the Nokia Store" target="_blank">Nokia Store</a>: <a href="http://store.ovi.com/content/302893" title="Enlarge &#038; Shrink Plugin" target="_blank">Enlarge &#038; Shrink Plugin</a>, <a href="http://store.ovi.com/content/274188" title="Gallery Tilt Shift Plugin" target="_blank">Gallery Tilt Shift Plugin</a>, and <a href="http://store.ovi.com/content/274192" title="Facerecognition Resetter Plugin" target="_blank">Facerecognition Resetter Plugin</a>.</p>
<p>The <a href="http://store.ovi.com/content/302893" title="Enlarge &#038; Shrink Plugin" target="_blank">Enlarge &#038; Shrink Plugin</a> is a filter developed by <a href="http://www.igalia.com/nc/igalia-247/igalian/item/apuentes/" title="Antía Puentes at Igalia" target="_blank">Antía Puentes</a> for the built-in Gallery application which applies a radial distortion to a picture featuring an enlarge or shrink effect (also known as punch or pinch).</p>
<p>The <a href="http://store.ovi.com/content/274188" title="Gallery Tilt Shift Plugin" target="_blank">Gallery Tilt Shift Plugin</a> is a filter developed by <a href="http://www.igalia.com/nc/igalia-247/igalian/item/spena/" title="Simón Pena at Igalia" target="_blank">Simón Pena</a> for the built-in Gallery application which makes a picture look like a miniature.</p>
<p>Finally, <a href="http://store.ovi.com/content/274192" title="Facerecognition Resetter Plugin" target="_blank">Facerecognition Resetter Plugin</a> was developed by me. It is a add-on for the built-in Gallery application which is not a real filter for the pictures. Instead, it is just a way of forcing the deletion or un/protection of the face recognition database through its usage from Gallery. The main reason for doing this is a well known bug in the face recognition feature.</p>
<p><strong>If you are experiencing that the the N9 is not recognizing faces any more or it is not giving any more suggestions just install <a href="http://store.ovi.com/content/274192" title="Facerecognition Resetter Plugin" target="_blank">Facerecognition Resetter Plugin</a> and click on the <em><a href="http://igalia.github.com/gallery-plugin-facerecognition-resetter/" title="Facerecognition Resetter Plugin at GitHub" target="_blank">&#8220;Protect&#8221;</a></em> button. You want to do this even if you are not suffering this problem since this will prevent it from appearing in the future.</strong></p>
<p>BTW, comments and reviews in the Nokia Store will be welcomed <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f600.png" alt="<span class="net_nemein_favourites">10 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=da2139ce1c5611e2a4472d2363dee7a2e7a2&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/da2139ce1c5611e2a4472d2363dee7a2e7a2/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=da2139ce1c5611e2a4472d2363dee7a2e7a2&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/da2139ce1c5611e2a4472d2363dee7a2e7a2/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Mon, 22 Oct 2012 14:06:15 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-da2139ce1c5611e2a4472d2363dee7a2e7a2</guid>
        </item>
        <item>
            <title>Igalia wallpapers</title>
            <link>https://blog.andresgomez.org/2012/09/24/igalia-wallpapers/</link>
            <description><![CDATA[
<table>
<tr>
<td>
<div class="wp-caption alignleft" style="width: 180px;"><a title="Igalia wallpaper for the N9/N950" href="http://flic.kr/p/ddDAjx" target="_blank"><img loading="lazy" decoding="async" class="alignleft size-full" title="Igalia wallpaper for the N9/N950" src="https://farm9.staticflickr.com/8451/8019413763_959e07c402_n.jpg" alt="Igalia wallpaper for the N9/N950" width="180" height="320" hspace="20" /></a></p>
<p class="wp-caption-text">&#8220;Igalia wallpaper for the N9/N950&#8221;</p>
</div>
</td>
<td valign=top>
<p>Some weeks ago we decided to do an <a title="New contents in our web page" href="http://www.igalia.com/nc/igalia-247/news/item/new-contents-in-our-web-page/" target="_blank">upgrade</a> to the information that we are showing in our <a title="Igalia" href="http://www.igalia.com" target="_blank">Igalia&#8217;s website</a>. Due to these changes, I had the chance to play a little bit with some new graphic material that was used in the upgrade.</p>
<p>As a result, I&#8217;ve created based on <a title="Opsou" href="http://www.opsou.com/" target="_blank">Opsou&#8217;s Pedro Figueras</a> original idea some different wallpapers for most of my GNU/Linux powered devices.</p>
<p>Just click in the images and go to download them at their original resolution.</p>
</td>
</tr>
</table>
<p>I&#8217;ve uploaded it to a public Git repository which you can download with the following command:</p>
<pre>~#  git clone http://git.igalia.com/art/wallpapers.git</pre>
<div class="wp-caption alignleft" style="width: 100px;"><a title="4x3 Igalia wallpaper" href="http://flic.kr/p/ddDzSF" target="_blank"><img loading="lazy" decoding="async" title="4x3 Igalia wallpaper" src="https://farm9.staticflickr.com/8445/8019412263_1bda1ea9ab_t.jpg" alt="4x3 Igalia wallpaper" width="100" height="75" hspace="20" /></a></p>
<p class="wp-caption-text">&#8220;4&#215;3 Igalia wallpaper&#8221;</p>
</div>
<div class="wp-caption alignleft" style="width: 100px;"><a title="16x9 Igalia wallpaper" href="http://flic.kr/p/ddDAbt" target="_blank"><img loading="lazy" decoding="async" title="16x9 Igalia wallpaper" src="https://farm9.staticflickr.com/8306/8019413295_7f4c66275e_t.jpg" alt="16x9 Igalia wallpaper" width="100" height="56" hspace="20" /></a></p>
<p class="wp-caption-text">&#8220;16&#215;9 Igalia wallpaper&#8221;</p>
</div>
<div class="wp-caption alignleft" style="width: 100px;"><a title="Igalia wallpaper for the N900/N810/N800/N770" href="http://flic.kr/p/ddDAqr" target="_blank"><img loading="lazy" decoding="async" title="Igalia wallpaper for the N900/N810/N800/N770" src="https://farm9.staticflickr.com/8313/8019414105_b2f2afe2f1_t.jpg" alt="Igalia wallpaper for the N900/N810/N800/N770" width="100" height="60" hspace="20" /></a></p>
<p class="wp-caption-text">&#8220;Igalia wallpaper for the N900/N810/N800/N770&#8221;</p>
</div>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F09%2F24%2Figalia-wallpapers%2F&amp;linkname=Igalia%20wallpapers" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">3 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=c6ff4ba0065e11e2b50c87e80a24e884e884&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/c6ff4ba0065e11e2b50c87e80a24e884e884/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=c6ff4ba0065e11e2b50c87e80a24e884e884&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/c6ff4ba0065e11e2b50c87e80a24e884e884/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Mon, 24 Sep 2012 15:41:31 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-c6ff4ba0065e11e2b50c87e80a24e884e884</guid>
        </item>
        <item>
            <title>Attending the Automotive Linux Summit 2012</title>
            <link>https://blog.andresgomez.org/2012/09/17/attending-the-automotive-linux-summit-2012/</link>
            <description><![CDATA[
<p>Next Wednesday I will be attending the <a href="https://events.linuxfoundation.org/events/automotive-linux-summit" title="Automotive Linux Summit 2012" target="_blank">Automotive Linux Summit 2012</a>.</p>
<p>It will be a good time to meet the <a href="http://automotivelinuxsummit2012.sched.org/directory/speakers#.UFcMB2aleWI" title="Automotive Linux Summit 2012 Speakers" target="_blank">key people</a> pushing the usage of Linux in the automotive arena and I hope to have a great time at the <a href="http://www.heritage-motor-centre.co.uk/" title="Heritage Motor Center, Warwickshire, England" target="_blank">Heritage Motor Centre</a> in Warwickshire.</p>
<p>If you happen to attend the event and want to have a good chat with an <a href="http://www.igalia.com/nc/igalia-247/igalian/item/agomez/" title="Igalia - Andres Gomez" target="_blank">Igalian</a> about any of the technologies in which we are strongly involved: <a href="http://www.igalia.com/webkit/" title="Igalia - Browsers and Client-side Web Technologies" target="_blank">WebKit</a>, <a href="http://www.igalia.com/graphics/" title="Igalia - Graphics Pipeline and Rendering Technologies" target="_blank">rendering</a>, <a href="http://www.igalia.com/compilers/" title="Igalia - Compilers and Virtual Machines" target="_blank">compilers</a>, <a href="http://www.igalia.com/multimedia/" title="Igalia - Multimedia" target="_blank">Grilo, GStreamer</a>, the <a href="http://www.igalia.com/kernel/" title="Igalia - Linux Kernel and Virtualization Technologies" target="_blank">kernel, Qemu</a>, <a href="http://www.igalia.com/distros/" title="Igalia - Distributions and System Integration" target="_blank">Yocto, OSTree</a>, <a href="http://www.igalia.com/interactivity/" title="Igalia - Interactivity, Augmented Reality and Human-Computer Interaction" target="_blank">Skeltrack, OpenCV</a>, <a href="http://www.igalia.com/accessibility/" title="Igalia - Accessibility Tools and Technologies" target="_blank">a11y</a>, <a href="http://www.igalia.com/platforms/" title="Igalia - Platforms and Associations" target="_blank">Qt, Gtk+</a> and so on. Just poke me whenever you see me around <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f609.png" alt="<span class="net_nemein_favourites">1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e9bf775400c411e281063d53666431743174&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e9bf775400c411e281063d53666431743174/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e9bf775400c411e281063d53666431743174&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e9bf775400c411e281063d53666431743174/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Mon, 17 Sep 2012 11:59:13 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e9bf775400c411e281063d53666431743174</guid>
        </item>
        <item>
            <title>Extending the life of your N8x0: Second update for Automatic Skype Launcher</title>
            <link>https://blog.andresgomez.org/2012/07/17/extending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher/</link>
            <description><![CDATA[
<p>Back again with a new release, the <em>0.0.3</em>, of <a title="Applications Fullscreener debian package" href="http://www.andresgomez.org/files/apps-fullscreener_0.0.3_armel.deb" target="_blank">Applications Fullscreener</a> and <a title="Automatic Skype Launcher debian package" href="http://www.andresgomez.org/files/skype-autolauncher_0.0.3_armel.deb" target="_blank">Automatic Skype Launcher</a>.</p>
<p>Just download and install them in your N8x0 for making it become a good 24/7 Skype phone. For more information about the goals and features of this project you can check the previous post <a href="http://blog.andresgomez.org/2011/12/21/extending-the-life-of-your-n8x0-automatic-skype-launcher/" title="Extending the life of your N8x0: Automatic Skype Launcher" target="_blank">Extending the life of your N8x0: Automatic Skype Launcher</a>.</p>
<p><a href="https://secure.flickr.com/photos/tanty0/7589380008/" target="_blank"><img loading="lazy" decoding="async" class="alignleft size-full" title="Skype Tango Icon" src="https://farm8.staticflickr.com/7127/7589380008_3d49102a10_o.png" alt="Skype Tango Icon" width="64" height="64" hspace="40" /></a></p>
<p>I took the chance to update also the artwork used in these two applications. First thing, I created a <a title="Tango Desktop Project" href="http://tango.freedesktop.org/" target="_blank">Tango</a>-ized <a title="Skype SVG" href="http://git.igalia.com/cgi-bin/gitweb.cgi?p=art/tango-icon-theme-extras.git;a=blob_plain;f=scalable/apps/skype.svg;hb=HEAD" target="_blank">version</a> of the Skype logo.</p>
<p>Then, I used the previous magnificent art works from <a title="Andreas Nilsson" href="http://www.andreasn.se/" target="_blank">Andreas Nilsson</a> and <a title="Jakub Steiner" href="http://jimmac.musichall.cz/" target="_blank">Jakub Steiner</a> to create the new icons, and these are the result:</p>
<p><a href="https://secure.flickr.com/photos/tanty0/7589320304/" target="_blank"><img loading="lazy" decoding="async" title="Applications Fullscreener Icon" src="https://farm9.staticflickr.com/8147/7589320304_e557c02a47_o.png" alt="Applications Fullscreener Icon" width="64" height="64" hspace="20" /></a> <a href="https://secure.flickr.com/photos/tanty0/7589320622/" target="_blank"><img loading="lazy" decoding="async" title="Applications Fullscreener Debian Package Icon" src="https://farm9.staticflickr.com/8013/7589320622_6b2a60890b_o.png" alt="Applications Fullscreener Debian Package Icon" width="64" height="64" hspace="20" /></a> <a href="https://secure.flickr.com/photos/tanty0/7589320828/" target="_blank"><img loading="lazy" decoding="async" title="Applications Fullscreener Icon" src="https://farm9.staticflickr.com/8282/7589320828_f1d159a8e3_o.png" alt="Applications Fullscreener Icon" width="64" height="64" hspace="20" /></a> <a href="https://secure.flickr.com/photos/tanty0/7589321002/" target="_blank"><img loading="lazy" decoding="async" title="Applications Fullscreener Settings Icon" src="https://farm9.staticflickr.com/8143/7589321002_7deb043ab5_o.png" alt="Applications Fullscreener Settings Icon" width="64" height="64" hspace="20" /></a></p>
<p>Anyway, going to the actual changes.</p>
<p>The most important change for <em>Applications Fullscreener</em> is:</p>
<ul>
<li>There was a second <em>bash</em> helper to launch a certain application and send the fullscreen key event some time afterwards. It was not fully featured but now it is.</li>
</ul>
<p>You can, also, check the complete <a title="Applications Fullscreener 0.0.3 ChangeLog" href="https://gitorious.org/apps-fullscreener/apps-fullscreener/blobs/0.0.3/ChangeLog" target="_blank">ChangeLog</a> for <em>Applications Fullscreener</em>.</p>
<p>The most important changes for <em>Automatic Skype Launcher</em> are:</p>
<ul>
<li>The Automatic Skype Launcher service was not stopping when uninstalled. Now this is corrected.</li>
<li>The init service was not starting correctly in some scenarios due to some uninitialized variables. This has been corrected.</li>
<li>In the previous version, I added an alarm triggered by the <em>alarmd</em> daemon to restart Skype (and the service). This was not working always. Now, killing Skype is forced.</li>
</ul>
<p>You can, also, check the complete <a title="Automatic Skype Launcher 0.0.3 ChangeLog" href="https://gitorious.org/skype-autolauncher/skype-autolauncher/blobs/0.0.3/ChangeLog" target="_blank">ChangeLog</a> for <em>Automatic Skype Launcher</em>.</p>
<p>That&#8217;s it. Comments and patches are welcomed!</p>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F07%2F17%2Fextending-the-life-of-your-n8x0-second-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Second%20update%20for%20Automatic%20Skype%20Launcher" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">9 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=fa99c71ed00411e19fbb43b2ffddb4d0b4d0&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/fa99c71ed00411e19fbb43b2ffddb4d0b4d0/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=fa99c71ed00411e19fbb43b2ffddb4d0b4d0&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/fa99c71ed00411e19fbb43b2ffddb4d0b4d0/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Tue, 17 Jul 2012 11:03:33 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-fa99c71ed00411e19fbb43b2ffddb4d0b4d0</guid>
        </item>
        <item>
            <title>Extending the life of your N8x0: Update for Automatic Skype Launcher</title>
            <link>https://blog.andresgomez.org/2012/03/06/extending-the-life-of-your-n8x0-update-for-automatic-skype-launcher/</link>
            <description><![CDATA[
<p>I&#8217;ve just released the <em>0.0.2</em> version of <a title="Applications Fullscreener debian package" href="http://www.andresgomez.org/files/apps-fullscreener_0.0.3_armel.deb" target="_blank">Applications Fullscreener</a> and <a title="Automatic Skype Launcher debian package" href="http://www.andresgomez.org/files/skype-autolauncher_0.0.3_armel.deb" target="_blank">Automatic Skype Launcher</a>.</p>
<p>As I was already commenting in my previous post <a href="http://blog.andresgomez.org/2011/12/21/extending-the-life-of-your-n8x0-automatic-skype-launcher/" title="Extending the life of your N8x0: Automatic Skype Launcher" target="_blank">Extending the life of your N8x0: Automatic Skype Launcher</a>, just download them and install them in your N8x0 for making it become a good 24/7 Skype phone.</p>
<p>The most important change for <em>Applications Fullscreener</em> is:</p>
<ul>
<li>I&#8217;ve added a helper to launch a certain application and send the fullscreen key event some time afterwards.<br />
This is specially useful for launching an application through the DSME watchdog daemon in Maemo4.x. Using this helper as a wrapper, the application will receive the fullscreen event some time after being launched while the watchdog keeps track of the helper. In this case, if either the helper or the application dies, both die and, hence, the DSME will relaunch them both.</li>
</ul>
<p>You can, also, check the complete <a title="Applications Fullscreener 0.0.2 ChangeLog" href="https://gitorious.org/apps-fullscreener/apps-fullscreener/blobs/0.0.2/ChangeLog" target="_blank">ChangeLog</a> for <em>Applications Fullscreener</em>.</p>
<p>The most important changes for <em>Automatic Skype Launcher</em> are:</p>
<ul>
<li>I&#8217;ve added a Control Panel plugin for setting several behaviors of the application: starting an init service, using a watchdog for keeping it alive, trying to fullscreen Skype after launching it as a service and the time at which the service will be restarted, if so.</li>
</ul>
<p><a href="http://www.flickr.com/photos/tanty0/6957216845/"><img loading="lazy" decoding="async" class="aligncenter" title="Automatic Skype Launcher Control Panel plugin snapshot" src="https://farm8.staticflickr.com/7041/6957216845_99f2c19738.jpg" alt="Automatic Skype Launcher Control Panel plugin snapshot" width="400" height="240" /></a><br />
</p>
<ul>
<li>I&#8217;ve added a Home Desktop applet for making it easier to launch manually Skype, not having to get into the applications menu.</li>
</ul>
<p><a href="http://www.flickr.com/photos/tanty0/6811107060/"><img loading="lazy" decoding="async" class="aligncenter" title="Automatic Skype Launcher Home Desktop applet snapshot" src="https://farm8.staticflickr.com/7183/6811107060_8caf50c2d0.jpg" alt="Automatic Skype Launcher Home Desktop applet snapshot" width="400" height="240" /></a><br />
</p>
<ul>
<li>The Automatic Skype Launcher service was not stopping when the N8x0 was turned off while charging. Now this is corrected.</li>
<li>In the previous version, I added a <em>cron.daily</em> script to restart Skype (and the service). Actually, the N8x0 doesn&#8217;t have a cron daemon, by default. This is now corrected through the usage of an alarm triggered by the <em>alarmd</em> daemon.</li>
</ul>
<p>You can, also, check the complete <a title="Automatic Skype Launcher 0.0.2 ChangeLog" href="https://gitorious.org/skype-autolauncher/skype-autolauncher/blobs/0.0.2/ChangeLog" target="_blank">ChangeLog</a> for <em>Automatic Skype Launcher</em>.</p>
<p>That&#8217;s it. Comments and patches are welcomed!</p>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2012%2F03%2F06%2Fextending-the-life-of-your-n8x0-update-for-automatic-skype-launcher%2F&amp;linkname=Extending%20the%20life%20of%20your%20N8x0%3A%20Update%20for%20Automatic%20Skype%20Launcher" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">8 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=4c88991667a411e1863ed5c83536209c209c&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/4c88991667a411e1863ed5c83536209c209c/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=4c88991667a411e1863ed5c83536209c209c&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/4c88991667a411e1863ed5c83536209c209c/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Tue, 06 Mar 2012 15:04:58 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-4c88991667a411e1863ed5c83536209c209c</guid>
        </item>
        <item>
            <title>Extending the life of your N8x0: Automatic Skype Launcher</title>
            <link>https://blog.andresgomez.org/2011/12/21/extending-the-life-of-your-n8x0-automatic-skype-launcher/</link>
            <description><![CDATA[
<p>Leading quickly to the “ham”, just install <a title="Applications Fullscreener debian package" href="http://www.andresgomez.org/files/apps-fullscreener_0.0.3_armel.deb" target="_blank">Applications Fullscreener</a> and <a title="Automatic Skype Launcher debian package" href="http://www.andresgomez.org/files/skype-autolauncher_0.0.3_armel.deb" target="_blank">Automatic Skype Launcher</a> in your N8x0 and turn it into a Skype phone. Now, the long explanation <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="<span class="net_nemein_favourites">9 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e69328d82cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e69328d82cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e69328d82cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e69328d82cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Wed, 21 Dec 2011 17:03:49 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e69328d82cbb11e182c493aa52186b436b43</guid>
        </item>
        <item>
            <title>QUrl (mis)usage: appendix, avoid automatic cast from QString</title>
            <link>https://blog.andresgomez.org/2011/08/10/qurl-misusage-appendix-avoid-automatic-cast-from-qstring/</link>
            <description><![CDATA[
<p>As I was introducing in the former entry <a href="http://blog.andresgomez.org/2011/07/19/qurl-misusage/" title="QUrl (mis)usage" target="_blank">QUrl (mis)usage</a>, the direct creation of a QUrl from a QString should be avoided in any software that is not trying to <em>smartly</em> guess what a user input should lead to.</p>
<p>So, going directly to the <strong>ham</strong>, to avoid mistakes due to automatic conversions from QString to QUrl, I encourage the usage of the <a href="http://doc.qt.nokia.com/4.7/qurl.html#QT_NO_URL_CAST_FROM_STRING" title="QT_NO_URL_CAST_FROM_STRING" target="_blank">QT_NO_URL_CAST_FROM_STRING</a> macro. The only thing you have to do is adding a line to your <em>qmake</em> project file like this:</p>
<p style="font-size: x-small;"><code># Avoid automatic casts from QString to QUrl. Dangerous!!!<br />
DEFINES += QT_NO_URL_CAST_FROM_STRING</code></p>
<p>Or add it directly to the compilation line, like this</p>
<p style="font-size: x-small;"><code>g++ ... -DQT_NO_URL_CAST_FROM_STRING ... </code></p>
<p>As I was pointing in my previous post, the usage of <a href="http://doc.qt.nokia.com/4.7/qurl.html#fromLocalFile" title="QUrl::fromLocalFile API documentation" target="_blank">QUrl::fromLocalFile(QString)</a> and <a href="http://doc.qt.nokia.com/4.7/qurl.html#fromEncoded-2" title="QUrl::fromEncoded API documentation" target="_blank">QUrl::fromEncoded(QByteArray, QUrl::StrictMode)</a> is recommended when dealing with QString and QUrl, but committing mistakes is a human condition so it is pretty easy to end passing a QString as a parameter to some API expecting a QUrl, or assigning a QString to a QUrl with the &#8220;=&#8221; operator through the C++ automatic cast mechanism which is implemented in the QUrl class. That&#8217;s why <strong>forbidding</strong> these <strong>automatic casts</strong> in our code is of such importantance.</p>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2011%2F08%2F10%2Fqurl-misusage-appendix-avoid-automatic-cast-from-qstring%2F&amp;linkname=QUrl%20%28mis%29usage%3A%20appendix%2C%20avoid%20automatic%20cast%20from%20QString" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e4e8d3982cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e4e8d3982cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e4e8d3982cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e4e8d3982cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Wed, 10 Aug 2011 09:41:36 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e4e8d3982cbb11e182c493aa52186b436b43</guid>
        </item>
        <item>
            <title>QUrl (mis)usage</title>
            <link>https://blog.andresgomez.org/2011/07/19/qurl-misusage/</link>
            <description><![CDATA[
<p>Lately, I&#8217;ve been developing some software which makes an intensive usage of QUrls as resource locators for local files. Nothing wrong here. QUrl is a powerful way of sharing the locations of those in an universal way. The problem is when you construct those QUrls from QStrings and you actually forget that QUrls are meant for much more than representing local file locations.</p>
<p><div style="width: 410px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" title="Authority chunks on an URL" src="http://doc.qt.nokia.com/4.7/images/qurl-authority.png" alt="Authority chunks on an URL" width="400" height="176" /><p class="wp-caption-text">Authority chunks on an URL</p></div></p>
<p>At the moment of writing this, QUrl <a href="http://doc.qt.nokia.com/4.7/qurl.html">documentation</a>, although quite complete, could be much more explanatory. For example, it says that the recommended way for creating a QUrl from a QString is:</p>
<p style="font-size: x-small;"><code><br />
* When creating an URL QString from a QByteArray or a char*,<br />
always use QString::fromUtf8().<br />
* Favor the use of QUrl::fromEncoded() and QUrl::toEncoded()<br />
instead of QUrl(string) and QUrl::toString() when converting<br />
QUrl to/from string.<br />
</code></p>
<p>But this is explained in the documentation for QUrl::fromUserInput(), instead of in the Detailed Description [ <a href="http://bugreports.qt.nokia.com/browse/QTBUG-20411">1</a> ].</p>
<p>What is important from this explanation is that it is not a matter of favor the use of QUrl::from/toEncoded() over QUrl::(from)toString() but, I would say, a must if you don&#8217;t want to end up with bogus corner cases.</p>
<p>Why would this happen? Well, as I was saying, QUrl is meant for much more than universally representing the location of a file so, here go the <strong>big tips</strong>:</p>
<ol>
<li>If you want to get the QUrl from a local file represented with a QString, use <strong>always</strong> QUrl::fromLocalFile ( const QString &amp; localFile ) . Don&#8217;t use QUrl::QUrl ( const QString &amp; url ) if you don&#8217;t want to end up with some problems. In the same way, get the path to the local file <strong>always</strong> with QUrl::toLocalFile().</li>
<li>If you want to get a QUrl from a QString representing an URL, be sure that the QString is actually representing a <strong>percent encoded</strong> URL, as it should to be a valid URL, and <strong>always</strong> use QUrl::fromEncoded ( const QByteArray &amp; input, ParsingMode parsingMode ), with <strong>QUrl::StrictMode</strong> as the QUrl::ParsingMode.</li>
<li>If you want to get a QString representation of an URL from a QUrl use <strong>always</strong> QUrl::toEncoded ().</li>
</ol>
<h3>Bogus examples for each case:</h3>
<h4>Local file</h4>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p style="color: green;">Correct:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl::fromLocalFile("/mypath/my#file.jpg")</code></p>
<p style="color: red;">Incorrect:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl("file:///mypath/my#file.jpg")</code></p>
<p>The problem here is the way QUrl will treat the &#8220;#&#8221; character in the second example. It will think, as it actually doesn&#8217;t have a way of guessing, that the character is delimiting the fragment part of the URL.</p>
<p><div style="width: 410px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" title="Fragment part on an URL" src="http://doc.qt.nokia.com/4.7/images/qurl-fragment.png" alt="Fragment part on an URL" width="400" height="63" /><p class="wp-caption-text">Fragment part on an URL</p></div></p>
<p>As a result, calling to:</p>
<p style="font-size: x-small;"><code>myUrl.toLocalFile()</code></p>
<p>in the first case will result to:</p>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p>while in the second will be:</p>
<p style="font-size: x-small;"><code>/mypath/my</code></p>
<h4>Parsing mode</h4>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p>(encoded) url representation:</p>
<p style="font-size: x-small;"><code>file:///mypath/my%23file.jpg</code></p>
<p style="color: green;">Correct:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl::fromEncoded("file:///mypath/my%23file.jpg", QUrl::StrictMode)</code></p>
<p style="color: red;">Incorrect:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl::fromEncoded("file:///mypath/my%23file.jpg")</code></p>
<p>The problem here is the way QUrl will treat the &#8220;%23&#8221; encoding in the second example. Although it is not explicitly explained in the documentation [ <a href="http://bugreports.qt.nokia.com/browse/QTBUG-20399">2</a> ], QUrl will use QUrl::TolerantMode as ParsingMode by default. Therefore, it will think that the input comes from an ignorant user which was actually trying to pass &#8220;file:///mypath/my#file.jpg&#8221;. Again, it will understand after converting back &#8220;%23&#8221; to &#8220;#&#8221;, that the character is delimiting the fragment part of the URL.</p>
<p>As a result, calling to:</p>
<p style="font-size: x-small;"><code>myUrl.toLocalFile()</code></p>
<p>in the first case will result to:</p>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p>while in the second will be:</p>
<p style="font-size: x-small;"><code>/mypath/my</code></p>
<h4>Encoded usage</h4>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p>(encoded) url representation:</p>
<p style="font-size: x-small;"><code>file:///mypath/my%23file.jpg</code></p>
<p>(unencoded and wrong) url representation:</p>
<p style="font-size: x-small;"><code>file:///mypath/my#file.jpg</code></p>
<p style="color: green;">Correct:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl::fromEncoded("file:///mypath/my%23file.jpg", QUrl::StrictMode)</code></p>
<p style="color: red;">Incorrect:</p>
<p style="font-size: x-small;"><code>QUrl myUrl = QUrl("file:///mypath/my#file.jpg")</code></p>
<p>Here, we have another incarnation of the very same problem than the two examples above. QUrl will think, again, as it actually doesn&#8217;t have a way of guessing, that the character is delimiting the fragment part of the URL.</p>
<p>As a result, calling to:</p>
<p style="font-size: x-small;"><code>myUrl.toLocalFile()</code></p>
<p>in the first case will result to:</p>
<p style="font-size: x-small;"><code>/mypath/my#file.jpg</code></p>
<p>while in the second will be:</p>
<p style="font-size: x-small;"><code>/mypath/my</code></p>
<h3>Corollary:</h3>
<p>The default behavior of QUrl is to provide an easy handling of URLs to the user of our programs, the <strong>end user</strong>, but not the user of QUrl, the developers. I find this quite awkward but, still, it is a decision of Qt people and, as developers, we only have to take this into account when writing our code.</p>
<p>These bogus URLs, which are to be corrected with the usage of the QUrl::TolerantMode ParsingMode, usually come from a text entry box &#8220;à là&#8221; browser location bar, but this use case is, actually, not so common when talking from the developer&#8217;s point of view. When dealing with URLs in our code we have to take into account what an URL is and how it should be formatted/encoded to be valid. Therefore, if I&#8217;m receiving a wrongly encoded URL I should go to the source code providing this URL and fix the problem there rather than trying to smartly guess which should be the proper URL. For example, in my software currently in development we use <a href="http://www.tracker-project.org/">Tracker</a> and I rely on it to feed my code with properly formatted URLs. If for some reason Tracker gives me a wrongly encoded one, the place for solving it is, actually, Tracker, and not my software. I should not and must not interpret what Tracker may have wanted to pass me, but open a bug in its bugzilla and provide as accurate information as I can to help them solve this issue.</p>
<p>Just so my friend <a href="https://dz015.wordpress.com/">Iván Frade</a> doesn&#8217;t kill me, make notice that Tracker is, so far, perfectly dealing with URLs <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="<span class="net_nemein_favourites">0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e2f97a102cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e2f97a102cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e2f97a102cbb11e182c493aa52186b436b43&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e2f97a102cbb11e182c493aa52186b436b43/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Tue, 19 Jul 2011 17:11:35 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e2f97a102cbb11e182c493aa52186b436b43</guid>
        </item>
        <item>
            <title>“maemizing” GUADEMY</title>
            <link>https://blog.andresgomez.org/2007/03/20/maemizing-guademy/</link>
            <description><![CDATA[
<p>This weekend <a title="GUAdemy" target="_blank" href="http://www.guademy.org/">GUAdemy</a>, a mixed conference between <a title="GUADEC" target="_blank" href="http://www.guadec.org/">GUADEC</a> and <a title="Akademy" target="_blank" href="http://conference2007.kde.org/">Akademy</a>, lands in Coruña. As in most of Gnome related events, Igalia is going to be there.</p>
<p>For me, I&#8217;m going to give a talk about <a title="maemo" target="_blank" href="http://www.maemo.org/">maemo</a> on Saturday afternoon, as Miguel, <a title="Chema's blog" target="_blank" href="http://blogs.igalia.com/chema">Chema</a>, Susana, <a title="Iago's blog" target="_blank" href="http://blogs.igalia.com/itoral/">Iago</a> and <a title="Sergio's blog" target="_blank" href="http://blogs.igalia.com/svillar/">Sergio</a> are going to give other <a title="Igalia's GUAdemy talks" target="_blank" href="http://gpul.grupos.udc.es/MaKaC/conferenceTimeTable.py?confId=0">talks</a> about several Gnome related issues.</p>
<p>If you want to learn about the Gtk based environment for embedded devices created by Nokia, come and join us.</p>
<p>See you soon!</p>
<p><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_diaspora" href="https://www.addtoany.com/add_to/diaspora?linkurl=https%3A%2F%2Fblog.andresgomez.org%2F2007%2F03%2F20%2Fmaemizing-guademy%2F&amp;linkname=%E2%80%9Cmaemizing%E2%80%9D%20GUADEMY" title="Diaspora" rel="nofollow noopener" target="_blank"></a></p><span class="net_nemein_favourites">0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=8955db72d6c311e1ae91fdb54c1042c842c8&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/8955db72d6c311e1ae91fdb54c1042c842c8/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=8955db72d6c311e1ae91fdb54c1042c842c8&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/8955db72d6c311e1ae91fdb54c1042c842c8/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Andres Gomez &lt;agomez@igalia.com&gt;</author>
            <category>feed:6b5f2c9f097a97dac5362c4b8bd9fd58</category>
            <pubDate>Mon, 19 Mar 2007 23:04:11 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-8955db72d6c311e1ae91fdb54c1042c842c8</guid>
        </item>
    </channel>
</rss>
