Index: b/src/xineplayer.cpp
===================================================================
--- a/src/xineplayer.cpp	2012-10-30 18:39:16.000000000 +0000
+++ b/src/xineplayer.cpp	2012-11-03 17:56:01.760234144 +0000
@@ -528,7 +528,11 @@
     xine_event_create_listener_thread (event_queue, event_listener, NULL);
     if (mrl == "cdda:/") {
         int nr;
+#if XINE_MAJOR_VERSION > 1 || ( XINE_MAJOR_VERSION == 1 && XINE_MINOR_VERSION >= 2 )
+        const char * const* mrls = xine_get_autoplay_mrls (xine, "CD", &nr);
+#else
         char ** mrls = xine_get_autoplay_mrls (xine, "CD", &nr);
+#endif
         running = 1;
         for (int i = 0; i < nr; i++) {
             TQString m (mrls[i]);
@@ -863,10 +867,10 @@
                             case XK_p: // previous
                                 mutex.lock ();
                                 if (stream) {
-                                    xine_event_t xine_event =  { 
-                                        XINE_EVENT_INPUT_PREVIOUS,
-                                        stream, 0L, 0, { 0, 0 }
-                                    };
+                                    xine_event_t xine_event;
+                                    memset(&xine_event, 0, sizeof(xine_event));
+                                    xine_event.type = XINE_EVENT_INPUT_PREVIOUS;
+                                    xine_event.stream = stream;
                                     xine_event_send (stream, &xine_event);
                                 } 
                                 mutex.unlock ();
@@ -875,10 +879,10 @@
                             case XK_n: // next
                                 mutex.lock ();
                                 if (stream) {
-                                    xine_event_t xine_event =  { 
-                                        XINE_EVENT_INPUT_NEXT,
-                                        stream, 0L, 0, { 0, 0 }
-                                    };
+                                    xine_event_t xine_event;
+                                    memset(&xine_event, 0, sizeof(xine_event));
+                                    xine_event.type = XINE_EVENT_INPUT_NEXT;
+                                    xine_event.stream = stream;
                                     xine_event_send (stream, &xine_event);
                                 } 
                                 mutex.unlock ();
@@ -887,10 +891,10 @@
                             case XK_u: // up menu
                                 mutex.lock ();
                                 if (stream) {
-                                    xine_event_t xine_event =  { 
-                                        XINE_EVENT_INPUT_MENU1,
-                                        stream, 0L, 0, { 0, 0 }
-                                    };
+                                    xine_event_t xine_event;
+                                    memset(&xine_event, 0, sizeof(xine_event));
+                                    xine_event.type = XINE_EVENT_INPUT_MENU1;
+                                    xine_event.stream = stream;
                                     xine_event_send (stream, &xine_event);
                                 } 
                                 mutex.unlock ();
@@ -899,10 +903,10 @@
                             case XK_r: // root menu
                                 mutex.lock ();
                                 if (stream) {
-                                    xine_event_t xine_event =  { 
-                                        XINE_EVENT_INPUT_MENU3,
-                                        stream, 0L, 0, { 0, 0 }
-                                    };
+                                    xine_event_t xine_event;
+                                    memset(&xine_event, 0, sizeof(xine_event));
+                                    xine_event.type = XINE_EVENT_INPUT_MENU3;
+                                    xine_event.stream = stream;
                                     xine_event_send (stream, &xine_event);
                                 } 
                                 mutex.unlock ();
@@ -985,11 +989,12 @@
                         data.x = rect.x;
                         data.y = rect.y;
                         data.button = 0;
-                        xine_event_t xine_event =  { 
-                                XINE_EVENT_INPUT_MOUSE_MOVE,
-                                stream, &data, sizeof (xine_input_data_t),
-                                { 0 , 0 }
-                        };
+                        xine_event_t xine_event;
+                        memset(&xine_event, 0, sizeof(xine_event));
+                        xine_event.type = XINE_EVENT_INPUT_MOUSE_MOVE;
+                        xine_event.stream = stream;
+                        xine_event.data = &data;
+                        xine_event.data_length = sizeof (xine_input_data_t);
                         mutex.lock ();
                         xine_event_send (stream, &xine_event);
                         mutex.unlock ();
@@ -1023,11 +1028,12 @@
                         data.x = rect.x;
                         data.y = rect.y;
                         data.button = 1;
-                        xine_event_t xine_event =  { 
-                                XINE_EVENT_INPUT_MOUSE_BUTTON,
-                                stream, &data, sizeof (xine_input_data_t),
-                                { 0, 0 }
-                        };
+                        xine_event_t xine_event;
+                        memset(&xine_event, 0, sizeof(xine_event));
+                        xine_event.type = XINE_EVENT_INPUT_MOUSE_BUTTON;
+                        xine_event.stream = stream;
+                        xine_event.data = &data;
+                        xine_event.data_length = sizeof (xine_input_data_t);
                         mutex.lock ();
                         xine_event_send (stream, &xine_event);
                         mutex.unlock ();