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