Révision 2422
tmp/org.txm.backtomedia.rcp/src/uk/co/caprica/vlcj/player/embedded/videosurface/swt/CompositeVideoSurface.java (revision 2422) | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package uk.co.caprica.vlcj.player.embedded.videosurface.swt; |
21 | 21 |
|
22 |
import java.lang.reflect.Field; |
|
23 |
|
|
22 | 24 |
import org.eclipse.swt.widgets.Composite; |
25 |
import org.eclipse.swt.widgets.Control; |
|
26 |
|
|
27 |
import uk.co.caprica.vlcj.binding.RuntimeUtil; |
|
23 | 28 |
import uk.co.caprica.vlcj.player.base.MediaPlayer; |
24 | 29 |
import uk.co.caprica.vlcj.player.embedded.videosurface.VideoSurface; |
25 | 30 |
import uk.co.caprica.vlcj.player.embedded.videosurface.VideoSurfaceAdapter; |
... | ... | |
47 | 52 |
|
48 | 53 |
@Override |
49 | 54 |
public void attach(MediaPlayer mediaPlayer) { |
50 |
videoSurfaceAdapter.attach(mediaPlayer, composite.embeddedHandle);
|
|
55 |
videoSurfaceAdapter.attach(mediaPlayer, getHandle(composite));
|
|
51 | 56 |
} |
57 |
|
|
58 |
/** |
|
59 |
* workaround to access windows handle members embeddedHandle, handle are not presents in all jvms |
|
60 |
* |
|
61 |
* @param c |
|
62 |
* @return |
|
63 |
*/ |
|
64 |
private long getHandle(Composite c) { |
|
65 |
long handle = 0l; |
|
66 |
Field _viewField; |
|
67 |
Field _idField; |
|
68 |
try { |
|
69 |
if (RuntimeUtil.isMac()) { |
|
70 |
_viewField = Control.class.getDeclaredField("view"); |
|
71 |
Object view = _viewField.get(c); |
|
72 |
Class<?> idClass = Class.forName("org.eclipse.swt.internal.cocoa.id"); |
|
73 |
_idField = idClass.getDeclaredField("id"); |
|
74 |
handle = _idField.getLong(view); |
|
75 |
|
|
76 |
} |
|
77 |
else if (RuntimeUtil.isNix()) { |
|
78 |
_idField = Composite.class.getDeclaredField("embeddedHandle"); |
|
79 |
handle = _idField.getLong(c); |
|
80 |
} |
|
81 |
else { |
|
82 |
_idField = Control.class.getDeclaredField("handle"); |
|
83 |
handle = _idField.getLong(c); |
|
84 |
} |
|
85 |
} |
|
86 |
catch (Exception e) { |
|
87 |
e.printStackTrace(); |
|
88 |
} |
|
89 |
return handle; |
|
90 |
} |
|
91 |
|
|
52 | 92 |
} |
Formats disponibles : Unified diff