Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
7ea7afc0
Commit
7ea7afc0
authored
Oct 11, 2005
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added clearer comments, couple of fixes
parent
a9ee8d8a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
21 deletions
+29
-21
activex/plugin.cpp
activex/plugin.cpp
+29
-21
No files found.
activex/plugin.cpp
View file @
7ea7afc0
...
...
@@ -556,25 +556,28 @@ HRESULT VLCPlugin::onLoad(void)
if
(
SUCCEEDED
(
pClientSite
->
GetMoniker
(
OLEGETMONIKER_ONLYIFTHERE
,
OLEWHICHMK_CONTAINER
,
&
pContMoniker
))
)
{
LPOLESTR
name
;
if
(
SUCCEEDED
(
pContMoniker
->
GetDisplayName
(
pBC
,
NULL
,
&
name
))
)
LPOLESTR
base_url
;
if
(
SUCCEEDED
(
pContMoniker
->
GetDisplayName
(
pBC
,
NULL
,
&
base_url
))
)
{
if
(
UrlIsW
(
name
,
URLIS_URL
)
)
/*
** check that the moinker is in a URL
*/
if
(
UrlIsW
(
base_url
,
URLIS_URL
)
)
{
LPOLESTR
url
=
(
LPOLESTR
)
CoTaskMemAlloc
(
sizeof
(
OLECHAR
)
*
INTERNET_MAX_URL_LENGTH
);
if
(
NULL
!=
url
)
DWORD
len
=
INTERNET_MAX_URL_LENGTH
;
LPOLESTR
abs_url
=
(
LPOLESTR
)
CoTaskMemAlloc
(
sizeof
(
OLECHAR
)
*
len
);
if
(
NULL
!=
abs_url
)
{
DWORD
len
=
INTERNET_MAX_URL_LENGTH
;
if
(
SUCCEEDED
(
UrlCombineW
(
name
,
_bstr_mrl
,
url
,
&
len
,
if
(
SUCCEEDED
(
UrlCombineW
(
base_url
,
_bstr_mrl
,
abs_url
,
&
len
,
URL_ESCAPE_UNSAFE
))
)
{
SysFreeString
(
_bstr_mrl
);
_bstr_mrl
=
SysAllocStringLen
(
url
,
len
);
_bstr_mrl
=
SysAllocStringLen
(
abs_
url
,
len
);
}
CoTaskMemFree
(
url
);
CoTaskMemFree
(
abs_
url
);
}
}
CoTaskMemFree
(
name
);
CoTaskMemFree
(
base_url
);
}
pContMoniker
->
Release
();
}
...
...
@@ -629,7 +632,6 @@ HRESULT VLCPlugin::onAmbientChanged(LPUNKNOWN pContainer, DISPID dispID)
if
(
SUCCEEDED
(
GetObjectProperty
(
pContainer
,
dispID
,
v
))
)
{
setUserMode
(
V_BOOL
(
&
v
)
!=
VARIANT_FALSE
);
VariantClear
(
&
v
);
}
break
;
case
DISPID_AMBIENT_UIDEAD
:
...
...
@@ -663,19 +665,20 @@ HRESULT VLCPlugin::onAmbientChanged(LPUNKNOWN pContainer, DISPID dispID)
case
DISPID_AMBIENT_TOPTOBOTTOM
:
break
;
case
DISPID_UNKNOWN
:
/*
** multiple property change, look up the ones we are interested in
*/
VariantInit
(
&
v
);
V_VT
(
&
v
)
=
VT_BOOL
;
if
(
SUCCEEDED
(
GetObjectProperty
(
pContainer
,
DISPID_AMBIENT_USERMODE
,
v
))
)
{
setUserMode
(
V_BOOL
(
&
v
)
!=
VARIANT_FALSE
);
VariantClear
(
&
v
);
}
VariantInit
(
&
v
);
V_VT
(
&
v
)
=
VT_I4
;
if
(
SUCCEEDED
(
GetObjectProperty
(
pContainer
,
DISPID_AMBIENT_CODEPAGE
,
v
))
)
{
setCodePage
(
V_I4
(
&
v
));
VariantClear
(
&
v
);
}
break
;
}
...
...
@@ -723,8 +726,9 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
/*
** Create a window for in place activated control.
** the window geometry represents the control viewport
** so that embedded video is always properly clipped.
** the window geometry matches the control viewport
** within container so that embedded video is always
** properly clipped.
*/
_inplacewnd
=
CreateWindow
(
_p_class
->
getInPlaceWndClassName
(),
"VLC Plugin In-Place Window"
,
...
...
@@ -745,8 +749,9 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
SetWindowLongPtr
(
_inplacewnd
,
GWLP_USERDATA
,
reinterpret_cast
<
LONG_PTR
>
(
this
));
/*
** VLC embedded video geometry automatically matches parent window.
** hence create a child window so that video position and size
** VLC embedded video automatically grows to cover client
** area of parent window.
** hence create a such a 'parent' window whose geometry
** is always correct relative to the viewport bounds
*/
_videownd
=
CreateWindow
(
_p_class
->
getVideoWndClassName
(),
...
...
@@ -773,15 +778,18 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
if
(
getVisible
()
)
ShowWindow
(
_inplacewnd
,
SW_SHOWNORMAL
);
/*
horrible cast there
*/
/*
set internal video width and height
*/
vlc_value_t
val
;
val
.
i_int
=
reinterpret_cast
<
int
>
(
_videownd
);
VLC_VariableSet
(
_i_vlc
,
"drawable"
,
val
);
val
.
i_int
=
posRect
.
right
-
posRect
.
left
;
VLC_VariableSet
(
_i_vlc
,
"width"
,
val
);
val
.
i_int
=
posRect
.
bottom
-
posRect
.
top
;
VLC_VariableSet
(
_i_vlc
,
"height"
,
val
);
/* set internal video parent window */
/* horrible cast there */
val
.
i_int
=
reinterpret_cast
<
int
>
(
_videownd
);
VLC_VariableSet
(
_i_vlc
,
"drawable"
,
val
);
if
(
_b_usermode
&&
_b_autoplay
&
(
VLC_PlaylistNumberOfItems
(
_i_vlc
)
>
0
)
)
{
VLC_Play
(
_i_vlc
);
...
...
@@ -906,7 +914,7 @@ void VLCPlugin::onPaint(HDC hdc, const RECT &bounds, const RECT &clipRect)
{
HBITMAP
oldBmp
=
(
HBITMAP
)
SelectObject
(
hdcDraw
,
hBitmap
);
if
(
(
size
.
cx
!=
width
)
||
(
size
.
c
x
!=
height
)
)
if
(
(
size
.
cx
!=
width
)
||
(
size
.
c
y
!=
height
)
)
{
// needs to scale canvas
SetMapMode
(
hdcDraw
,
MM_ANISOTROPIC
);
...
...
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