// --------------------------------------------------------------------------------------------------------------------
// <copyright file="hb_handle_s.cs" company="HandBrake Project (http://handbrake.fr)">
//   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
// </copyright>
// <summary>
//   Defines the hb_handle_s type.
// </summary>
// <auto-generated> Disable Stylecop Warnings for this file  </auto-generated>
// --------------------------------------------------------------------------------------------------------------------

namespace HandBrake.Interop.HbLib
{
    using System;
    using System.Runtime.InteropServices;

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
	public struct hb_handle_s
	{
		public int id;

		/// int
		public int build;

		/// char[32]
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
		public string version;

		/// hb_thread_t*
		public IntPtr update_thread;

		/// int
		public int die;

		/// hb_thread_t*
		public IntPtr main_thread;

		/// int
		public int pid;

		/// hb_list_t*
		public IntPtr list_title;

		/// hb_thread_t*
		public IntPtr scan_thread;

		/// hb_list_t*
		public IntPtr jobs;

		/// hb_job_t*
		public IntPtr current_job;

		/// int
		public int job_count;

		/// int
		public int job_count_permanent;

		/// int
		public int work_die;

		/// int
		public int work_error;

		/// hb_thread_t*
		public IntPtr work_thread;

		/// hb_lock_t*
		public IntPtr state_lock;

		/// hb_state_t->hb_state_s
		public hb_state_s state;

		/// int
		public int paused;

		/// hb_lock_t*
		public IntPtr pause_lock;

		/// int
		public int scanCount;

        // volatile int   scan_die; missing

		/// hb_interjob_t*
		public IntPtr interjob;

        // void *system_sleep_opaque; missing
	}
}
