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
dc8e4323
Commit
dc8e4323
authored
Oct 11, 2002
by
Stephan Assmus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user can now drop a DVD disk icon onto the interface or playlist window to open a DVD
parent
8656100e
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
99 additions
and
52 deletions
+99
-52
plugins/beos/InterfaceWindow.cpp
plugins/beos/InterfaceWindow.cpp
+99
-52
No files found.
plugins/beos/InterfaceWindow.cpp
View file @
dc8e4323
...
...
@@ -2,7 +2,7 @@
* InterfaceWindow.cpp: beos interface
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
* $Id: InterfaceWindow.cpp,v 1.16.2.
5 2002/10/09 15:29:51
stippi Exp $
* $Id: InterfaceWindow.cpp,v 1.16.2.
6 2002/10/11 00:46:59
stippi Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -37,7 +37,6 @@
#include <fs_info.h>
#include <string.h>
/* VLC headers */
extern
"C"
{
...
...
@@ -62,6 +61,41 @@ extern "C"
#define INTERFACE_UPDATE_TIMEOUT 80000 // 2 frames if at 25 fps
bool
get_volume_info
(
BVolume
&
volume
,
BString
&
volumeName
,
bool
&
isCDROM
,
BString
&
deviceName
)
{
bool
success
=
false
;
isCDROM
=
false
;
deviceName
=
""
;
volumeName
=
""
;
char
name
[
B_FILE_NAME_LENGTH
];
if
(
volume
.
GetName
(
name
)
>=
B_OK
)
// disk is currently mounted
{
volumeName
=
name
;
dev_t
dev
=
volume
.
Device
();
fs_info
info
;
if
(
fs_stat_dev
(
dev
,
&
info
)
==
B_OK
)
{
success
=
true
;
deviceName
=
info
.
device_name
;
if
(
volume
.
IsReadOnly
()
)
{
int
i_dev
=
open
(
info
.
device_name
,
O_RDONLY
);
if
(
i_dev
>=
0
)
{
device_geometry
g
;
if
(
ioctl
(
i_dev
,
B_GET_GEOMETRY
,
&
g
,
sizeof
(
g
)
)
>=
0
)
isCDROM
=
(
g
.
device_type
==
B_CD
);
close
(
i_dev
);
}
}
}
}
return
success
;
}
/*****************************************************************************
* InterfaceWindow
*****************************************************************************/
...
...
@@ -453,9 +487,48 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
{
BPath
path
(
&
ref
);
if
(
path
.
InitCheck
()
==
B_OK
)
{
bool
add
=
true
;
// has the user dropped a dvd disk icon?
BDirectory
dir
(
&
ref
);
if
(
dir
.
InitCheck
()
==
B_OK
&&
dir
.
IsRootDirectory
()
)
{
BVolumeRoster
volRoster
;
BVolume
vol
;
BDirectory
volumeRoot
;
status_t
status
=
volRoster
.
GetNextVolume
(
&
vol
);
while
(
status
==
B_NO_ERROR
)
{
if
(
vol
.
GetRootDirectory
(
&
volumeRoot
)
==
B_OK
&&
dir
==
volumeRoot
)
{
BString
volumeName
;
BString
deviceName
;
bool
isCDROM
;
if
(
get_volume_info
(
vol
,
volumeName
,
isCDROM
,
deviceName
)
&&
isCDROM
)
{
BMessage
msg
(
OPEN_DVD
);
msg
.
AddString
(
"device"
,
deviceName
.
String
()
);
PostMessage
(
&
msg
);
add
=
false
;
}
break
;
}
else
{
vol
.
Unset
();
status
=
volRoster
.
GetNextVolume
(
&
vol
);
}
}
}
if
(
add
)
{
// the BString objects will be deleted
// by the wrapper function further down
files
.
AddItem
(
new
BString
(
(
char
*
)
path
.
Path
()
)
);
files
.
AddItem
(
new
BString
(
path
.
Path
()
)
);
}
}
}
// give the list to VLC
Intf_VLCWrapper
::
openFiles
(
&
files
,
replace
);
...
...
@@ -878,9 +951,9 @@ CDMenu::~CDMenu()
void
CDMenu
::
AttachedToWindow
(
void
)
{
// remove all items
while
(
BMenuItem
*
item
=
RemoveItem
(
0L
)
)
while
(
BMenuItem
*
item
=
RemoveItem
(
0L
)
)
delete
item
;
GetCD
(
"/dev/disk"
);
GetCD
(
"/dev/disk"
);
BMenu
::
AttachedToWindow
();
}
...
...
@@ -889,52 +962,25 @@ void CDMenu::AttachedToWindow(void)
*****************************************************************************/
int
CDMenu
::
GetCD
(
const
char
*
directory
)
{
BVolumeRoster
*
volRoster
;
BVolume
*
vol
;
BDirectory
*
dir
;
int
status
;
int
mounted
;
char
name
[
B_FILE_NAME_LENGTH
];
fs_info
info
;
dev_t
dev
;
volRoster
=
new
BVolumeRoster
();
vol
=
new
BVolume
();
dir
=
new
BDirectory
();
status
=
volRoster
->
GetNextVolume
(
vol
);
status
=
vol
->
GetRootDirectory
(
dir
);
while
(
status
==
B_NO_ERROR
)
{
mounted
=
vol
->
GetName
(
name
);
if
((
mounted
==
B_OK
)
&&
/* Disk is currently Mounted */
(
vol
->
IsReadOnly
())
)
/* Disk is read-only */
{
dev
=
vol
->
Device
();
fs_stat_dev
(
dev
,
&
info
);
device_geometry
g
;
int
i_dev
;
i_dev
=
open
(
info
.
device_name
,
O_RDONLY
);
if
(
i_dev
>=
0
)
{
if
(
ioctl
(
i_dev
,
B_GET_GEOMETRY
,
&
g
,
sizeof
(
g
))
>=
0
)
{
if
(
g
.
device_type
==
B_CD
)
//ensure the drive is a CD-ROM
{
BMessage
*
msg
;
msg
=
new
BMessage
(
OPEN_DVD
);
msg
->
AddString
(
"device"
,
info
.
device_name
);
BMenuItem
*
menu_item
;
menu_item
=
new
BMenuItem
(
name
,
msg
);
AddItem
(
menu_item
);
}
close
(
i_dev
);
}
}
BVolumeRoster
volRoster
;
BVolume
vol
;
BDirectory
dir
;
status_t
status
=
volRoster
.
GetNextVolume
(
&
vol
);
while
(
status
==
B_NO_ERROR
)
{
BString
deviceName
;
BString
volumeName
;
bool
isCDROM
;
if
(
get_volume_info
(
vol
,
volumeName
,
isCDROM
,
deviceName
)
&&
isCDROM
)
{
BMessage
*
msg
=
new
BMessage
(
OPEN_DVD
);
msg
->
AddString
(
"device"
,
deviceName
.
String
()
);
BMenuItem
*
item
=
new
BMenuItem
(
volumeName
.
String
(),
msg
);
AddItem
(
item
);
}
vol
->
Unset
();
status
=
volRoster
->
GetNextVolume
(
vol
);
vol
.
Unset
();
status
=
volRoster
.
GetNextVolume
(
&
vol
);
}
}
...
...
@@ -983,6 +1029,7 @@ void LanguageMenu::_GetChannels()
es_descriptor_t
*
p_es
=
NULL
;
// Insert the "None" item if in subtitle mode
bool
emptyItemAdded
=
false
;
if
(
kind
!=
AUDIO_ES
)
//subtitle
{
msg
=
new
BMessage
(
SELECT_SUBTITLE
);
...
...
@@ -990,6 +1037,7 @@ void LanguageMenu::_GetChannels()
menu_item
=
new
BMenuItem
(
"None"
,
msg
);
AddItem
(
menu_item
);
menu_item
->
SetMarked
(
true
);
emptyItemAdded
=
true
;
}
input_thread_s
*
input
=
p_input_bank
->
pp_input
[
0
];
...
...
@@ -1003,7 +1051,6 @@ void LanguageMenu::_GetChannels()
}
int32
addedItems
=
0
;
bool
emptyItemAdded
=
false
;
uint32
what
=
kind
==
AUDIO_ES
?
SELECT_CHANNEL
:
SELECT_SUBTITLE
;
const
char
*
fieldName
=
kind
==
AUDIO_ES
?
"channel"
:
"subtitle"
;
...
...
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