public void UpdateMessages() { VerifyObjectIsNotDisposed(); // libvlc_exception_t exc = new libvlc_exception_t(); LibVlcInterop.libvlc_exception_init(ref exc); IntPtr iterator = LibVlcInterop.libvlc_log_get_iterator(descriptor, ref exc); if (exc.b_raised != 0) { throw new VlcInternalException(exc.Message); } // try { while (0 != LibVlcInterop.libvlc_log_iterator_has_next(iterator, ref exc)) { if (exc.b_raised != 0) { throw new VlcInternalException(exc.Message); } // libvlc_log_message_t messageBuffer = new libvlc_log_message_t(); messageBuffer.sizeof_msg = Convert.ToUInt32(Marshal.SizeOf(typeof(libvlc_log_message_t))); IntPtr ptrStructRes = LibVlcInterop.libvlc_log_iterator_next(iterator, ref messageBuffer, ref exc); if (exc.b_raised != 0) { throw new VlcInternalException(exc.Message); } // libvlc_log_message_t msgRes = (libvlc_log_message_t)Marshal.PtrToStructure(ptrStructRes, typeof(libvlc_log_message_t)); string text = String.Format("{0} {1} {2} : {3}", msgRes.Type, msgRes.Name, msgRes.Header, msgRes.Message); // switch (msgRes.Severity) { case libvlc_log_messate_t_severity.INFO: { // INFO logger.Info(text); break; } case libvlc_log_messate_t_severity.ERR: { // ERR logger.Error(text); break; } case libvlc_log_messate_t_severity.WARN: { // WARN logger.Warn(text); break; } case libvlc_log_messate_t_severity.DBG: { // DBG logger.Debug(text); break; } default: { logger.Trace("Unknown severity : " + text); break; } } } } finally { LibVlcInterop.libvlc_log_iterator_free(iterator, ref exc); } }