Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
d47392b8
Commit
d47392b8
authored
May 13, 2003
by
Cyril Deguet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* beginning of event processing in X11 skins
* graphics should work, but....
parent
4e2943d8
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
144 additions
and
43 deletions
+144
-43
modules/gui/skins/x11/x11_run.cpp
modules/gui/skins/x11/x11_run.cpp
+114
-19
modules/gui/skins/x11/x11_window.cpp
modules/gui/skins/x11/x11_window.cpp
+26
-21
modules/gui/skins/x11/x11_window.h
modules/gui/skins/x11/x11_window.h
+4
-3
No files found.
modules/gui/skins/x11/x11_run.cpp
View file @
d47392b8
...
...
@@ -2,7 +2,7 @@
* x11_run.cpp:
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_run.cpp,v 1.
2 2003/05/12 17:33:19 gbazin
Exp $
* $Id: x11_run.cpp,v 1.
3 2003/05/13 20:36:29 asmax
Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
...
...
@@ -49,12 +49,6 @@
// include the icon graphic
#include "share/vlc32x32.xpm"
//---------------------------------------------------------------------------
class
CallBackObjects
{
public:
VlcProc
*
Proc
;
};
//---------------------------------------------------------------------------
// Specific method
...
...
@@ -70,14 +64,13 @@ class Instance: public wxApp
{
public:
Instance
();
Instance
(
intf_thread_t
*
_p_intf
,
CallBackObjects
*
callback
);
Instance
(
intf_thread_t
*
_p_intf
);
bool
OnInit
();
OpenDialog
*
open
;
private:
intf_thread_t
*
p_intf
;
CallBackObjects
*
callbackobj
;
};
...
...
@@ -211,11 +204,10 @@ Instance::Instance( )
{
}
Instance
::
Instance
(
intf_thread_t
*
_p_intf
,
CallBackObjects
*
callback
)
Instance
::
Instance
(
intf_thread_t
*
_p_intf
)
{
// Initialization
p_intf
=
_p_intf
;
callbackobj
=
callback
;
}
IMPLEMENT_APP_NO_MAIN
(
Instance
)
...
...
@@ -241,18 +233,121 @@ bool Instance::OnInit()
//---------------------------------------------------------------------------
// GTK2 interface
// X11 event processing
//---------------------------------------------------------------------------
void
ProcessEvent
(
intf_thread_t
*
p_intf
,
VlcProc
*
proc
,
XEvent
*
event
)
{
// Variables
list
<
SkinWindow
*>::
const_iterator
win
;
unsigned
int
msg
;
Event
*
evt
;
Window
wnd
=
((
XAnyEvent
*
)
event
)
->
window
;
fprintf
(
stderr
,
"event %d %x
\n
"
,
event
->
type
,
wnd
);
// Create event to dispatch in windows
// Skin event
if
(
event
->
type
==
ClientMessage
)
{
/* msg = ( (GdkEventClient *)event )->data.l[0];
evt = (Event *)new OSEvent( p_intf,
((GdkEventAny *)event)->window,
msg,
( (GdkEventClient *)event )->data.l[1],
( (GdkEventClient *)event )->data.l[2] );*/
}
// System event
else
{
msg
=
event
->
type
;
evt
=
(
Event
*
)
new
OSEvent
(
p_intf
,
((
XAnyEvent
*
)
event
)
->
window
,
msg
,
0
,
(
long
)
event
);
}
// Process keyboard shortcuts
if
(
msg
==
KeyPress
)
{
/* int KeyModifier = 0;
// If key is ALT
if( ((GdkEventKey *)event)->state & GDK_MOD1_MASK )
{
KeyModifier = 1;
}
// If key is CTRL
else if( ((GdkEventKey *)event)->state & GDK_CONTROL_MASK )
{
KeyModifier = 2;
}
int key = ((GdkEventKey *)event)->keyval;
// Translate into lower case
if( key >= 'a' && key <= 'z' )
{
key -= ('a' - 'A');
}
if( KeyModifier > 0 )
p_intf->p_sys->p_theme->EvtBank->TestShortcut( key , KeyModifier );*/
}
// Send event
else
if
(
IsVLCEvent
(
msg
)
)
{
if
(
!
proc
->
EventProc
(
evt
)
)
{
// wxExit();
return
;
// Exit VLC !
}
}
else
if
(
wnd
==
NULL
)
{
for
(
win
=
p_intf
->
p_sys
->
p_theme
->
WindowList
.
begin
();
win
!=
p_intf
->
p_sys
->
p_theme
->
WindowList
.
end
();
win
++
)
{
(
*
win
)
->
ProcessEvent
(
evt
);
}
}
else
{
// Find window matching with gwnd
for
(
win
=
p_intf
->
p_sys
->
p_theme
->
WindowList
.
begin
();
win
!=
p_intf
->
p_sys
->
p_theme
->
WindowList
.
end
();
win
++
)
{
// If it is the correct window
if
(
wnd
==
(
(
X11Window
*
)(
*
win
)
)
->
GetHandle
()
)
{
// Send event and check if processed
if
(
(
*
win
)
->
ProcessEvent
(
evt
)
)
{
delete
(
OSEvent
*
)
evt
;
return
;
}
else
{
break
;
}
}
}
}
evt
->
DestructParameters
();
delete
(
OSEvent
*
)
evt
;
// Check if vlc is closing
proc
->
IsClosing
();
}
//---------------------------------------------------------------------------
// X11 interface
//---------------------------------------------------------------------------
void
OSRun
(
intf_thread_t
*
p_intf
)
{
static
char
*
p_args
[]
=
{
""
};
// Create VLC event object processing
CallBackObjects
*
callbackobj
=
new
CallBackObjects
();
callbackobj
->
Proc
=
new
VlcProc
(
p_intf
);
VlcProc
*
proc
=
new
VlcProc
(
p_intf
);
/* wxTheApp = new Instance( p_intf, callbackobj );
wxEntry( 1, p_args );*/
Display
*
display
=
((
OSTheme
*
)
p_intf
->
p_sys
->
p_theme
)
->
GetDisplay
();
...
...
@@ -262,10 +357,10 @@ void OSRun( intf_thread_t *p_intf )
{
XEvent
*
event
;
XNextEvent
(
display
,
event
);
fprintf
(
stderr
,
"event %d
\n
"
,
event
->
type
);
ProcessEvent
(
p_intf
,
proc
,
event
);
}
delete
callbackobj
;
}
//---------------------------------------------------------------------------
bool
IsVLCEvent
(
unsigned
int
msg
)
...
...
modules/gui/skins/x11/x11_window.cpp
View file @
d47392b8
...
...
@@ -2,7 +2,7 @@
* x11_window.cpp: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.cpp,v 1.
1 2003/04/28 14:32:57
asmax Exp $
* $Id: x11_window.cpp,v 1.
2 2003/05/13 20:36:29
asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
...
...
@@ -58,7 +58,11 @@ X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
{
// Set handles
Wnd
=
wnd
;
// gc = gdk_gc_new( gwnd );
display
=
p_intf
->
p_sys
->
display
;
int
screen
=
DefaultScreen
(
display
);
Gc
=
DefaultGC
(
display
,
screen
);
Name
=
name
;
...
...
@@ -155,15 +159,15 @@ bool X11Window::ProcessOSEvent( Event *evt )
unsigned
int
msg
=
evt
->
GetMessage
();
unsigned
int
p1
=
evt
->
GetParam1
();
int
p2
=
evt
->
GetParam2
();
/*
switch
(
msg
)
{
case
GDK_EXPOSE
:
case
Expose
:
RefreshFromImage
(
0
,
0
,
Width
,
Height
);
return
true
;
case
GDK_MOTION_NOTIFY
:
if( LButtonDown )
case
MotionNotify
:
/*
if( LButtonDown )
MouseMove( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
else if( RButtonDown )
...
...
@@ -172,13 +176,13 @@ bool X11Window::ProcessOSEvent( Event *evt )
else
MouseMove( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 0 );
gdk_window_get_pointer( gWnd, 0, 0, 0 );
gdk_window_get_pointer( gWnd, 0, 0, 0 );
*/
return
true
;
case
GDK_BUTTON_PRESS
:
case
ButtonPress
:
// Raise all the windows
for( list<SkinWindow *>::const_iterator win =
/*
for( list<SkinWindow *>::const_iterator win =
p_intf->p_sys->p_theme->WindowList.begin();
win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
{
...
...
@@ -203,11 +207,11 @@ bool X11Window::ProcessOSEvent( Event *evt )
default:
break;
}
}
*/
return
true
;
case
GDK_BUTTON_RELEASE
:
switch( ( (GdkEventButton *)p2 )->button )
case
ButtonRelease
:
/*
switch( ( (GdkEventButton *)p2 )->button )
{
case 1:
// Left button
...
...
@@ -225,14 +229,14 @@ bool X11Window::ProcessOSEvent( Event *evt )
default:
break;
}
}
*/
return
true
;
case
GDK_LEAVE_NOTIFY
:
case
LeaveNotify
:
OSAPI_PostMessage
(
this
,
WINDOW_LEAVE
,
0
,
0
);
return
true
;
case GDK_2BUTTON_PRESS:
/*
case GDK_2BUTTON_PRESS:
MouseDblClick( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
return true;
...
...
@@ -256,10 +260,10 @@ bool X11Window::ProcessOSEvent( Event *evt )
break;
}
return true;
*/
default:
return
false
;
}
*/
}
}
//---------------------------------------------------------------------------
void
X11Window
::
SetTransparency
(
int
Value
)
...
...
@@ -283,11 +287,12 @@ void X11Window::RefreshFromImage( int x, int y, int w, int h )
ReleaseDC( hWnd, DC );
*/
/* GdkDrawable *drawable = (( X11Graphics* )Image )->GetImage();
GdkImage *image = gdk_drawable_get_image( drawable, 0, 0, Width, Height );
gdk_draw_drawable( gWnd, gc, drawable, x, y, x, y, w, h );
Drawable
drawable
=
((
X11Graphics
*
)
Image
)
->
GetImage
();
fprintf
(
stderr
,
"prout
\n
"
);
XCopyArea
(
display
,
drawable
,
Wnd
,
Gc
,
x
,
y
,
w
,
h
,
x
,
y
);
XSync
(
display
,
0
);
/*
// Mask for transparency
GdkRegion *region = gdk_region_new();
for( int line = 0; line < Height; line++ )
...
...
modules/gui/skins/x11/x11_window.h
View file @
d47392b8
...
...
@@ -2,7 +2,7 @@
* x11_window.h: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.h,v 1.
1 2003/04/28 14:32:57
asmax Exp $
* $Id: x11_window.h,v 1.
2 2003/05/13 20:36:29
asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
...
...
@@ -39,7 +39,8 @@ class X11Window : public SkinWindow
private:
// General parameters
Window
Wnd
;
// GdkGC *gc;
Display
*
display
;
GC
Gc
;
int
CursorX
;
int
CursorY
;
int
WindowX
;
...
...
@@ -80,7 +81,7 @@ class X11Window : public SkinWindow
virtual
void
Move
(
int
left
,
int
top
);
virtual
void
Size
(
int
width
,
int
height
);
// Specific
gtk2
methods
// Specific
X11
methods
Window
GetHandle
()
{
return
Wnd
;
};
// Tooltip texts
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment