Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
Commits
7f8e2bc5
Commit
7f8e2bc5
authored
Jan 31, 2003
by
Jon Lech Johansen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* ./modules/gui/macosx: Defeated some deadlocks.
World domination ... is at hand.
parent
f3563dc1
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
765 additions
and
617 deletions
+765
-617
extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib
...s/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib
+4
-4
extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib
extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib
+2
-2
extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib
...s/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib
+0
-0
modules/gui/macosx/controls.m
modules/gui/macosx/controls.m
+171
-158
modules/gui/macosx/intf.h
modules/gui/macosx/intf.h
+25
-13
modules/gui/macosx/intf.m
modules/gui/macosx/intf.m
+531
-354
modules/gui/macosx/open.m
modules/gui/macosx/open.m
+4
-9
modules/gui/macosx/playlist.m
modules/gui/macosx/playlist.m
+20
-8
modules/gui/macosx/prefs.m
modules/gui/macosx/prefs.m
+3
-8
modules/gui/macosx/vout.h
modules/gui/macosx/vout.h
+1
-3
modules/gui/macosx/vout.m
modules/gui/macosx/vout.m
+4
-58
No files found.
extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib
View file @
7f8e2bc5
...
...
@@ -22,12 +22,12 @@
toggleTitle = id;
toggleVar = id;
volumeDown = id;
volumeSliderUpdate = id;
volumeSliderUpdate
d
= id;
volumeUp = id;
};
CLASS = VLCControls;
LANGUAGE = ObjC;
OUTLETS = {"o_main" = id; "o_
mi_mute" = id; "o_
open" = id; "o_volumeslider" = id; };
OUTLETS = {"o_main" = id; "o_open" = id; "o_volumeslider" = id; };
SUPERCLASS = NSObject;
},
{
...
...
@@ -45,13 +45,13 @@
CLASS = VLCMain;
LANGUAGE = ObjC;
OUTLETS = {
"o_btn_fast
forward
" = id;
"o_btn_fast
er
" = id;
"o_btn_next" = id;
"o_btn_play" = id;
"o_btn_playlist" = id;
"o_btn_prefs" = id;
"o_btn_prev" = id;
"o_btn_slow
motion
" = id;
"o_btn_slow
er
" = id;
"o_btn_stop" = id;
"o_controls" = id;
"o_dmi_play" = id;
...
...
extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib
View file @
7f8e2bc5
...
...
@@ -7,7 +7,7 @@
<key>
IBEditorPositions
</key>
<dict>
<key>
29
</key>
<string>
16 822 419 44 0 0 1280 1002
</string>
<string>
22 973 419 44 0 0 1600 1178
</string>
<key>
303
</key>
<string>
60 509 104 66 0 0 1280 1002
</string>
<key>
909
</key>
...
...
@@ -23,8 +23,8 @@
</array>
<key>
IBOpenObjects
</key>
<array>
<integer>
21
</integer>
<integer>
29
</integer>
<integer>
21
</integer>
</array>
<key>
IBSystem Version
</key>
<string>
6G30
</string>
...
...
extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib
View file @
7f8e2bc5
No preview for this file type
modules/gui/macosx/controls.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* controls.m: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: controls.m,v 1.1
8 2003/01/29 11:41:48
jlj Exp $
* $Id: controls.m,v 1.1
9 2003/01/31 02:53:52
jlj Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
...
...
@@ -30,13 +30,6 @@
#include <sys/param.h>
/* for MAXPATHLEN */
#include <string.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc/aout.h>
#include <vlc/input.h>
#include <Cocoa/Cocoa.h>
#include "intf.h"
#include "vout.h"
...
...
@@ -47,7 +40,7 @@
{
IBOutlet
id
o_open
;
IBOutlet
id
o_main
;
IBOutlet
id
o_mi_mute
;
IBOutlet
id
o_volumeslider
;
}
...
...
@@ -63,7 +56,9 @@
-
(
IBAction
)
volumeUp
:(
id
)
sender
;
-
(
IBAction
)
volumeDown
:(
id
)
sender
;
-
(
IBAction
)
mute
:(
id
)
sender
;
-
(
IBAction
)
volumeSliderUpdate
:(
id
)
sender
;
-
(
IBAction
)
volumeSliderUpdated
:(
id
)
sender
;
-
(
void
)
updateVolumeSlider
;
-
(
IBAction
)
fullscreen
:(
id
)
sender
;
-
(
IBAction
)
deinterlace
:(
id
)
sender
;
...
...
@@ -73,8 +68,6 @@
-
(
IBAction
)
toggleLanguage
:(
id
)
sender
;
-
(
IBAction
)
toggleVar
:(
id
)
sender
;
-
(
void
)
setVolumeSlider
;
@end
/*****************************************************************************
...
...
@@ -126,8 +119,6 @@
playlist_Stop
(
p_playlist
);
vlc_object_release
(
p_playlist
);
p_intf
->
p_sys
->
b_stopping
=
1
;
}
-
(
IBAction
)
faster
:(
id
)
sender
...
...
@@ -284,87 +275,95 @@
-
(
IBAction
)
volumeUp
:(
id
)
sender
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
if
(
p_intf
->
p_sys
->
b_mute
)
if
(
p_intf
->
p_sys
->
b_mute
)
{
[
self
mute
:
o_mi_mute
];
[
self
mute
:
nil
];
}
aout_VolumeUp
(
p_aout
,
1
,
NULL
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
[
self
setVolumeSlider
];
[
self
updateVolumeSlider
];
}
-
(
IBAction
)
volumeDown
:(
id
)
sender
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
if
(
p_intf
->
p_sys
->
b_mute
)
if
(
p_intf
->
p_sys
->
b_mute
)
{
[
self
mute
:
o_mi_mute
];
[
self
mute
:
nil
];
}
aout_VolumeDown
(
p_aout
,
1
,
NULL
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
[
self
setVolumeSlider
];
[
self
updateVolumeSlider
];
}
-
(
IBAction
)
mute
:(
id
)
sender
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
audio_volume_t
i_volume
;
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
audio_volume_t
i_volume
;
aout_VolumeMute
(
p_aout
,
&
i_volume
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
);
}
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
);
[
o_mi_mute
setState
:
p_intf
->
p_sys
->
b_mute
?
NSOnState
:
NSOffState
];
[
o_volumeslider
setEnabled
:
p_intf
->
p_sys
->
b_mute
?
FALSE
:
TRUE
];
[
self
setVolumeSlider
];
[
self
updateVolumeSlider
];
}
-
(
IBAction
)
volumeSliderUpdate
:(
id
)
sender
-
(
IBAction
)
volumeSliderUpdate
d
:(
id
)
sender
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
audio_volume_t
i_volume
;
if
(
p_aout
!=
NULL
)
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
i_volume
=
(
int
)
[
sender
floatValue
];
aout_VolumeSet
(
p_aout
,
i_volume
*
AOUT_VOLUME_STEP
);
audio_volume_t
i_volume
;
i_volume
=
(
audio_volume_t
)[
sender
intValue
];
aout_VolumeSet
(
p_aout
,
i_volume
*
AOUT_VOLUME_STEP
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
}
-
(
void
)
set
VolumeSlider
-
(
void
)
update
VolumeSlider
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
audio_volume_t
i_volume
;
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
audio_volume_t
i_volume
;
aout_VolumeGet
(
p_aout
,
&
i_volume
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
[
o_volumeslider
setFloatValue
:
(
float
)
(
i_volume
/
AOUT_VOLUME_STEP
)];
}
else
{
[
o_volumeslider
setFloatValue
:
config_GetInt
(
p_intf
,
"volume"
)];
[
o_volumeslider
setFloatValue
:
(
float
)(
i_volume
/
AOUT_VOLUME_STEP
)];
}
}
...
...
@@ -385,116 +384,75 @@
-
(
IBAction
)
deinterlace
:(
id
)
sender
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
NSString
*
mode
=
[
o_mi
title
];
char
*
psz_filter
;
unsigned
int
i
;
psz_filter
=
config_GetPsz
(
p_intf
,
"filter"
);
}
if
(
[
mode
isEqualToString
:
@"none"
]
)
{
config_PutPsz
(
p_intf
,
"filter"
,
""
);
}
else
-
(
IBAction
)
toggleProgram
:(
id
)
sender
{
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
if
(
!
psz_filter
||
!*
psz_filter
)
{
config_PutPsz
(
p_intf
,
"filter"
,
"deinterlace"
);
}
else
{
if
(
strstr
(
psz_filter
,
"deinterlace"
)
==
NULL
)
{
psz_filter
=
realloc
(
psz_filter
,
strlen
(
psz_filter
)
+
20
);
strcat
(
psz_filter
,
",deinterlace"
);
}
config_PutPsz
(
p_intf
,
"filter"
,
psz_filter
);
}
return
;
}
if
(
psz_filter
)
free
(
psz_filter
);
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
/* now restart all video stream */
if
(
p_intf
->
p_sys
->
p_input
)
if
(
p_playlist
->
p_input
==
NULL
)
{
vout_thread_t
*
p_vout
;
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
/* Warn the vout we are about to change the filter chain */
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
)
{
p_vout
->
b_filter_change
=
VLC_TRUE
;
vlc_object_release
(
p_vout
);
}
#define ES p_intf->p_sys->p_input->stream.pp_es[i]
for
(
i
=
0
;
i
<
p_intf
->
p_sys
->
p_input
->
stream
.
i_es_number
;
i
++
)
{
if
(
(
ES
->
i_cat
==
VIDEO_ES
)
&&
ES
->
p_decoder_fifo
!=
NULL
)
{
input_UnselectES
(
p_intf
->
p_sys
->
p_input
,
ES
);
input_SelectES
(
p_intf
->
p_sys
->
p_input
,
ES
);
}
#undef ES
}
vlc_mutex_unlock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
return
;
}
if
(
!
[
mode
isEqualToString
:
@"none"
]
)
if
(
[
o_mi
state
]
==
NSOffState
)
{
vout_thread_t
*
p_vout
;
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
)
{
vlc_value_t
val
;
val
.
psz_string
=
(
char
*
)[
mode
cString
];
if
(
var_Set
(
p_vout
,
"deinterlace-mode"
,
val
)
!=
VLC_SUCCESS
)
config_PutPsz
(
p_intf
,
"deinterlace-mode"
,
(
char
*
)[
mode
cString
]
);
u16
i_program_id
=
[
o_mi
tag
];
vlc_object_release
(
p_vout
);
}
else
{
config_PutPsz
(
p_intf
,
"deinterlace-mode"
,
(
char
*
)[
mode
cString
]
);
}
input_ChangeProgram
(
p_playlist
->
p_input
,
i_program_id
);
input_SetStatus
(
p_playlist
->
p_input
,
INPUT_STATUS_PLAY
);
}
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
-
(
IBAction
)
toggle
Program
:(
id
)
sender
-
(
IBAction
)
toggle
Title
:(
id
)
sender
{
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
if
(
[
o_mi
state
]
==
NSOffState
)
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
u16
i_program_id
=
[
o_mi
tag
];
input_ChangeProgram
(
p_intf
->
p_sys
->
p_input
,
i_program_id
);
input_SetStatus
(
p_intf
->
p_sys
->
p_input
,
INPUT_STATUS_PLAY
);
return
;
}
}
-
(
IBAction
)
toggleTitle
:(
id
)
sender
{
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
if
(
p_playlist
->
p_input
==
NULL
)
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
return
;
}
if
(
[
o_mi
state
]
==
NSOffState
)
{
int
i_title
=
[
o_mi
tag
];
#define p_input p_
intf->p_sys
->p_input
#define p_input p_
playlist
->p_input
input_ChangeArea
(
p_input
,
p_input
->
stream
.
pp_areas
[
i_title
]
);
input_SetStatus
(
p_input
,
INPUT_STATUS_PLAY
);
#undef p_input
}
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
-
(
IBAction
)
toggleChapter
:(
id
)
sender
...
...
@@ -502,16 +460,35 @@
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
return
;
}
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
if
(
p_playlist
->
p_input
==
NULL
)
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
return
;
}
if
(
[
o_mi
state
]
==
NSOffState
)
{
int
i_chapter
=
[
o_mi
tag
];
#define p_input p_
intf->p_sys
->p_input
#define p_input p_
playlist
->p_input
p_input
->
stream
.
p_selected_area
->
i_part
=
i_chapter
;
input_ChangeArea
(
p_input
,
p_input
->
stream
.
p_selected_area
);
input_SetStatus
(
p_input
,
INPUT_STATUS_PLAY
);
#undef p_input
}
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
-
(
IBAction
)
toggleLanguage
:(
id
)
sender
...
...
@@ -519,6 +496,22 @@
NSMenuItem
*
o_mi
=
(
NSMenuItem
*
)
sender
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
return
;
}
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
if
(
p_playlist
->
p_input
==
NULL
)
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
return
;
}
#if 0
/* We do not use this code, because you need to start stop .avi for
* it to work, so not very useful now --hartman */
...
...
@@ -539,7 +532,7 @@
}
#endif
#define p_input p_
intf->p_sys
->p_input
#define p_input p_
playlist
->p_input
if
(
!
p_intf
->
p_sys
->
b_audio_update
)
{
...
...
@@ -581,6 +574,9 @@
}
#undef p_input
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
-
(
IBAction
)
toggleVar
:(
id
)
sender
...
...
@@ -622,14 +618,16 @@
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
}
#define p_input p_playlist->p_input
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Faster"
)]
||
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Slower"
)]
)
{
if
(
p_playlist
!=
NULL
&&
p_
playlist
->
p_
input
!=
NULL
)
if
(
p_playlist
!=
NULL
&&
p_input
!=
NULL
)
{
vlc_mutex_lock
(
&
p_
playlist
->
p_
input
->
stream
.
stream_lock
);
bEnabled
=
p_
playlist
->
p_
input
->
stream
.
b_pace_control
;
vlc_mutex_unlock
(
&
p_
playlist
->
p_
input
->
stream
.
stream_lock
);
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
bEnabled
=
p_input
->
stream
.
b_pace_control
;
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
}
else
{
...
...
@@ -638,7 +636,7 @@
}
else
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Stop"
)]
)
{
if
(
p_playlist
==
NULL
||
p_
playlist
->
p_
input
==
NULL
)
if
(
p_playlist
==
NULL
||
p_input
==
NULL
)
{
bEnabled
=
FALSE
;
}
...
...
@@ -653,6 +651,13 @@
else
{
bEnabled
=
p_playlist
->
i_size
>
1
;
if
(
p_input
!=
NULL
)
{
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
bEnabled
|=
p_input
->
stream
.
p_selected_area
->
i_part_nb
>
1
;
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
}
}
}
else
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Loop"
)]
)
...
...
@@ -662,6 +667,39 @@
[
o_mi
setState
:
i_state
];
}
else
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Volume Up"
)]
||
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Volume Down"
)]
)
{
aout_instance_t
*
p_aout
;
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
else
{
bEnabled
=
FALSE
;
}
}
else
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Mute"
)]
)
{
aout_instance_t
*
p_aout
;
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
else
{
bEnabled
=
FALSE
;
}
[
o_mi
setState
:
p_intf
->
p_sys
->
b_mute
?
NSOnState
:
NSOffState
];
}
else
if
(
[[
o_mi
title
]
isEqualToString
:
_NS
(
"Fullscreen"
)]
)
{
id
o_window
;
...
...
@@ -681,32 +719,7 @@
else
if
(
o_menu
!=
nil
&&
[[
o_menu
title
]
isEqualToString
:
_NS
(
"Deinterlace"
)]
)
{
char
*
psz_filter
=
config_GetPsz
(
p_intf
,
"filter"
);
if
(
psz_filter
!=
NULL
)
{
free
(
psz_filter
);
psz_filter
=
config_GetPsz
(
p_intf
,
"deinterlace-mode"
);
}
if
(
psz_filter
!=
NULL
)
{
if
(
strcmp
(
psz_filter
,
[[
o_mi
title
]
lossyCString
]
)
==
0
)
{
[
o_mi
setState
:
NSOnState
];
}
else
{
[
o_mi
setState
:
NSOffState
];
}
free
(
psz_filter
);
}
else
{
[
o_mi
setState
:
NSOffState
];
}
}
if
(
p_playlist
!=
NULL
)
...
...
modules/gui/macosx/intf.h
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* intf.h: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: intf.h,v 1.
19 2003/01/29 11:34:11
jlj Exp $
* $Id: intf.h,v 1.
20 2003/01/31 02:53:52
jlj Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
...
...
@@ -26,6 +26,7 @@
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc/vout.h>
#include <vlc/aout.h>
#include <Cocoa/Cocoa.h>
...
...
@@ -48,6 +49,8 @@
#define _NS(s) [NSApp localizedString: _(s)]
int
ExecuteOnMainThread
(
id
target
,
SEL
sel
,
void
*
p_arg
);
/*****************************************************************************
* intf_sys_t: description and status of the interface
*****************************************************************************/
...
...
@@ -58,9 +61,12 @@ struct intf_sys_t
/* special actions */
vlc_bool_t
b_playing
;
vlc_bool_t
b_stopping
;
vlc_bool_t
b_mute
;
/* interface update */
vlc_bool_t
b_intf_update
;
vlc_bool_t
b_play_status
;
/* menus handlers */
vlc_bool_t
b_chapter_update
;
vlc_bool_t
b_program_update
;
...
...
@@ -70,9 +76,6 @@ struct intf_sys_t
vlc_bool_t
b_aout_update
;
vlc_bool_t
b_vout_update
;
/* The input thread */
input_thread_t
*
p_input
;
/* The messages window */
msg_subscription_t
*
p_sub
;
...
...
@@ -96,13 +99,16 @@ struct intf_sys_t
IBOutlet
id
o_btn_playlist
;
/* btn playlist */
IBOutlet
id
o_btn_prev
;
/* btn previous */
IBOutlet
id
o_btn_slow
motion
;
/* btn slowmotion
*/
IBOutlet
id
o_btn_slow
er
;
/* btn slower
*/
IBOutlet
id
o_btn_play
;
/* btn play */
IBOutlet
id
o_btn_stop
;
/* btn stop */
IBOutlet
id
o_btn_fast
forward
;
/* btn fastforward
*/
IBOutlet
id
o_btn_fast
er
;
/* btn faster
*/
IBOutlet
id
o_btn_next
;
/* btn next */
IBOutlet
id
o_btn_prefs
;
/* btn prefs */
NSImage
*
o_img_play
;
/* btn play img */
NSImage
*
o_img_pause
;
/* btn pause img */
IBOutlet
id
o_controls
;
/* VLCControls */
IBOutlet
id
o_playlist
;
/* VLCPlaylist */
...
...
@@ -191,11 +197,18 @@ struct intf_sys_t
-
(
void
)
terminate
;
-
(
void
)
manage
;
-
(
void
)
manageMode
;
-
(
void
)
setControlItems
;
-
(
void
)
setupMenus
;
-
(
void
)
setupLangMenu
:(
NSMenuItem
*
)
o_mi
-
(
void
)
manage
:(
playlist_t
*
)
p_playlist
;
-
(
void
)
manageMode
:(
playlist_t
*
)
p_playlist
;
-
(
void
)
manageIntf
:(
NSTimer
*
)
o_timer
;
-
(
void
)
updateMessageArray
;
-
(
void
)
playStatusUpdated
:(
BOOL
)
b_pause
;
-
(
void
)
setSubmenusEnabled
:(
BOOL
)
b_enabled
;
-
(
void
)
manageVolumeSlider
;
-
(
void
)
setupMenus
:(
input_thread_t
*
)
p_input
;
-
(
void
)
setupLangMenu
:(
input_thread_t
*
)
p_input
mi
:(
NSMenuItem
*
)
o_mi
es
:(
es_descriptor_t
*
)
p_es
category
:(
int
)
i_cat
selector
:(
SEL
)
pf_callback
;
...
...
@@ -210,7 +223,6 @@ struct intf_sys_t
-
(
IBAction
)
viewPreferences
:(
id
)
sender
;
-
(
IBAction
)
timesliderUpdate
:(
id
)
sender
;
-
(
void
)
displayTime
;
-
(
IBAction
)
closeError
:(
id
)
sender
;
...
...
modules/gui/macosx/intf.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* intf.m: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2002-2003 VideoLAN
* $Id: intf.m,v 1.4
1 2003/01/30 15:46:29 hartman
Exp $
* $Id: intf.m,v 1.4
2 2003/01/31 02:53:52 jlj
Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
...
...
@@ -30,8 +30,6 @@
#include <sys/param.h>
/* for MAXPATHLEN */
#include <string.h>
#include <QuickTime/QuickTime.h>
#include "intf.h"
#include "vout.h"
#include "prefs.h"
...
...
@@ -40,7 +38,7 @@
/*****************************************************************************
* Local prototypes.
*****************************************************************************/
static
void
Run
(
intf_thread_t
*
p_intf
);
static
void
Run
(
intf_thread_t
*
p_intf
);
/*****************************************************************************
* OpenIntf: initialize interface
...
...
@@ -143,12 +141,17 @@ static void Run( intf_thread_t *p_intf )
-
(
NSString
*
)
localizedString
:(
char
*
)
psz
{
if
(
psz
==
NULL
)
return
NULL
;
UInt32
uiLength
=
(
UInt32
)
strlen
(
psz
);
NSData
*
o_data
=
[
NSData
dataWithBytes
:
psz
length
:
uiLength
];
NSString
*
o_str
=
[[
NSString
alloc
]
initWithData
:
o_data
encoding:
i_encoding
];
return
(
[
o_str
autorelease
]
);
NSString
*
o_str
=
nil
;
if
(
psz
!=
NULL
)
{
UInt32
uiLength
=
(
UInt32
)
strlen
(
psz
);
NSData
*
o_data
=
[
NSData
dataWithBytes
:
psz
length
:
uiLength
];
o_str
=
[[[
NSString
alloc
]
initWithData
:
o_data
encoding:
i_encoding
]
autorelease
];
}
return
(
o_str
);
}
-
(
void
)
setIntf
:(
intf_thread_t
*
)
_p_intf
...
...
@@ -163,28 +166,80 @@ static void Run( intf_thread_t *p_intf )
-
(
void
)
terminate
:(
id
)
sender
{
[
self
getIntf
]
->
p_vlc
->
b_die
=
VLC_TRUE
;
p_intf
->
p_vlc
->
b_die
=
VLC_TRUE
;
}
@end
/*****************************************************************************
* VLCMain implementation
*****************************************************************************/
@implementation
VLCMain
-
(
id
)
init
int
ExecuteOnMainThread
(
id
target
,
SEL
sel
,
void
*
p_arg
)
{
self
=
[
super
init
]
;
int
i_ret
=
0
;
if
(
self
!=
nil
)
NSAutoreleasePool
*
o_pool
=
[[
NSAutoreleasePool
alloc
]
init
];
if
(
[
target
respondsToSelector
:
@selector
(
performSelectorOnMainThread
:
withObject:waitUntilDone:
)]
)
{
o_prefs
=
nil
;
[
target
performSelectorOnMainThread
:
sel
withObject:
[
NSValue
valueWithPointer
:
p_arg
]
waitUntilDone:
YES
];
}
else
if
(
NSApp
!=
nil
&&
[
NSApp
respondsToSelector
:
@selector
(
getIntf
)]
)
{
NSValue
*
o_v1
;
NSValue
*
o_v2
;
NSArray
*
o_array
;
NSPort
*
o_recv_port
;
NSInvocation
*
o_inv
;
NSPortMessage
*
o_msg
;
intf_thread_t
*
p_intf
;
NSConditionLock
*
o_lock
;
NSMethodSignature
*
o_sig
;
id
*
val
[]
=
{
&
o_lock
,
&
o_v2
};
p_intf
=
(
intf_thread_t
*
)[
NSApp
getIntf
];
o_recv_port
=
[[
NSPort
port
]
retain
];
o_v1
=
[
NSValue
valueWithPointer
:
val
];
o_v2
=
[
NSValue
valueWithPointer
:
p_arg
];
o_sig
=
[
target
methodSignatureForSelector
:
sel
];
o_inv
=
[
NSInvocation
invocationWithMethodSignature
:
o_sig
];
[
o_inv
setArgument
:
&
o_v1
atIndex
:
2
];
[
o_inv
setTarget
:
target
];
[
o_inv
setSelector
:
sel
];
o_array
=
[
NSArray
arrayWithObject
:
[
NSData
dataWithBytes
:
&
o_inv
length
:
sizeof
(
o_inv
)]];
o_msg
=
[[
NSPortMessage
alloc
]
initWithSendPort:
p_intf
->
p_sys
->
o_sendport
receivePort:
o_recv_port
components
:
o_array
];
o_lock
=
[[
NSConditionLock
alloc
]
initWithCondition
:
0
];
[
o_msg
sendBeforeDate
:
[
NSDate
distantPast
]];
[
o_lock
lockWhenCondition
:
1
];
[
o_lock
unlock
];
[
o_lock
release
];
[
o_msg
release
];
[
o_recv_port
release
];
}
else
{
i_ret
=
1
;
}
[
o_pool
release
];
return
(
self
);
return
(
i_ret
);
}
/*****************************************************************************
* VLCMain implementation
*****************************************************************************/
@implementation
VLCMain
-
(
void
)
awakeFromNib
{
[
o_window
setTitle
:
_NS
(
"VLC - Controller"
)];
...
...
@@ -193,16 +248,15 @@ static void Run( intf_thread_t *p_intf )
/* button controls */
[
o_btn_playlist
setToolTip
:
_NS
(
"Playlist"
)];
[
o_btn_prev
setToolTip
:
_NS
(
"Previous"
)];
[
o_btn_slow
motion
setToolTip
:
_NS
(
"Slowmotion
"
)];
[
o_btn_slow
er
setToolTip
:
_NS
(
"Slower
"
)];
[
o_btn_play
setToolTip
:
_NS
(
"Play"
)];
[
o_btn_stop
setToolTip
:
_NS
(
"Stop"
)];
[
o_btn_fastforward
setToolTip
:
_NS
(
"Fast Forward"
)];
[
o_btn_fastforward
setPeriodicDelay
:
0
.
0
interval
:
1
];
[
o_btn_faster
setToolTip
:
_NS
(
"Faster"
)];
[
o_btn_next
setToolTip
:
_NS
(
"Next"
)];
[
o_btn_prefs
setToolTip
:
_NS
(
"Preferences"
)];
[
o_volumeslider
setToolTip
:
_NS
(
"Volume"
)];
[
o_timeslider
setToolTip
:
_NS
(
"Position"
)];
/* messages panel */
[
o_msgs_panel
setDelegate
:
self
];
[
o_msgs_panel
setTitle
:
_NS
(
"Messages"
)];
...
...
@@ -279,30 +333,36 @@ static void Run( intf_thread_t *p_intf )
/* error panel */
[
o_error
setTitle
:
_NS
(
"Error"
)];
[
o_err_lbl
setStringValue
:
_NS
(
"An error has occurred which probably prevented the execution of your request
:"
)];
[
o_err_bug_lbl
setStringValue
:
_NS
(
"If you believe that it is a bug, please follow the instructions at
:"
)];
[
o_err_lbl
setStringValue
:
_NS
(
"An error has occurred which probably prevented the execution of your request:"
)];
[
o_err_bug_lbl
setStringValue
:
_NS
(
"If you believe that it is a bug, please follow the instructions at
:"
)];
[
o_err_btn_msgs
setTitle
:
_NS
(
"Open Messages Window"
)];
[
o_err_btn_dismiss
setTitle
:
_NS
(
"Dismiss"
)];
[
self
manageMode
];
[
self
setSubmenusEnabled
:
FALSE
];
[
self
manageVolumeSlider
];
}
-
(
void
)
applicationWillFinishLaunching
:(
NSNotification
*
)
o_notification
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
f_slider_old
=
f_slider
=
0
.
0
;
o_msg_lock
=
[[
NSLock
alloc
]
init
];
o_msg_arr
=
[[
NSMutableArray
arrayWithCapacity
:
200
]
retain
];
[
NSThread
detachNewThreadSelector
:
@selector
(
manage
)
toTarget:
self
withObject
:
nil
];
o_img_play
=
[[
NSImage
imageNamed
:
@"play"
]
retain
];
o_img_pause
=
[[
NSImage
imageNamed
:
@"pause"
]
retain
];
[
p_intf
->
p_sys
->
o_sendport
setDelegate
:
self
];
[[
NSRunLoop
currentRunLoop
]
addPort:
p_intf
->
p_sys
->
o_sendport
forMode:
NSDefaultRunLoopMode
];
[
NSTimer
scheduledTimerWithTimeInterval
:
0
.
1
target:
self
selector
:
@selector
(
manageIntf
:
)
userInfo:
nil
repeats
:
TRUE
];
[
NSThread
detachNewThreadSelector
:
@selector
(
manage
)
toTarget:
self
withObject
:
nil
];
}
-
(
BOOL
)
application
:(
NSApplication
*
)
o_app
openFile
:(
NSString
*
)
o_filename
...
...
@@ -323,215 +383,455 @@ static void Run( intf_thread_t *p_intf )
while
(
!
p_intf
->
b_die
)
{
int
i_start
,
i_stop
;
playlist_t
*
p_playlist
;
vlc_mutex_lock
(
&
p_intf
->
change_lock
);
/* update the input */
if
(
p_intf
->
p_sys
->
p_input
==
NULL
)
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
!=
NULL
)
{
p_intf
->
p_sys
->
p_input
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_INPUT
,
FIND_ANYWHERE
);
[
self
setControlItems
];
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
[
self
manage
:
p_playlist
];
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
else
if
(
p_intf
->
p_sys
->
p_input
->
b_dead
)
{
vlc_object_release
(
p_intf
->
p_sys
->
p_input
);
p_intf
->
p_sys
->
p_input
=
NULL
;
if
(
p_intf
->
p_sys
->
b_stopping
)
{
vout_thread_t
*
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
vlc_mutex_unlock
(
&
p_intf
->
change_lock
);
if
(
p_vout
!=
NULL
)
{
vlc_object_detach
(
p_vout
);
vlc_object_release
(
p_vout
);
vout_Destroy
(
p_vout
);
}
p_intf
->
p_sys
->
b_stopping
=
0
;
[
self
setControlItems
];
}
o_sleep_date
=
[
NSDate
dateWithTimeIntervalSinceNow
:
0
.
1
];
[
NSThread
sleepUntilDate
:
o_sleep_date
];
}
[
self
displayTime
];
[
self
manageMode
];
}
[
self
terminate
];
if
(
p_intf
->
p_sys
->
p_input
!=
NULL
&&
!
p_intf
->
p_sys
->
p_input
->
b_die
)
{
vlc_bool_t
b_need_menus
=
0
;
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
vout_thread_t
*
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
[
o_pool
release
];
}
-
(
void
)
manage
:(
playlist_t
*
)
p_playlist
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
/* Disable screen saver. */
UpdateSystemActivity
(
UsrActivity
);
#define p_input p_playlist->p_input
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
if
(
p_input
)
{
vout_thread_t
*
p_vout
=
NULL
;
aout_instance_t
*
p_aout
=
NULL
;
vlc_bool_t
b_need_menus
=
VLC_FALSE
;
[
self
displayTime
]
;
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
)
;
if
(
!
p_input
->
b_die
)
{
/* New input or stream map change */
if
(
p_input
->
stream
.
b_changed
)
{
[
self
manageMode
];
b_need_menus
=
1
;
p_intf
->
p_sys
->
b_playing
=
1
;
[
self
manageMode
:
p_playlist
];
b_need_menus
=
VLC_TRUE
;
}
if
(
p_intf
->
p_sys
->
i_part
!=
p_input
->
stream
.
p_selected_area
->
i_part
)
{
p_intf
->
p_sys
->
b_chapter_update
=
1
;
b_need_menus
=
1
;
b_need_menus
=
VLC_TRUE
;
}
if
(
p_aout
!=
NULL
)
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_aout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
audio_volume_t
i_volume
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_aout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_aout_update
=
1
;
b_need_menus
=
1
;
b_need_menus
=
VLC_TRUE
;
}
aout_VolumeGet
(
p_aout
,
&
i_volume
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
);
}
if
(
p_vout
!=
NULL
)
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
vlc_value_t
val
;
if
(
var_Get
(
(
vlc_object_t
*
)
p_vout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
if
(
var_Get
(
(
vlc_object_t
*
)
p_vout
,
"intf-change"
,
&
val
)
>=
0
&&
val
.
b_bool
)
{
p_intf
->
p_sys
->
b_vout_update
=
1
;
b_need_menus
=
1
;
b_need_menus
=
VLC_TRUE
;
}
vlc_object_release
(
(
vlc_object_t
*
)
p_vout
);
}
if
(
b_need_menus
)
{
[
self
setupMenus
:
p_input
];
}
}
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
}
else
if
(
p_intf
->
p_sys
->
b_playing
&&
!
p_intf
->
b_die
)
{
p_intf
->
p_sys
->
b_playing
=
0
;
[
self
manageMode
:
p_playlist
];
}
#undef p_input
}
-
(
void
)
manageMode
:(
playlist_t
*
)
p_playlist
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
if
(
p_playlist
->
p_input
!=
NULL
)
{
/* get ready for menu regeneration */
p_intf
->
p_sys
->
b_program_update
=
1
;
p_intf
->
p_sys
->
b_title_update
=
1
;
p_intf
->
p_sys
->
b_chapter_update
=
1
;
p_intf
->
p_sys
->
b_audio_update
=
1
;
p_intf
->
p_sys
->
b_spu_update
=
1
;
p_intf
->
p_sys
->
i_part
=
0
;
if
(
b_need_menus
)
[
self
setupMenus
];
[
self
setControlItems
];
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
p_playlist
->
p_input
->
stream
.
b_changed
=
0
;
msg_Dbg
(
p_intf
,
"stream has changed, refreshing interface"
);
}
else
{
vout_thread_t
*
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
vlc_object_detach
(
p_vout
);
vlc_object_release
(
p_vout
);
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vout_Destroy
(
p_vout
);
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
}
else
if
(
p_intf
->
p_sys
->
b_playing
&&
!
p_intf
->
b_die
)
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
[
self
displayTime
];
[
self
manageMode
];
p_intf
->
p_sys
->
b_playing
=
0
;
p_intf
->
p_sys
->
b_stopping
=
1
;
vlc_object_detach
(
(
vlc_object_t
*
)
p_aout
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
aout_Delete
(
p_aout
);
}
}
/* update the log window */
vlc_mutex_lock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
i_stop
=
*
p_intf
->
p_sys
->
p_sub
->
pi_stop
;
vlc_mutex_unlock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
p_intf
->
p_sys
->
b_intf_update
=
VLC_TRUE
;
}
-
(
void
)
manageIntf
:(
NSTimer
*
)
o_timer
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
if
(
p_intf
->
p_vlc
->
b_die
==
VLC_TRUE
)
{
[
o_timer
invalidate
];
return
;
}
if
(
p_intf
->
p_sys
->
p_sub
->
i_start
!=
i_stop
)
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
return
;
}
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
#define p_input p_playlist->p_input
if
(
p_input
!=
NULL
)
{
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
}
if
(
p_intf
->
p_sys
->
b_intf_update
)
{
vlc_bool_t
b_input
=
VLC_FALSE
;
vlc_bool_t
b_plmul
=
VLC_FALSE
;
vlc_bool_t
b_control
=
VLC_FALSE
;
vlc_bool_t
b_seekable
=
VLC_FALSE
;
vlc_bool_t
b_chapters
=
VLC_FALSE
;
b_plmul
=
p_playlist
->
i_size
>
1
;
if
(
(
b_input
=
(
p_input
!=
NULL
)
)
)
{
NSColor
*
o_white
=
[
NSColor
whiteColor
];
NSColor
*
o_red
=
[
NSColor
redColor
];
NSColor
*
o_yellow
=
[
NSColor
yellowColor
];
NSColor
*
o_gray
=
[
NSColor
grayColor
];
NSColor
*
pp_color
[
4
]
=
{
o_white
,
o_red
,
o_yellow
,
o_gray
};
static
const
char
*
ppsz_type
[
4
]
=
{
": "
,
" error: "
,
" warning: "
,
" debug: "
};
for
(
i_start
=
p_intf
->
p_sys
->
p_sub
->
i_start
;
i_start
!=
i_stop
;
i_start
=
(
i_start
+
1
)
%
VLC_MSG_QSIZE
)
{
NSString
*
o_msg
;
NSDictionary
*
o_attr
;
NSAttributedString
*
o_msg_color
;
/* seekable streams */
b_seekable
=
p_input
->
stream
.
b_seekable
;
int
i_type
=
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
i_type
;
/* control buttons for free pace streams */
b_control
=
p_input
->
stream
.
b_pace_control
;
[
o_msg_lock
lock
];
/* chapters */
b_chapters
=
p_input
->
stream
.
p_selected_area
->
i_part_nb
>
1
;
if
(
[
o_msg_arr
count
]
+
2
>
200
)
{
unsigned
rid
[]
=
{
0
,
1
};
[
o_msg_arr
removeObjectsFromIndices
:
(
unsigned
*
)
&
rid
numIndices:
sizeof
(
rid
)
/
sizeof
(
rid
[
0
])];
}
/* play status */
p_intf
->
p_sys
->
b_play_status
=
p_input
->
stream
.
control
.
i_status
!=
PAUSE_S
;
}
else
{
/* play status */
p_intf
->
p_sys
->
b_play_status
=
VLC_FALSE
;
o_attr
=
[
NSDictionary
dictionaryWithObject
:
o_gray
forKey:
NSForegroundColorAttributeName
];
o_msg
=
[
NSString
stringWithFormat
:
@"%s%s"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_module
,
ppsz_type
[
i_type
]];
o_msg_color
=
[[
NSAttributedString
alloc
]
initWithString:
o_msg
attributes
:
o_attr
];
[
o_msg_arr
addObject
:
[
o_msg_color
autorelease
]];
o_attr
=
[
NSDictionary
dictionaryWithObject
:
pp_color
[
i_type
]
forKey:
NSForegroundColorAttributeName
];
o_msg
=
[
NSString
stringWithFormat
:
@"%s
\n
"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_msg
];
o_msg_color
=
[[
NSAttributedString
alloc
]
initWithString:
o_msg
attributes
:
o_attr
];
[
o_msg_arr
addObject
:
[
o_msg_color
autorelease
]];
[
self
setSubmenusEnabled
:
FALSE
];
}
[
self
playStatusUpdated
:
p_intf
->
p_sys
->
b_play_status
];
[
o_btn_stop
setEnabled
:
b_input
];
[
o_btn_faster
setEnabled
:
b_control
];
[
o_btn_slower
setEnabled
:
b_control
];
[
o_btn_prev
setEnabled
:
(
b_plmul
||
b_chapters
)];
[
o_btn_next
setEnabled
:
(
b_plmul
||
b_chapters
)];
[
o_timeslider
setFloatValue
:
0
.
0
];
[
o_timeslider
setEnabled
:
b_seekable
];
[
o_timefield
setStringValue
:
@"0:00:00"
];
[
self
manageVolumeSlider
];
p_intf
->
p_sys
->
b_intf_update
=
VLC_FALSE
;
}
#define p_area p_input->stream.p_selected_area
if
(
p_intf
->
p_sys
->
b_playing
&&
p_input
!=
NULL
)
{
vlc_bool_t
b_field_update
=
VLC_TRUE
;
if
(
!
p_input
->
b_die
&&
(
p_intf
->
p_sys
->
b_play_status
!=
(
p_input
->
stream
.
control
.
i_status
!=
PAUSE_S
)
)
)
{
p_intf
->
p_sys
->
b_play_status
=
!
p_intf
->
p_sys
->
b_play_status
;
[
o_msg_lock
unlock
];
[
self
playStatusUpdated
:
p_intf
->
p_sys
->
b_play_status
];
}
if
(
p_input
->
stream
.
b_seekable
)
{
if
(
f_slider
==
f_slider_old
)
{
float
f_updated
=
(
100
.
*
p_area
->
i_tell
)
/
p_area
->
i_size
;
if
(
i_type
==
1
)
if
(
f_slider
!=
f_updated
)
{
/* Error panel */
NSString
*
o_my_msg
=
[
NSString
stringWithFormat
:
@"%s: %s
\n
"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_module
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_msg
];
[
o_err_msg
setEditable
:
YES
];
[
o_err_msg
setSelectedRange
:
NSMakeRange
(
[[
o_err_msg
string
]
length
],
0
)];
[
o_err_msg
insertText
:
o_my_msg
];
[
o_error
makeKeyAndOrderFront
:
self
];
[
o_err_msg
setEditable
:
NO
];
[
o_timeslider
setFloatValue
:
f_updated
];
}
}
else
{
off_t
i_seek
=
(
f_slider
*
p_area
->
i_size
)
/
100
;
vlc_mutex_lock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
p_intf
->
p_sys
->
p_sub
->
i_start
=
i_start
;
vlc_mutex_unlock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
/* release the lock to be able to seek */
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
input_Seek
(
p_input
,
i_seek
,
INPUT_SEEK_SET
);
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
/* update the old value */
f_slider_old
=
f_slider
;
b_field_update
=
VLC_FALSE
;
}
}
vlc_mutex_unlock
(
&
p_intf
->
change_lock
);
if
(
b_field_update
)
{
NSString
*
o_time
;
char
psz_time
[
OFFSETTOTIME_MAX_SIZE
];
o_sleep_date
=
[
NSDate
dateWithTimeIntervalSinceNow
:
0
.
1
];
[
NSThread
sleepUntilDate
:
o_sleep_date
];
input_OffsetToTime
(
p_input
,
psz_time
,
p_area
->
i_tell
);
o_time
=
[
NSString
stringWithCString
:
psz_time
];
[
o_timefield
setStringValue
:
o_time
];
}
/* disable screen saver */
UpdateSystemActivity
(
UsrActivity
);
}
[
self
terminate
];
#undef p_area
[
o_pool
release
];
if
(
p_input
!=
NULL
)
{
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
}
#undef p_input
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
[
self
updateMessageArray
];
}
-
(
void
)
terminate
-
(
void
)
updateMessageArray
{
NSEvent
*
pEvent
;
vout_thread_t
*
p_vout
;
playlist_t
*
p_playlist
;
int
i_start
,
i_stop
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
vlc_mutex_lock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
i_stop
=
*
p_intf
->
p_sys
->
p_sub
->
pi_stop
;
vlc_mutex_unlock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
if
(
p_intf
->
p_sys
->
p_sub
->
i_start
!=
i_stop
)
{
NSColor
*
o_white
=
[
NSColor
whiteColor
];
NSColor
*
o_red
=
[
NSColor
redColor
];
NSColor
*
o_yellow
=
[
NSColor
yellowColor
];
NSColor
*
o_gray
=
[
NSColor
grayColor
];
NSColor
*
pp_color
[
4
]
=
{
o_white
,
o_red
,
o_yellow
,
o_gray
};
static
const
char
*
ppsz_type
[
4
]
=
{
": "
,
" error: "
,
" warning: "
,
" debug: "
};
for
(
i_start
=
p_intf
->
p_sys
->
p_sub
->
i_start
;
i_start
!=
i_stop
;
i_start
=
(
i_start
+
1
)
%
VLC_MSG_QSIZE
)
{
NSString
*
o_msg
;
NSDictionary
*
o_attr
;
NSAttributedString
*
o_msg_color
;
int
i_type
=
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
i_type
;
[
o_msg_lock
lock
];
if
(
[
o_msg_arr
count
]
+
2
>
200
)
{
unsigned
rid
[]
=
{
0
,
1
};
[
o_msg_arr
removeObjectsFromIndices
:
(
unsigned
*
)
&
rid
numIndices:
sizeof
(
rid
)
/
sizeof
(
rid
[
0
])];
}
o_attr
=
[
NSDictionary
dictionaryWithObject
:
o_gray
forKey:
NSForegroundColorAttributeName
];
o_msg
=
[
NSString
stringWithFormat
:
@"%s%s"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_module
,
ppsz_type
[
i_type
]];
o_msg_color
=
[[
NSAttributedString
alloc
]
initWithString:
o_msg
attributes
:
o_attr
];
[
o_msg_arr
addObject
:
[
o_msg_color
autorelease
]];
o_attr
=
[
NSDictionary
dictionaryWithObject
:
pp_color
[
i_type
]
forKey:
NSForegroundColorAttributeName
];
o_msg
=
[
NSString
stringWithFormat
:
@"%s
\n
"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_msg
];
o_msg_color
=
[[
NSAttributedString
alloc
]
initWithString:
o_msg
attributes
:
o_attr
];
[
o_msg_arr
addObject
:
[
o_msg_color
autorelease
]];
[
o_msg_lock
unlock
];
if
(
i_type
==
1
)
{
NSString
*
o_my_msg
=
[
NSString
stringWithFormat
:
@"%s: %s
\n
"
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_module
,
p_intf
->
p_sys
->
p_sub
->
p_msg
[
i_start
].
psz_msg
];
NSRange
s_r
=
NSMakeRange
(
[[
o_err_msg
string
]
length
],
0
);
[
o_err_msg
setEditable
:
YES
];
[
o_err_msg
setSelectedRange
:
s_r
];
[
o_err_msg
insertText
:
o_my_msg
];
[
o_error
makeKeyAndOrderFront
:
self
];
[
o_err_msg
setEditable
:
NO
];
}
}
vlc_mutex_lock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
p_intf
->
p_sys
->
p_sub
->
i_start
=
i_start
;
vlc_mutex_unlock
(
p_intf
->
p_sys
->
p_sub
->
p_lock
);
}
}
-
(
void
)
playStatusUpdated
:(
BOOL
)
b_pause
{
if
(
b_pause
)
{
[
o_btn_play
setImage
:
o_img_pause
];
[
o_btn_play
setToolTip
:
_NS
(
"Pause"
)];
[
o_mi_play
setTitle
:
_NS
(
"Pause"
)];
[
o_dmi_play
setTitle
:
_NS
(
"Pause"
)];
}
else
{
[
o_btn_play
setImage
:
o_img_play
];
[
o_btn_play
setToolTip
:
_NS
(
"Play"
)];
[
o_mi_play
setTitle
:
_NS
(
"Play"
)];
[
o_dmi_play
setTitle
:
_NS
(
"Play"
)];
}
}
-
(
void
)
setSubmenusEnabled
:(
BOOL
)
b_enabled
{
[
o_mi_program
setEnabled
:
b_enabled
];
[
o_mi_title
setEnabled
:
b_enabled
];
[
o_mi_chapter
setEnabled
:
b_enabled
];
[
o_mi_language
setEnabled
:
b_enabled
];
[
o_mi_subtitle
setEnabled
:
b_enabled
];
[
o_mi_channels
setEnabled
:
b_enabled
];
[
o_mi_device
setEnabled
:
b_enabled
];
[
o_mi_screen
setEnabled
:
b_enabled
];
}
-
(
void
)
manageVolumeSlider
{
audio_volume_t
i_volume
;
vlc_bool_t
b_audio
=
VLC_FALSE
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
/* release input */
if
(
p_intf
->
p_sys
->
p_input
)
aout_instance_t
*
p_aout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_AOUT
,
FIND_ANYWHERE
);
if
(
p_aout
!=
NULL
)
{
b_audio
=
VLC_TRUE
;
aout_VolumeGet
(
p_aout
,
&
i_volume
);
vlc_object_release
(
(
vlc_object_t
*
)
p_aout
);
}
else
{
vlc_object_release
(
p_intf
->
p_sys
->
p_input
);
p_intf
->
p_sys
->
p_input
=
NULL
;
i_volume
=
(
audio_volume_t
)
config_GetInt
(
p_intf
,
"volume"
);
}
[
o_volumeslider
setFloatValue
:
(
float
)
i_volume
/
AOUT_VOLUME_STEP
];
[
o_volumeslider
setEnabled
:
b_audio
];
p_intf
->
p_sys
->
b_mute
=
(
i_volume
==
0
);
}
-
(
void
)
terminate
{
NSEvent
*
o_event
;
vout_thread_t
*
p_vout
;
playlist_t
*
p_playlist
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
/*
* Free playlists
*/
...
...
@@ -556,6 +856,18 @@ static void Run( intf_thread_t *p_intf )
vout_Destroy
(
p_vout
);
}
if
(
o_img_pause
!=
nil
)
{
[
o_img_pause
release
];
o_img_pause
=
nil
;
}
if
(
o_img_play
!=
nil
)
{
[
o_img_play
release
];
o_img_play
=
nil
;
}
if
(
o_msg_arr
!=
nil
)
{
[
o_msg_arr
removeAllObjects
];
...
...
@@ -581,109 +893,15 @@ static void Run( intf_thread_t *p_intf )
[[
NSUserDefaults
standardUserDefaults
]
synchronize
];
/* send a dummy event to break out of the event loop */
pE
vent
=
[
NSEvent
mouseEventWithType
:
NSLeftMouseDown
o_e
vent
=
[
NSEvent
mouseEventWithType
:
NSLeftMouseDown
location:
NSMakePoint
(
1
,
1
)
modifierFlags
:
0
timestamp:
1
windowNumber
:
[[
NSApp
mainWindow
]
windowNumber
]
context:
[
NSGraphicsContext
currentContext
]
eventNumber
:
1
clickCount:
1
pressure
:
0
.
0
];
[
NSApp
postEvent
:
pEvent
atStart
:
YES
];
}
-
(
void
)
manageMode
{
vlc_bool_t
b_input
;
vlc_bool_t
b_control
=
0
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
if
(
(
b_input
=
(
p_intf
->
p_sys
->
p_input
!=
NULL
)
)
)
{
/* control buttons for free pace streams */
b_control
=
p_intf
->
p_sys
->
p_input
->
stream
.
b_pace_control
;
/* get ready for menu regeneration */
p_intf
->
p_sys
->
b_program_update
=
1
;
p_intf
->
p_sys
->
b_title_update
=
1
;
p_intf
->
p_sys
->
b_chapter_update
=
1
;
p_intf
->
p_sys
->
b_audio_update
=
1
;
p_intf
->
p_sys
->
b_spu_update
=
1
;
p_intf
->
p_sys
->
i_part
=
0
;
p_intf
->
p_sys
->
p_input
->
stream
.
b_changed
=
0
;
msg_Dbg
(
p_intf
,
"stream has changed, refreshing interface"
);
}
else
{
/* unsensitize menus */
[
o_mi_program
setEnabled
:
FALSE
];
[
o_mi_title
setEnabled
:
FALSE
];
[
o_mi_chapter
setEnabled
:
FALSE
];
[
o_mi_language
setEnabled
:
FALSE
];
[
o_mi_subtitle
setEnabled
:
FALSE
];
[
o_mi_channels
setEnabled
:
FALSE
];
[
o_mi_device
setEnabled
:
FALSE
];
[
o_mi_screen
setEnabled
:
FALSE
];
[
o_mi_close_window
setEnabled
:
FALSE
];
}
[
self
setControlItems
];
[
NSApp
postEvent
:
o_event
atStart
:
YES
];
}
-
(
void
)
setControlItems
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
vlc_bool_t
b_input
;
vlc_bool_t
b_plmul
=
NO
;
vlc_bool_t
b_control
=
NO
;
vlc_bool_t
b_chapters
=
NO
;
input_area_t
*
p_area
;
playlist_t
*
p_playlist
=
NULL
;
NSImage
*
playImage
=
[
NSImage
imageNamed
:
@"play"
];
NSImage
*
pauseImage
=
[
NSImage
imageNamed
:
@"pause"
];
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
!=
NULL
)
{
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
b_plmul
=
p_playlist
->
i_size
>
1
;
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
if
(
(
b_input
=
(
p_intf
->
p_sys
->
p_input
!=
NULL
)
)
)
{
/* control buttons for free pace streams */
b_control
=
p_intf
->
p_sys
->
p_input
->
stream
.
b_pace_control
;
p_area
=
p_intf
->
p_sys
->
p_input
->
stream
.
p_selected_area
;
if
(
p_area
->
i_part_nb
>
1
)
b_chapters
=
YES
;
}
/* set control items */
[
o_btn_stop
setEnabled
:
b_input
];
[
o_btn_fastforward
setEnabled
:
b_control
];
[
o_btn_slowmotion
setEnabled
:
b_control
];
[
o_btn_prev
setEnabled
:
(
b_plmul
||
b_chapters
)
];
[
o_btn_next
setEnabled
:
(
b_plmul
||
b_chapters
)
];
[
o_controls
setVolumeSlider
];
[
o_timeslider
setEnabled
:
b_input
];
if
(
p_intf
->
p_sys
->
p_input
!=
NULL
&&
p_intf
->
p_sys
->
p_input
->
stream
.
control
.
i_status
!=
PAUSE_S
)
{
[
o_btn_play
setImage
:
pauseImage
];
[
o_btn_play
setToolTip
:
_NS
(
"Pause"
)];
[
o_mi_play
setTitle
:
_NS
(
"Pause"
)];
[
o_dmi_play
setTitle
:
_NS
(
"Pause"
)];
}
else
{
[
o_btn_play
setImage
:
playImage
];
[
o_btn_play
setToolTip
:
_NS
(
"Play"
)];
[
o_mi_play
setTitle
:
_NS
(
"Play"
)];
[
o_dmi_play
setTitle
:
_NS
(
"Play"
)];
}
}
-
(
void
)
setupMenus
-
(
void
)
setupMenus
:(
input_thread_t
*
)
p_input
{
unsigned
int
i
,
i_nb_items
;
NSMenuItem
*
o_item
;
...
...
@@ -701,8 +919,6 @@ static void Run( intf_thread_t *p_intf )
p_intf
->
p_sys
->
b_spu_update
|=
p_intf
->
p_sys
->
b_title_update
|
p_intf
->
p_sys
->
b_program_update
;
#define p_input (p_intf->p_sys->p_input)
if
(
p_intf
->
p_sys
->
b_program_update
)
{
NSMenu
*
o_program
;
...
...
@@ -854,11 +1070,9 @@ static void Run( intf_thread_t *p_intf )
}
}
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
if
(
p_intf
->
p_sys
->
b_audio_update
)
{
[
self
setupLangMenu
:
o_mi_language
es
:
p_audio_es
[
self
setupLangMenu
:
p_input
mi
:
o_mi_language
es
:
p_audio_es
category:
AUDIO_ES
selector
:
@selector
(
toggleLanguage
:
)];
p_intf
->
p_sys
->
b_audio_update
=
0
;
...
...
@@ -866,7 +1080,7 @@ static void Run( intf_thread_t *p_intf )
if
(
p_intf
->
p_sys
->
b_spu_update
)
{
[
self
setupLangMenu
:
o_mi_subtitle
es
:
p_spu_es
[
self
setupLangMenu
:
p_input
mi
:
o_mi_subtitle
es
:
p_spu_es
category:
SPU_ES
selector
:
@selector
(
toggleLanguage
:
)];
p_intf
->
p_sys
->
b_spu_update
=
0
;
...
...
@@ -896,10 +1110,10 @@ static void Run( intf_thread_t *p_intf )
p_intf
->
p_sys
->
b_aout_update
=
0
;
}
if
(
p_intf
->
p_sys
->
b_vout_update
)
if
(
p_intf
->
p_sys
->
b_vout_update
)
{
vout_thread_t
*
p_vout
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_VOUT
,
FIND_ANYWHERE
);
FIND_ANYWHERE
);
if
(
p_vout
!=
NULL
)
{
...
...
@@ -919,19 +1133,17 @@ static void Run( intf_thread_t *p_intf )
p_intf
->
p_sys
->
b_vout_update
=
0
;
}
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
#undef p_input
}
-
(
void
)
setupLangMenu
:(
NSMenuItem
*
)
o_mi
-
(
void
)
setupLangMenu
:(
input_thread_t
*
)
p_input
mi
:(
NSMenuItem
*
)
o_mi
es
:(
es_descriptor_t
*
)
p_es
category
:(
int
)
i_cat
selector
:(
SEL
)
pf_callback
{
unsigned
int
i
,
i_nb_items
;
NSMenu
*
o_menu
=
[
o_mi
submenu
];
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
/* remove previous language items */
i_nb_items
=
[
o_menu
numberOfItems
];
...
...
@@ -961,15 +1173,13 @@ static void Run( intf_thread_t *p_intf )
}
#endif
vlc_mutex_lock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
#define ES p_intf->p_sys->p_input->stream.pp_es[i]
for
(
i
=
0
;
i
<
p_intf
->
p_sys
->
p_input
->
stream
.
i_es_number
;
i
++
)
#define ES p_input->stream.pp_es[i]
for
(
i
=
0
;
i
<
p_input
->
stream
.
i_es_number
;
i
++
)
{
if
(
(
ES
->
i_cat
==
i_cat
)
&&
(
!
ES
->
p_pgrm
||
ES
->
p_pgrm
==
p_in
tf
->
p_sys
->
p_in
put
->
stream
.
p_selected_program
)
)
p_input
->
stream
.
p_selected_program
)
)
{
NSMenuItem
*
o_lmi
;
NSString
*
o_title
;
...
...
@@ -1003,8 +1213,6 @@ static void Run( intf_thread_t *p_intf )
}
}
#undef ES
vlc_mutex_unlock
(
&
p_intf
->
p_sys
->
p_input
->
stream
.
stream_lock
);
}
-
(
void
)
setupVarMenu
:(
NSMenuItem
*
)
o_mi
...
...
@@ -1045,7 +1253,8 @@ static void Run( intf_thread_t *p_intf )
NSMenuItem
*
o_lmi
;
NSString
*
o_title
;
o_title
=
[
NSString
stringWithCString
:
val
.
p_list
->
p_values
[
i
].
psz_string
];
o_title
=
[
NSString
stringWithCString
:
val
.
p_list
->
p_values
[
i
].
psz_string
];
o_lmi
=
[
o_menu
addItemWithTitle
:
o_title
action:
pf_callback
keyEquivalent
:
@""
];
/* FIXME: this isn't 64-bit clean ! */
...
...
@@ -1087,93 +1296,58 @@ static void Run( intf_thread_t *p_intf )
-
(
IBAction
)
timesliderUpdate
:(
id
)
sender
{
float
f_updated
;
switch
(
[[
NSApp
currentEvent
]
type
]
)
{
case
NSLeftMouseUp
:
case
NSLeftMouseDown
:
f_slider
=
[
sender
floatValue
];
[
self
displayTime
];
break
;
case
NSLeftMouseDragged
:
f_slider
=
[
sender
floatValue
];
[
self
displayTime
];
break
;
return
;
case
NSLeftMouseUp
:
f_slider
=
[
sender
floatValue
];
[
self
displayTime
];
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
case
NSLeftMouseDragged
:
f_updated
=
[
sender
floatValue
];
break
;
default:
break
;
return
;
}
}
-
(
void
)
displayTime
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
if
(
p_input
==
NULL
)
{
[
o_timeslider
setEnabled
:
FALSE
];
[
o_timeslider
setFloatValue
:
0
.
0
];
[
o_timefield
setStringValue
:
@"0:00:00"
];
playlist_t
*
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
{
return
;
}
#define p_area p_input->stream.p_selected_area
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
if
(
p_input
->
stream
.
b_changed
)
{
[
o_timeslider
setEnabled
:
p_input
->
stream
.
b_seekable
];
}
else
if
(
p_intf
->
p_sys
->
b_playing
)
if
(
p_playlist
->
p_input
!=
NULL
)
{
off_t
i_tell
;
NSString
*
o_time
;
char
psz_time
[
OFFSETTOTIME_MAX_SIZE
];
input_OffsetToTime
(
p_input
,
psz_time
,
p_area
->
i_tell
);
#define p_area p_playlist->p_input->stream.p_selected_area
vlc_mutex_lock
(
&
p_playlist
->
p_input
->
stream
.
stream_lock
);
i_tell
=
f_updated
/
100
.
*
p_area
->
i_size
;
input_OffsetToTime
(
p_playlist
->
p_input
,
psz_time
,
i_tell
);
vlc_mutex_unlock
(
&
p_playlist
->
p_input
->
stream
.
stream_lock
);
#undef p_area
o_time
=
[
NSString
stringWithCString
:
psz_time
];
[
o_timefield
setStringValue
:
o_time
];
if
(
p_input
->
stream
.
b_seekable
)
{
if
(
f_slider
==
f_slider_old
)
{
float
f_updated
=
(
100
.
*
p_area
->
i_tell
)
/
p_area
->
i_size
;
if
(
f_slider
!=
f_updated
)
{
[
o_timeslider
setFloatValue
:
f_updated
];
}
}
else
{
off_t
i_seek
=
(
f_slider
*
p_area
->
i_size
)
/
100
;
/* release the lock to be able to seek */
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
input_Seek
(
p_input
,
i_seek
,
INPUT_SEEK_SET
);
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
/* Update the old value */
f_slider_old
=
f_slider
;
}
}
[
o_timefield
setStringValue
:
o_time
];
}
#undef p_area
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
-
(
IBAction
)
closeError
:(
id
)
sender
{
/* Error panel */
[
o_err_msg
setString
:
@""
];
[
o_error
performClose
:
self
];
}
...
...
@@ -1182,7 +1356,7 @@ static void Run( intf_thread_t *p_intf )
{
NSString
*
o_path
=
[[
NSBundle
mainBundle
]
pathForResource:
@"README.MacOSX"
ofType
:
@"rtf"
];
[[
NSWorkspace
sharedWorkspace
]
openFile
:
o_path
withApplication:
@"TextEdit"
];
}
...
...
@@ -1191,14 +1365,14 @@ static void Run( intf_thread_t *p_intf )
{
NSURL
*
o_url
=
[
NSURL
URLWithString
:
@"http://www.videolan.org/support/bug-reporting.html"
];
[[
NSWorkspace
sharedWorkspace
]
openURL
:
o_url
];
}
-
(
IBAction
)
openWebsite
:(
id
)
sender
{
NSURL
*
o_url
=
[
NSURL
URLWithString
:
@"http://www.videolan.org"
];
[[
NSWorkspace
sharedWorkspace
]
openURL
:
o_url
];
}
...
...
@@ -1206,7 +1380,7 @@ static void Run( intf_thread_t *p_intf )
{
NSString
*
o_path
=
[[
NSBundle
mainBundle
]
pathForResource:
@"COPYING"
ofType
:
nil
];
[[
NSWorkspace
sharedWorkspace
]
openFile
:
o_path
withApplication:
@"TextEdit"
];
}
...
...
@@ -1306,19 +1480,22 @@ static void Run( intf_thread_t *p_intf )
-
(
void
)
handlePortMessage
:(
NSPortMessage
*
)
o_msg
{
id
**
val
;
NSData
*
o_data
;
NSValue
*
o_value
;
NSInvocation
*
o_inv
;
vout_thread_t
*
p_vout
;
NSConditionLock
*
o_lock
;
o_data
=
[[
o_msg
components
]
lastObject
];
o_inv
=
*
((
NSInvocation
**
)[
o_data
bytes
]);
[
o_inv
getArgument
:
&
o_value
atIndex
:
2
];
p_vout
=
(
vout_thread_t
*
)[
o_value
pointerValue
];
val
=
(
id
**
)[
o_value
pointerValue
];
[
o_inv
setArgument
:
val
[
1
]
atIndex
:
2
];
o_lock
=
*
(
val
[
0
]);
[
p_vout
->
p_sys
->
o_lock
lock
];
[
o_lock
lock
];
[
o_inv
invoke
];
[
p_vout
->
p_sys
->
o_lock
unlockWithCondition
:
1
];
[
o_lock
unlockWithCondition
:
1
];
}
@end
modules/gui/macosx/open.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* open.m: MacOS X plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: open.m,v 1.1
6 2003/01/26 14:53:08 hartman
Exp $
* $Id: open.m,v 1.1
7 2003/01/31 02:53:52 jlj
Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
...
...
@@ -37,17 +37,12 @@
#include <IOKit/storage/IOCDMedia.h>
#include <IOKit/storage/IODVDMedia.h>
#import <Cocoa/Cocoa.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "intf.h"
#include "playlist.h"
#include "open.h"
#include "netutils.h"
#import "intf.h"
#import "playlist.h"
#import "open.h"
/*****************************************************************************
* GetEjectableMediaOfClass
*****************************************************************************/
...
...
modules/gui/macosx/playlist.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* playlist.m: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: playlist.m,v 1.
6 2003/01/29 11:34:11
jlj Exp $
* $Id: playlist.m,v 1.
7 2003/01/31 02:53:52
jlj Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
*
...
...
@@ -28,11 +28,6 @@
#include <sys/param.h>
/* for MAXPATHLEN */
#include <string.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <Cocoa/Cocoa.h>
#include "intf.h"
#include "playlist.h"
...
...
@@ -48,24 +43,41 @@
-
(
void
)
keyDown
:(
NSEvent
*
)
o_event
{
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
unichar
key
=
0
;
playlist_t
*
p_playlist
;
intf_thread_t
*
p_intf
=
[
NSApp
getIntf
];
if
(
[[
o_event
characters
]
length
]
)
{
key
=
[[
o_event
characters
]
characterAtIndex
:
0
];
}
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
!=
NULL
)
{
vlc_mutex_lock
(
&
p_playlist
->
object_lock
);
}
switch
(
key
)
{
case
' '
:
input_SetStatus
(
p_intf
->
p_sys
->
p_input
,
INPUT_STATUS_PAUSE
);
if
(
p_playlist
!=
NULL
&&
p_playlist
->
p_input
!=
NULL
)
{
input_SetStatus
(
p_playlist
->
p_input
,
INPUT_STATUS_PAUSE
);
}
break
;
default:
[
super
keyDown
:
o_event
];
break
;
}
if
(
p_playlist
!=
NULL
)
{
vlc_mutex_unlock
(
&
p_playlist
->
object_lock
);
vlc_object_release
(
p_playlist
);
}
}
@end
...
...
modules/gui/macosx/prefs.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* prefs.m: MacOS X plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: prefs.m,v 1.
9 2003/01/27 17:41:01 ipkiss
Exp $
* $Id: prefs.m,v 1.
10 2003/01/31 02:53:52 jlj
Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
*
...
...
@@ -28,13 +28,8 @@
#include <sys/param.h>
/* for MAXPATHLEN */
#include <string.h>
#import <Cocoa/Cocoa.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#import "intf.h"
#import "prefs.h"
#include "intf.h"
#include "prefs.h"
/*****************************************************************************
* VLCPrefs implementation
...
...
modules/gui/macosx/vout.h
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* vout.h: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: vout.h,v 1.
4 2003/01/05 01:55:07 massiot
Exp $
* $Id: vout.h,v 1.
5 2003/01/31 02:53:52 jlj
Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
...
...
@@ -67,8 +67,6 @@
*****************************************************************************/
struct
vout_sys_t
{
NSConditionLock
*
o_lock
;
NSRect
s_rect
;
int
b_pos_saved
;
VLCWindow
*
o_window
;
...
...
modules/gui/macosx/vout.m
View file @
7f8e2bc5
...
...
@@ -2,7 +2,7 @@
* vout.m: MacOS X video output plugin
*****************************************************************************
* Copyright (C) 2001-2003 VideoLAN
* $Id: vout.m,v 1.2
0 2003/01/28 15:59:38 hartman
Exp $
* $Id: vout.m,v 1.2
1 2003/01/31 02:53:52 jlj
Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Florian G. Pflug <fgp@phlo.org>
...
...
@@ -31,12 +31,6 @@
#include <stdlib.h>
/* free() */
#include <string.h>
/* strerror() */
#include <vlc/vlc.h>
#include <vlc/vout.h>
#include <vlc/aout.h>
#include <vlc/intf.h>
#include <Cocoa/Cocoa.h>
#include <QuickTime/QuickTime.h>
#include "intf.h"
...
...
@@ -424,61 +418,14 @@ static int CoSendRequest( vout_thread_t *p_vout, SEL sel )
{
int
i_ret
=
0
;
NSAutoreleasePool
*
o_pool
=
[[
NSAutoreleasePool
alloc
]
init
];
VLCVout
*
o_vlv
=
[[[
VLCVout
alloc
]
init
]
autorelease
];
VLCVout
*
o_vlv
=
[[
VLCVout
alloc
]
init
];
if
(
[
o_vlv
respondsToSelector
:
@selector
(
performSelectorOnMainThread
:
withObject:waitUntilDone:
)]
)
{
[
o_vlv
performSelectorOnMainThread
:
sel
withObject:
[
NSValue
valueWithPointer
:
p_vout
]
waitUntilDone:
YES
];
}
else
if
(
[
NSApp
respondsToSelector
:
@selector
(
getIntf
)]
)
{
NSArray
*
o_array
;
NSValue
*
o_value
;
NSPort
*
o_recv_port
;
NSInvocation
*
o_inv
;
NSPortMessage
*
o_msg
;
intf_thread_t
*
p_intf
;
NSMethodSignature
*
o_sig
;
p_intf
=
(
intf_thread_t
*
)[
NSApp
getIntf
];
o_recv_port
=
[[
NSPort
port
]
retain
];
o_value
=
[
NSValue
valueWithPointer
:
p_vout
];
o_sig
=
[
VLCVout
instanceMethodSignatureForSelector
:
sel
];
o_inv
=
[
NSInvocation
invocationWithMethodSignature
:
o_sig
];
[
o_inv
setArgument
:
&
o_value
atIndex
:
2
];
[
o_inv
setTarget
:
o_vlv
];
[
o_inv
setSelector
:
sel
];
o_array
=
[
NSArray
arrayWithObject
:
[
NSData
dataWithBytes
:
&
o_inv
length
:
sizeof
(
o_inv
)]];
o_msg
=
[[
NSPortMessage
alloc
]
initWithSendPort:
p_intf
->
p_sys
->
o_sendport
receivePort:
o_recv_port
components
:
o_array
];
p_vout
->
p_sys
->
o_lock
=
[[
NSConditionLock
alloc
]
initWithCondition
:
0
];
[
o_msg
sendBeforeDate
:
[
NSDate
distantPast
]];
[
p_vout
->
p_sys
->
o_lock
lockWhenCondition
:
1
];
[
p_vout
->
p_sys
->
o_lock
unlock
];
[
p_vout
->
p_sys
->
o_lock
release
];
p_vout
->
p_sys
->
o_lock
=
nil
;
[
o_msg
release
];
[
o_recv_port
release
];
}
else
if
(
(
i_ret
=
ExecuteOnMainThread
(
o_vlv
,
sel
,
(
void
*
)
p_vout
)
)
)
{
msg_Err
(
p_vout
,
"SendRequest: no way to communicate with mt"
);
i_ret
=
1
;
}
[
o_
pool
release
];
[
o_
vlv
release
];
return
(
i_ret
);
}
...
...
@@ -842,7 +789,6 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
playlist_Stop
(
p_playlist
);
vlc_object_release
(
p_playlist
);
p_intf
->
p_sys
->
b_stopping
=
1
;
/* The window will be closed by the intf later. */
return
NO
;
...
...
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