Index: src/ch/BufferSizeDlg.cpp
===================================================================
diff -u -N -r6df9b4cff81dedf8c5571a98702b584b061eac09 -rcdc76e1a95383dff63a5254aeb8d37035028512c
--- src/ch/BufferSizeDlg.cpp	(.../BufferSizeDlg.cpp)	(revision 6df9b4cff81dedf8c5571a98702b584b061eac09)
+++ src/ch/BufferSizeDlg.cpp	(.../BufferSizeDlg.cpp)	(revision cdc76e1a95383dff63a5254aeb8d37035028512c)
@@ -30,42 +30,41 @@
 /////////////////////////////////////////////////////////////////////////////
 // CBufferSizeDlg dialog
 
-CBufferSizeDlg::CBufferSizeDlg()
-	: ictranslate::CLanguageDialog(CBufferSizeDlg::IDD)
+CBufferSizeDlg::CBufferSizeDlg(chcore::TBufferSizes* pInitialBufferSizes, chcore::TBufferSizes::EBufferType eSelectedBuffer) :
+	ictranslate::CLanguageDialog(IDD_BUFFERSIZE_DIALOG),
+	m_uiDefaultSize(0),
+	m_uiLANSize(0),
+	m_uiCDROMSize(0),
+	m_uiOneDiskSize(0),
+	m_uiTwoDisksSize(0),
+	m_bOnlyDefaultCheck(FALSE),
+	m_eSelectedBuffer(eSelectedBuffer)
 {
-	//{{AFX_DATA_INIT(CBufferSizeDlg)
-	m_uiDefaultSize = 0;
-	m_uiLANSize = 0;
-	m_uiCDROMSize = 0;
-	m_uiOneDiskSize = 0;
-	m_uiTwoDisksSize = 0;
-	m_bOnlyDefaultCheck = FALSE;
-	//}}AFX_DATA_INIT
-	m_iActiveIndex = chcore::TBufferSizes::eBuffer_Default;
+	if (pInitialBufferSizes)
+		m_bsSizes = *pInitialBufferSizes;
 }
 
 void CBufferSizeDlg::DoDataExchange(CDataExchange* pDX)
 {
 	CLanguageDialog::DoDataExchange(pDX);
-	//{{AFX_DATA_MAP(CBufferSizeDlg)
+
 	DDX_Control(pDX, IDC_TWODISKSMULTIPLIER_COMBO, m_ctlTwoDisksMulti);
 	DDX_Control(pDX, IDC_ONEDISKMULTIPLIER_COMBO, m_ctlOneDiskMulti);
 	DDX_Control(pDX, IDC_LANMULTIPLIER_COMBO, m_ctlLANMulti);
 	DDX_Control(pDX, IDC_DEFAULTMULTIPLIER_COMBO, m_ctlDefaultMulti);
 	DDX_Control(pDX, IDC_CDROMMULTIPLIER_COMBO, m_ctlCDROMMulti);
+	DDX_Control(pDX, IDC_BUFFERCOUNT_SPIN, m_ctlBufferCountSpin);
 	DDX_Text(pDX, IDC_DEFAULTSIZE_EDIT, m_uiDefaultSize);
 	DDX_Text(pDX, IDC_LANSIZE_EDIT, m_uiLANSize);
 	DDX_Text(pDX, IDC_CDROMSIZE_EDIT, m_uiCDROMSize);
 	DDX_Text(pDX, IDC_ONEDISKSIZE_EDIT, m_uiOneDiskSize);
 	DDX_Text(pDX, IDC_TWODISKSSIZE_EDIT, m_uiTwoDisksSize);
 	DDX_Check(pDX, IDC_ONLYDEFAULT_CHECK, m_bOnlyDefaultCheck);
-	//}}AFX_DATA_MAP
+	DDX_Text(pDX, IDC_BUFFERCOUNT_EDIT, m_uiBufferCount);
 }
 
 BEGIN_MESSAGE_MAP(CBufferSizeDlg,ictranslate::CLanguageDialog)
-	//{{AFX_MSG_MAP(CBufferSizeDlg)
 	ON_BN_CLICKED(IDC_ONLYDEFAULT_CHECK, OnOnlydefaultCheck)
-	//}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -102,14 +101,18 @@
 	SetTwoDisksSize(m_bsSizes.GetTwoDisksSize());
 	SetCDSize(m_bsSizes.GetCDSize());
 	SetLANSize(m_bsSizes.GetLANSize());
+	m_uiBufferCount = m_bsSizes.GetBufferCount();
 	m_bOnlyDefaultCheck=m_bsSizes.IsOnlyDefault();
 
+	// buffer count handling
+	m_ctlBufferCountSpin.SetRange(1, 1000);
+
 	EnableControls(!m_bsSizes.IsOnlyDefault());
 
 	UpdateData(FALSE);
 
 	// set focus to the requested control
-	switch (m_iActiveIndex)
+	switch (m_eSelectedBuffer)
 	{
 	case chcore::TBufferSizes::eBuffer_Default:
 		GetDlgItem(IDC_DEFAULTSIZE_EDIT)->SetFocus();
@@ -214,6 +217,7 @@
 	m_bsSizes.SetTwoDisksSize(m_uiTwoDisksSize*IndexToValue(m_ctlTwoDisksMulti.GetCurSel()));
 	m_bsSizes.SetCDSize(m_uiCDROMSize*IndexToValue(m_ctlCDROMMulti.GetCurSel()));
 	m_bsSizes.SetLANSize(m_uiLANSize*IndexToValue(m_ctlLANMulti.GetCurSel()));
+	m_bsSizes.SetBufferCount(m_uiBufferCount);
 
 	CLanguageDialog::OnOK();
 }