<p>In the last 0.9.3 stable release of VLC, a bug would occur when trying to resize the plugin with a javascript call to plugin.width or .height.</p>
<p>Instead of properly resizing it would simply crop the video to the new size.</p>
<p>Here is a patch for this issue, which has been developed at our company. This is diffed against the 0.93 stable release. I would have liked to submit it via trac, but apparently this is not possible.</p>
<p> </p>
<p>Cheers,</p>
<p>Yannick</p>
<p> </p>
<p><code>--- tmp/vlc-0.9.3/projects/mozilla/vlcshell.cpp   2008-09-18 23:03:36.000000000 +0200<br />+++ vlcshell.cpp   2008-10-10 17:09:51.000000000 +0200<br />@@ -7,6 +7,9 @@<br />  * Authors: Samuel Hocevar <sam@zoy.org><br />  *          Jean-Paul Saman <jpsaman@videolan.org><br />  *<br />+ *<br />+ * Patch for dynamic (Javascript) resize of Mozilla VLC plugin: Frederic Anger <f.anger@qiplay.com> and Yannick Bréhon <y.brehon@qiplay.com><br />+ *<br />  * This program is free software; you can redistribute it and/or modify<br />  * it under the terms of the GNU General Public License as published by<br />  * the Free Software Foundation; either version 2 of the License, or<br /></code><code>@@ -948,6 +951,9 @@<br />     unsigned int i_nchildren;<br />     unsigned int i_control_height, i_control_width;<br /> <br />+    int i_new_height = 0;<br />+    int i_new_width = 0;<br />+<br />     if( p_plugin->b_toolbar )<br />     {<br />         p_plugin->getToolbarSize( &i_control_width, &i_control_height );<br />@@ -969,15 +975,25 @@<br />     }<br /> #endif /* X11_RESIZE_DEBUG */<br /> <br />-    if( ! p_plugin->setSize(window.width, (window.height - i_control_height)) )<br />+    if( event && event->type == ConfigureNotify )<br />     {<br />-        /* size already set */<br />-        return;<br />+      i_new_height = event->xconfigure.height - i_control_height;<br />+      i_new_width = event->xconfigure.width - i_control_width;<br />+    }<br />+    else<br />+    {<br />+      i_new_height = window.height - i_control_height;<br />+      i_new_width = window.width - i_control_width;<br />     }<br /> <br />-    i_ret = XResizeWindow( p_display, drawable,<br />-                           window.width, (window.height - i_control_height) );<br />+    if( ! p_plugin->setSize(i_new_width, i_new_height) )<br />+    {<br />+      /* size already set */<br />+      return;<br />+    }<br /> <br />+    i_ret = XResizeWindow( p_display, drawable, i_new_width, i_new_height );<br />+    <br /> #ifdef X11_RESIZE_DEBUG<br />     fprintf( stderr,<br />              "vlcshell::Resize() XResizeWindow(owner) returned %d\n", i_ret );<br />@@ -1008,7 +1024,7 @@<br /> #endif /* X11_RESIZE_DEBUG */<br /> <br />         i_ret = XResizeWindow( p_display, base_window,<br />-                window.width, ( window.height - i_control_height ) );<br />+                i_new_width , i_new_height );<br /> <br /> #ifdef X11_RESIZE_DEBUG<br />         fprintf( stderr,</code><br /><code></code></p>