예제 #1
0
 internal static void UpdateTrackMetadata(MtpDeviceHandle handle, ref TrackStruct metadata)
 {
     if (LIBMTP_Update_Track_Metadata(handle, ref metadata) != 0)
     {
         throw new LibMtpException(ErrorCode.General);
     }
 }
예제 #2
0
 internal static void SendTrack(MtpDeviceHandle handle, string path, ref TrackStruct metadata, ProgressFunction callback, IntPtr data)
 {
     if (LIBMTP_Send_Track_From_File(handle, path, ref metadata, callback, data) != 0)
     {
         LibMtpException.CheckErrorStack(handle);
         throw new LibMtpException(ErrorCode.General, "Could not upload the track");
     }
 }
예제 #3
0
        public List <Track> GetAllTracks(ProgressFunction callback)
        {
            IntPtr ptr = Track.GetTrackListing(Handle, callback, IntPtr.Zero);

            List <Track> tracks = new List <Track>();

            while (ptr != IntPtr.Zero)
            {
                TrackStruct track = (TrackStruct)Marshal.PtrToStructure(ptr, typeof(TrackStruct));
                Track.DestroyTrack(ptr);
                tracks.Add(new Track(track, this));
                ptr = track.next;
            }

            return(tracks);
        }
예제 #4
0
        public List <Track> GetAllTracks(ProgressFunction callback)
        {
            IntPtr ptr = Track.GetTrackListing(Handle, callback, IntPtr.Zero);

            List <Track> tracks = new List <Track>();

            while (ptr != IntPtr.Zero)
            {
                // Destroy the struct after we use it to avoid potential referencing of freed memory.
                TrackStruct track = (TrackStruct)Marshal.PtrToStructure(ptr, typeof(TrackStruct));
                tracks.Add(new Track(track, this));
                Track.DestroyTrack(ptr);
                ptr = track.next;
            }

            return(tracks);
        }
예제 #5
0
 private static extern int LIBMTP_Update_Track_Metadata(MtpDeviceHandle handle, ref TrackStruct metadata);
예제 #6
0
 private static extern int LIBMTP_Send_Track_From_File(MtpDeviceHandle handle, string path, ref TrackStruct track, ProgressFunction callback, IntPtr data);
예제 #7
0
 internal Track(TrackStruct track, MtpDevice device)
 {
     this.device      = device;
     this.trackStruct = track;
 }
예제 #8
0
파일: Track.cs 프로젝트: ptrimble/banshee
 private static extern int LIBMTP_Update_Track_Metadata(MtpDeviceHandle handle, ref TrackStruct metadata);
예제 #9
0
파일: Track.cs 프로젝트: ptrimble/banshee
 private static extern int LIBMTP_Send_Track_From_File(MtpDeviceHandle handle, string path, ref TrackStruct track, ProgressFunction callback, IntPtr data);
예제 #10
0
파일: Track.cs 프로젝트: ptrimble/banshee
 internal static void UpdateTrackMetadata(MtpDeviceHandle handle, ref TrackStruct metadata)
 {
     if (LIBMTP_Update_Track_Metadata (handle, ref metadata) != 0)
         throw new LibMtpException (ErrorCode.General);
 }
예제 #11
0
파일: Track.cs 프로젝트: ptrimble/banshee
 internal static void SendTrack(MtpDeviceHandle handle, string path, ref TrackStruct metadata, ProgressFunction callback, IntPtr data)
 {
     if (LIBMTP_Send_Track_From_File (handle, path, ref metadata, callback, data) != 0)
     {
         LibMtpException.CheckErrorStack (handle);
         throw new LibMtpException (ErrorCode.General, "Could not upload the track");
     }
 }
예제 #12
0
파일: Track.cs 프로젝트: ptrimble/banshee
 internal Track(TrackStruct track, MtpDevice device)
 {
     this.device = device;
     this.trackStruct = track;
 }