+/*****************************************************************************
+ * RefsReceived: called when files are sent to our application
+ * (for example when the user drops fils onto our icon)
+ *****************************************************************************/
+void VlcApplication::RefsReceived(BMessage* message)
+{
+ if (fInterfaceWindow)
+ fInterfaceWindow->PostMessage(message);
+ else {
+ delete fRefsMessage;
+ fRefsMessage = new BMessage(*message);
+ }
+}
+
+/*****************************************************************************
+ * MessageReceived: a BeOS applications main message loop
+ * Since VlcApplication and interface are separated
+ * in the vlc binary and the interface plugin,
+ * we use this method to "stick" them together.
+ * The interface will post a message to the global
+ * "be_app" pointer when the interface is created
+ * containing a pointer to the interface window.
+ * In this way, we can keep a B_REFS_RECEIVED message
+ * in store for the interface window to handle later.
+ *****************************************************************************/
+void VlcApplication::MessageReceived(BMessage* message)
+{
+ switch (message->what) {
+ case INTERFACE_CREATED: {
+ BWindow* interfaceWindow;
+ if (message->FindPointer("window", (void**)&interfaceWindow) == B_OK) {
+ fInterfaceWindow = interfaceWindow;
+ if (fRefsMessage) {
+ fInterfaceWindow->PostMessage(fRefsMessage);
+ delete fRefsMessage;
+ fRefsMessage = NULL;
+ }
+ }
+ break;
+ }
+
+ case REALLY_QUIT:
+ fReadyToQuit = true;
+ PostMessage( B_QUIT_REQUESTED );
+ break;
+
+ default:
+ BApplication::MessageReceived(message);
+ }
+}
+
+bool VlcApplication::QuitRequested()
+{
+ if( !fReadyToQuit )
+ {
+ libvlc_Quit( p_this->p_libvlc );
+ return false;
+ }
+
+ BApplication::QuitRequested();
+ return true;
+}