module_t *module;
vout_thread_t *vout;
- void *handle; /* OS-specific Window handle */
+ union
+ {
+ void *hwnd; /* Win32 window handle */
+ uint32_t xid; /* X11 window ID */
+ } handle;
void *p_sys; /* window provider private data */
unsigned width; /* pixels width */
#include <hildon/hildon-banner.h>
#include <gtk/gtk.h>
#include <stdio.h>
+#include <inttypes.h>
#include "maemo.h"
#include "maemo_callbacks.h"
return VLC_EGENERIC; /* Maemo not in use */
}
- wnd->handle = request_video( intf, wnd->vout );
- msg_Dbg( intf, "Using handle %p", wnd->handle );
+ wnd->handle.xid = request_video( intf, wnd->vout );
+ msg_Dbg( intf, "Using handle %"PRIu32, wnd->handle.xid );
wnd->control = ControlWindow;
wnd->p_private = intf;
/**
* Request the video to avoid the conflicts
**/
-void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
- unsigned int *pi_width, unsigned int *pi_height,
- bool b_keep_size )
+WId VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
+ unsigned int *pi_width, unsigned int *pi_height,
+ bool b_keep_size )
{
msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y );
#ifndef NDEBUG
msg_Dbg( p_intf, "embedded video ready (handle %p)", (void *)winId() );
#endif
- return ( void* )winId();
+ return winId();
}
/* Set the Widget to the correct Size */
VideoWidget( intf_thread_t * );
virtual ~VideoWidget();
- void *request( vout_thread_t *, int *, int *,
- unsigned int *, unsigned int *, bool );
+ WId request( vout_thread_t *, int *, int *,
+ unsigned int *, unsigned int *, bool );
void release( void );
int control( void *, int, va_list );
* Thou shall not call/resize/hide widgets from on another thread.
* This is wrong, and this is THE reason to emit signals on those Video Functions
**/
-void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x,
- int *pi_y, unsigned int *pi_width,
- unsigned int *pi_height )
+WId MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x,
+ int *pi_y, unsigned int *pi_width,
+ unsigned int *pi_height )
{
/* Request the videoWidget */
- void *ret = videoWidget->request( p_nvout,pi_x, pi_y,
- pi_width, pi_height, b_keep_size );
+ WId ret = videoWidget->request( p_nvout,pi_x, pi_y,
+ pi_width, pi_height, b_keep_size );
if( ret ) /* The videoWidget is available */
{
/* Did we have a bg ? Hide it! */
}
/* Call from WindowControl function */
-int MainInterface::controlVideo( void *p_window, int i_query, va_list args )
+int MainInterface::controlVideo( int i_query, va_list args )
{
- VLC_UNUSED( p_window ); //FIXME remove this param
int i_ret = VLC_SUCCESS;
switch( i_query )
{
virtual ~MainInterface();
/* Video requests from core */
- void *requestVideo( vout_thread_t *p_nvout, int *pi_x,
- int *pi_y, unsigned int *pi_width,
- unsigned int *pi_height );
+ WId requestVideo( vout_thread_t *p_nvout, int *pi_x,
+ int *pi_y, unsigned int *pi_width,
+ unsigned int *pi_height );
void releaseVideo( void );
- int controlVideo( void *p_window, int i_query, va_list args );
+ int controlVideo( int i_query, va_list args );
/* Getters */
QSystemTrayIcon *getSysTray() { return sysTray; };
MainInterface *p_mi = intf->p_sys->p_mi;
msg_Dbg (obj, "requesting video...");
- wnd->handle = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y,
- &wnd->width, &wnd->height);
- if (!wnd->handle)
+#if defined (Q_WS_X11)
+ wnd->handle.xid = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y,
+ &wnd->width, &wnd->height);
+ if (!wnd->handle.xid)
return VLC_EGENERIC;
+#elif defined (WIN32)
+ wnd->handle.hwnd = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y,
+ &wnd->width, &wnd->height);
+ if (!wnd->handle.hwnd)
+ return VLC_EGENERIC;
+
+#else
+ return VLC_EGENERIC;
+
+#endif
+
wnd->control = WindowControl;
wnd->p_private = p_mi;
return VLC_SUCCESS;
MainInterface *p_mi = (MainInterface *)wnd->p_private;
QMutexLocker locker (&iface.lock);
- return p_mi->controlVideo (wnd->handle, query, args);
+ return p_mi->controlVideo (query, args);
}
static void WindowClose (vlc_object_t *obj)
&p_vout->p_sys->i_window_y,
&p_vout->p_sys->i_window_width,
&p_vout->p_sys->i_window_height );
- p_vout->p_sys->hparent = p_vout->p_sys->parent_window->handle;
+ p_vout->p_sys->hparent = p_vout->p_sys->parent_window->handle.hwnd;
/* We create the window ourself, there is no previous window proc. */
p_vout->p_sys->pf_wndproc = NULL;
BlackPixel( p_sys->p_display, DefaultScreen(p_sys->p_display) );
xwindow_attributes.event_mask = ExposureMask | StructureNotifyMask;
p_sys->window = XCreateWindow( p_sys->p_display,
- p_sys->owner_window->handle,
+ p_sys->owner_window->handle.xid,
0, 0,
p_sys->main_window.i_width,
p_sys->main_window.i_height,
XSelectInput( p_sys->p_display, p_sys->window,
KeyPressMask | ButtonPressMask | StructureNotifyMask |
VisibilityChangeMask | FocusChangeMask );
- XSelectInput( p_sys->p_display, p_sys->owner_window->handle,
+ XSelectInput( p_sys->p_display, p_sys->owner_window->handle.xid,
StructureNotifyMask );
XSetInputFocus( p_sys->p_display, p_sys->window, RevertToParent, CurrentTime );
}
if( p_vout->p_sys->p_win->owner_window )
{
while( XCheckWindowEvent( p_vout->p_sys->p_display,
- p_vout->p_sys->p_win->owner_window->handle,
+ p_vout->p_sys->p_win->owner_window->handle.xid,
StructureNotifyMask, &xevent ) == True )
{
/* ConfigureNotify event: prepare */
unsigned int dummy4, dummy5;
/* Select events we are interested in. */
- XSelectInput( p_vout->p_sys->p_display, p_win->owner_window->handle,
- StructureNotifyMask );
+ XSelectInput( p_vout->p_sys->p_display,
+ p_win->owner_window->handle.xid, StructureNotifyMask );
/* Get the parent window's geometry information */
- XGetGeometry( p_vout->p_sys->p_display, p_win->owner_window->handle,
+ XGetGeometry( p_vout->p_sys->p_display,
+ p_win->owner_window->handle.xid,
&dummy1, &dummy2, &dummy3,
&p_win->i_width,
&p_win->i_height,
* ButtonPress event, so we need to open a new window anyway. */
p_win->base_window =
XCreateWindow( p_vout->p_sys->p_display,
- p_win->owner_window->handle,
+ p_win->owner_window->handle.xid,
0, 0,
p_win->i_width, p_win->i_height,
0,
xcb_map_window (conn, window);
xcb_flush (conn);
- wnd->handle = (void *)(intptr_t)window;
+ wnd->handle.xid = window;
wnd->p_sys = conn;
wnd->control = Control;
return VLC_SUCCESS;
msg_Err (vout, "cannot get window");
return VLC_EGENERIC;
}
- p_sys->parent = (intptr_t)p_sys->embed->handle;
+ p_sys->parent = p_sys->embed->handle.xid;
}
/* Determine our input format */