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
c789f858
Commit
c789f858
authored
Apr 08, 2012
by
Felix Paul Kühne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
macosx: fixed drag & drop handling of optical media by re-writing it
parent
4a10b45f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
53 deletions
+56
-53
modules/gui/macosx/open.h
modules/gui/macosx/open.h
+11
-0
modules/gui/macosx/open.m
modules/gui/macosx/open.m
+0
-9
modules/gui/macosx/playlist.m
modules/gui/macosx/playlist.m
+45
-44
No files found.
modules/gui/macosx/open.h
View file @
c789f858
...
...
@@ -24,6 +24,15 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#define kVLCMediaAudioCD "AudioCD"
#define kVLCMediaDVD "DVD"
#define kVLCMediaVCD "VCD"
#define kVLCMediaSVCD "SVCD"
#define kVLCMediaBD "Bluray"
#define kVLCMediaVideoTSFolder "VIDEO_TS"
#define kVLCMediaBDMVFolder "BDMV"
#define kVLCMediaUnknown "Unknown"
/*****************************************************************************
* Intf_Open interface
*****************************************************************************/
...
...
@@ -262,6 +271,8 @@
-
(
IBAction
)
openSpecialMediaFolder
:(
id
)
sender
;
-
(
IBAction
)
dvdreadOptionChanged
:(
id
)
sender
;
-
(
IBAction
)
vcdOptionChanged
:(
id
)
sender
;
-
(
char
*
)
getVolumeTypeFromMountPath
:(
NSString
*
)
mountPath
;
-
(
NSString
*
)
getBSDNodeFromMountPath
:(
NSString
*
)
mountPath
;
-
(
void
)
openNet
;
-
(
IBAction
)
openNetModeChanged
:(
id
)
sender
;
...
...
modules/gui/macosx/open.m
View file @
c789f858
...
...
@@ -59,15 +59,6 @@ NSArray *qtkaudioDevices;
[o_capture_long_lbl displayIfNeeded]; \
[self showCaptureView: o_capture_label_view]
#define kVLCMediaAudioCD "AudioCD"
#define kVLCMediaDVD "DVD"
#define kVLCMediaVCD "VCD"
#define kVLCMediaSVCD "SVCD"
#define kVLCMediaBD "Bluray"
#define kVLCMediaVideoTSFolder "VIDEO_TS"
#define kVLCMediaBDMVFolder "BDMV"
#define kVLCMediaUnknown "Unknown"
struct
display_info_t
{
CGRect
rect
;
...
...
modules/gui/macosx/playlist.m
View file @
c789f858
...
...
@@ -48,6 +48,7 @@
#import "playlist.h"
#import "controls.h"
#import "misc.h"
#import "open.h"
#include <vlc_keys.h>
#import <vlc_services_discovery.h>
...
...
@@ -1028,61 +1029,63 @@
playlist_t
*
p_playlist
=
pl_Get
(
p_intf
);
input_item_t
*
p_input
;
BOOL
b_rem
=
FALSE
,
b_dir
=
FALSE
;
NSString
*
o_uri
,
*
o_name
;
BOOL
b_rem
=
FALSE
,
b_dir
=
FALSE
,
b_writable
=
FALSE
;
NSString
*
o_uri
,
*
o_name
,
*
o_path
;
NSURL
*
o_nsurl
;
NSArray
*
o_options
;
NSURL
*
o_true_file
;
/* Get the item */
o_uri
=
(
NSString
*
)[
o_one_item
objectForKey
:
@"ITEM_URL"
];
o_nsurl
=
[
NSURL
URLWithString
:
o_uri
];
o_path
=
[
o_nsurl
path
];
o_name
=
(
NSString
*
)[
o_one_item
objectForKey
:
@"ITEM_NAME"
];
o_options
=
(
NSArray
*
)[
o_one_item
objectForKey
:
@"ITEM_OPTIONS"
];
/* Find the name for a disc entry (i know, can you believe the trouble?) */
if
(
(
!
o_name
||
[
o_name
isEqualToString
:
@""
]
)
&&
[
o_uri
rangeOfString
:
@"/dev/"
].
location
!=
NSNotFound
)
if
(
[[
NSFileManager
defaultManager
]
fileExistsAtPath
:
o_path
isDirectory
:
&
b_dir
]
&&
b_dir
&&
[[
NSWorkspace
sharedWorkspace
]
getFileSystemInfoForPath
:
o_path
isRemovable
:
&
b_rem
isWritable:
&
b_writable
isUnmountable
:
NULL
description
:
NULL
type
:
NULL
]
&&
b_rem
&&
!
b_writable
&&
[
o_nsurl
isFileURL
]
)
{
int
i_count
;
struct
statfs
*
mounts
=
NULL
;
i_count
=
getmntinfo
(
&
mounts
,
MNT_NOWAIT
);
/* getmntinfo returns a pointer to static data. Do not free. */
for
(
int
i_index
=
0
;
i_index
<
i_count
;
i_index
++
)
id
o_vlc_open
=
[[
VLCMain
sharedInstance
]
open
];
char
*
diskType
=
[
o_vlc_open
getVolumeTypeFromMountPath
:
o_path
];
msg_Dbg
(
p_intf
,
"detected optical media of type '%s' in the file input"
,
diskType
);
if
(
diskType
==
kVLCMediaDVD
)
{
NSMutableString
*
o_temp
,
*
o_temp2
;
o_temp
=
[
NSMutableString
stringWithString
:
o_uri
];
o_temp2
=
[
NSMutableString
stringWithUTF8String
:
mounts
[
i_index
].
f_mntfromname
];
[
o_temp
replaceOccurrencesOfString
:
@"/dev/rdisk"
withString
:
@"/dev/disk"
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp
length
])
];
[
o_temp2
replaceOccurrencesOfString
:
@"s0"
withString
:
@""
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp2
length
])
];
[
o_temp2
replaceOccurrencesOfString
:
@"s1"
withString
:
@""
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp2
length
])
];
if
(
strstr
(
[
o_temp
fileSystemRepresentation
],
[
o_temp2
fileSystemRepresentation
]
)
!=
NULL
)
{
o_name
=
[[
NSFileManager
defaultManager
]
displayNameAtPath
:
[
NSString
stringWithUTF8String
:
mounts
[
i_index
].
f_mntonname
]];
}
o_uri
=
[
NSString
stringWithFormat
:
@"dvdnav://%@"
,
[
o_vlc_open
getBSDNodeFromMountPath
:
o_path
]];
}
else
if
(
diskType
==
kVLCMediaVideoTSFolder
)
{
o_uri
=
[
NSString
stringWithFormat
:
@"dvdnav://%@"
,
o_path
];
}
else
if
(
diskType
==
kVLCMediaAudioCD
)
{
o_uri
=
[
NSString
stringWithFormat
:
@"cdda://%@"
,
[
o_vlc_open
getBSDNodeFromMountPath
:
o_path
]];
}
else
if
(
diskType
==
kVLCMediaVCD
)
{
o_uri
=
[
NSString
stringWithFormat
:
@"vcd://%@#0:0"
,
[
o_vlc_open
getBSDNodeFromMountPath
:
o_path
]];
}
else
if
(
diskType
==
kVLCMediaSVCD
)
{
o_uri
=
[
NSString
stringWithFormat
:
@"vcd://%@@0:0"
,
[
o_vlc_open
getBSDNodeFromMountPath
:
o_path
]];
}
else
if
(
diskType
==
kVLCMediaBD
||
diskType
==
kVLCMediaBDMVFolder
)
{
o_uri
=
[
NSString
stringWithFormat
:
@"bluray://%@"
,
o_path
];
}
else
{
msg_Warn
(
VLCIntf
,
"unknown disk type, treating %s as regular input"
,
[
o_path
UTF8String
]
);
}
}
if
(
[[
NSFileManager
defaultManager
]
fileExistsAtPath
:
o_uri
isDirectory
:
&
b_dir
]
&&
b_dir
&&
[[
NSWorkspace
sharedWorkspace
]
getFileSystemInfoForPath
:
o_uri
isRemovable
:
&
b_rem
isWritable:
NULL
isUnmountable
:
NULL
description
:
NULL
type
:
NULL
]
&&
b_rem
)
{
/* All of this is to make sure CD's play when you D&D them on VLC */
/* Converts mountpoint to a /dev file */
struct
statfs
*
buf
;
char
*
psz_dev
;
NSMutableString
*
o_temp
;
buf
=
(
struct
statfs
*
)
malloc
(
sizeof
(
struct
statfs
));
statfs
(
[
o_uri
fileSystemRepresentation
],
buf
);
psz_dev
=
strdup
(
buf
->
f_mntfromname
);
o_temp
=
[
NSMutableString
stringWithUTF8String
:
psz_dev
];
[
o_temp
replaceOccurrencesOfString
:
@"/dev/disk"
withString
:
@"/dev/rdisk"
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp
length
])
];
[
o_temp
replaceOccurrencesOfString
:
@"s0"
withString
:
@""
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp
length
])
];
[
o_temp
replaceOccurrencesOfString
:
@"s1"
withString
:
@""
options
:
NSLiteralSearch
range
:
NSMakeRange
(
0
,
[
o_temp
length
])
];
o_uri
=
o_temp
;
p_input
=
input_item_New
(
[
o_uri
UTF8String
],
[[[
NSFileManager
defaultManager
]
displayNameAtPath
:
o_path
]
UTF8String
]
);
}
else
p_input
=
input_item_New
(
[
o_uri
fileSystemRepresentation
],
o_name
?
[
o_name
UTF8String
]
:
NULL
);
p_input
=
input_item_New
(
[
o_uri
fileSystemRepresentation
],
o_name
?
[
o_name
UTF8String
]
:
NULL
);
if
(
!
p_input
)
return
NULL
;
...
...
@@ -1097,11 +1100,9 @@
}
/* Recent documents menu */
o_true_file
=
[
NSURL
URLWithString
:
o_uri
];
if
(
o_true_file
!=
nil
&&
(
BOOL
)
config_GetInt
(
p_playlist
,
"macosx-recentitems"
)
==
YES
)
if
(
o_nsurl
!=
nil
&&
(
BOOL
)
config_GetInt
(
p_playlist
,
"macosx-recentitems"
)
==
YES
)
{
[[
NSDocumentController
sharedDocumentController
]
noteNewRecentDocumentURL:
o_true_file
];
[[
NSDocumentController
sharedDocumentController
]
noteNewRecentDocumentURL
:
o_nsurl
];
}
return
p_input
;
}
...
...
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