Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Steve Lhomme
VLC
Commits
8229bf31
Commit
8229bf31
authored
Apr 28, 2003
by
ipkiss
Browse files
* modules/gui/skins/win32/win32_run.cpp: clean exit of wxWindows thread
parent
772985d3
Changes
2
Hide whitespace changes
Inline
Side-by-side
modules/gui/skins/src/skin_common.h
View file @
8229bf31
...
...
@@ -2,7 +2,7 @@
* skin_common.h: Private Skin interface description
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: skin_common.h,v 1.
6
2003/04/28
14:12:33 asmax
Exp $
* $Id: skin_common.h,v 1.
7
2003/04/28
22:44:26 ipkiss
Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
...
...
@@ -38,6 +38,9 @@ class Messages;
class
SoutDialog
;
class
PrefsDialog
;
class
FileInfo
;
#ifdef WIN32
class
ExitTimer
;
#endif
#ifdef X11_SKINS
#include <X11/Xlib.h>
...
...
@@ -86,6 +89,11 @@ struct intf_sys_t
Display
*
display
;
#endif
#ifdef WIN32
bool
b_wx_die
;
ExitTimer
*
p_kludgy_timer
;
#endif
};
#endif
...
...
modules/gui/skins/win32/win32_run.cpp
View file @
8229bf31
...
...
@@ -2,7 +2,7 @@
* win32_run.cpp:
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: win32_run.cpp,v 1.1
0
2003/04/28
00:18
:2
7
ipkiss Exp $
* $Id: win32_run.cpp,v 1.1
1
2003/04/28
22:44
:2
6
ipkiss Exp $
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
...
...
@@ -65,12 +65,24 @@ public:
Instance
(
intf_thread_t
*
_p_intf
);
bool
OnInit
();
int
OnExit
();
OpenDialog
*
open
;
private:
intf_thread_t
*
p_intf
;
};
class
ExitTimer
:
public
wxTimer
{
public:
ExitTimer
(
intf_thread_t
*
_p_intf
);
void
Notify
();
private:
intf_thread_t
*
p_intf
;
};
//---------------------------------------------------------------------------
// Implementation of Instance class
...
...
@@ -90,12 +102,20 @@ IMPLEMENT_APP_NO_MAIN(Instance)
bool
Instance
::
OnInit
()
{
p_intf
->
p_sys
->
p_icon
=
new
wxIcon
(
vlc_xpm
);
// Create all the dialog boxes
p_intf
->
p_sys
->
OpenDlg
=
new
OpenDialog
(
p_intf
,
NULL
,
FILE_ACCESS
);
p_intf
->
p_sys
->
MessagesDlg
=
new
Messages
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
SoutDlg
=
new
SoutDialog
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
PrefsDlg
=
new
PrefsDialog
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
InfoDlg
=
new
FileInfo
(
p_intf
,
NULL
);
// Start a timer checking if we must exit the main loop
p_intf
->
p_sys
->
b_wx_die
=
0
;
p_intf
->
p_sys
->
p_kludgy_timer
=
new
ExitTimer
(
p_intf
);
p_intf
->
p_sys
->
p_kludgy_timer
->
Start
(
100
);
// OK, initialization is over, now the other thread can go on working...
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
init_lock
);
vlc_cond_signal
(
&
p_intf
->
p_sys
->
init_cond
);
vlc_mutex_unlock
(
&
p_intf
->
p_sys
->
init_lock
);
...
...
@@ -103,6 +123,37 @@ bool Instance::OnInit()
return
TRUE
;
}
int
Instance
::
OnExit
()
{
// Delete evertything
delete
p_intf
->
p_sys
->
p_kludgy_timer
;
delete
p_intf
->
p_sys
->
InfoDlg
;
delete
p_intf
->
p_sys
->
PrefsDlg
;
delete
p_intf
->
p_sys
->
SoutDlg
;
delete
p_intf
->
p_sys
->
MessagesDlg
;
delete
p_intf
->
p_sys
->
OpenDlg
;
delete
p_intf
->
p_sys
->
p_icon
;
return
0
;
}
//---------------------------------------------------------------------------
// Implementation of ExitTimer class
// This timer is only there to call wxApp::ExitMainLoop() from the wxWindows
// thread (otherwise we never exit from the wxEntry call).
//---------------------------------------------------------------------------
ExitTimer
::
ExitTimer
(
intf_thread_t
*
_p_intf
)
:
wxTimer
()
{
p_intf
=
_p_intf
;
}
void
ExitTimer
::
Notify
()
{
if
(
p_intf
->
p_sys
->
b_wx_die
)
wxTheApp
->
ExitMainLoop
();
}
//---------------------------------------------------------------------------
#if !defined(__BUILTIN__) && defined( WIN32 )
...
...
@@ -171,9 +222,9 @@ void OSRun( intf_thread_t *p_intf )
// Don't even enter the main loop
return
;
}
//
vlc_mutex_lock( &p_intf->p_sys->init_lock );
//
vlc_cond_wait( &p_intf->p_sys->init_cond, &p_intf->p_sys->init_lock );
//
vlc_mutex_unlock( &p_intf->p_sys->init_lock );
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
init_lock
);
vlc_cond_wait
(
&
p_intf
->
p_sys
->
init_cond
,
&
p_intf
->
p_sys
->
init_lock
);
vlc_mutex_unlock
(
&
p_intf
->
p_sys
->
init_lock
);
// Create refresh timer
SetTimer
(
((
OSTheme
*
)
p_intf
->
p_sys
->
p_theme
)
->
GetParentWindow
(),
42
,
200
,
...
...
@@ -287,6 +338,9 @@ void OSRun( intf_thread_t *p_intf )
// Check if vlc is closing
Proc
->
IsClosing
();
}
// Tell wxWindows it's time to exit
p_intf
->
p_sys
->
b_wx_die
=
1
;
}
//---------------------------------------------------------------------------
bool
IsVLCEvent
(
unsigned
int
msg
)
...
...
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