Huw Davies : comdlg32: Simplify the DEVNAMES access functions are unify the release.
Alexandre Julliard
julliard at winehq.org
Fri Jan 23 10:06:58 CST 2009
Module: wine
Branch: master
Commit: e2f81f1b33351cad5aa05d31e77cec33a6da34d7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e2f81f1b33351cad5aa05d31e77cec33a6da34d7
Author: Huw Davies <huw at codeweavers.com>
Date: Thu Jan 22 16:49:52 2009 +0000
comdlg32: Simplify the DEVNAMES access functions are unify the release.
---
dlls/comdlg32/printdlg.c | 73 ++++++++++++++++++++++------------------------
1 files changed, 35 insertions(+), 38 deletions(-)
diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c
index 1adbb90..da77362 100644
--- a/dlls/comdlg32/printdlg.c
+++ b/dlls/comdlg32/printdlg.c
@@ -2660,59 +2660,56 @@ static void pagesetup_set_defaultsource(pagesetup_data *data, WORD source)
GlobalUnlock(data->dlga->hDevMode);
}
-static WCHAR *pagesetup_get_drvname(const pagesetup_data *data)
+typedef enum
{
- DEVNAMES *dn;
- int len;
- WCHAR *name;
+ devnames_driver_name,
+ devnames_device_name,
+ devnames_output_name
+} devnames_name;
- dn = GlobalLock(data->dlga->hDevNames);
- len = MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wDriverOffset, -1, NULL, 0);
- name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wDriverOffset, -1, name, len);
- GlobalUnlock(data->dlga->hDevNames);
- return name;
-}
-static void pagesetup_release_drvname(const pagesetup_data *data, WCHAR *name)
+static inline WORD get_devname_offset(DEVNAMES *dn, devnames_name which)
{
- HeapFree(GetProcessHeap(), 0, name);
+ switch(which)
+ {
+ case devnames_driver_name: return dn->wDriverOffset;
+ case devnames_device_name: return dn->wDeviceOffset;
+ case devnames_output_name: return dn->wOutputOffset;
+ }
+ ERR("Souldn't be here\n");
+ return 0;
}
-static WCHAR *pagesetup_get_devname(const pagesetup_data *data)
+static WCHAR *pagesetup_get_a_devname(const pagesetup_data *data, devnames_name which)
{
DEVNAMES *dn;
int len;
WCHAR *name;
dn = GlobalLock(data->dlga->hDevNames);
- len = MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wDeviceOffset, -1, NULL, 0);
+ len = MultiByteToWideChar(CP_ACP, 0, (char*)dn + get_devname_offset(dn, which), -1, NULL, 0);
name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wDeviceOffset, -1, name, len);
+ MultiByteToWideChar(CP_ACP, 0, (char*)dn + get_devname_offset(dn, which), -1, name, len);
GlobalUnlock(data->dlga->hDevNames);
return name;
}
-static void pagesetup_release_devname(const pagesetup_data *data, WCHAR *name)
+static WCHAR *pagesetup_get_drvname(const pagesetup_data *data)
{
- HeapFree(GetProcessHeap(), 0, name);
+ return pagesetup_get_a_devname(data, devnames_driver_name);
}
-static WCHAR *pagesetup_get_portname(const pagesetup_data *data)
+static WCHAR *pagesetup_get_devname(const pagesetup_data *data)
{
- DEVNAMES *dn;
- int len;
- WCHAR *name;
+ return pagesetup_get_a_devname(data, devnames_device_name);
+}
- dn = GlobalLock(data->dlga->hDevNames);
- len = MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wOutputOffset, -1, NULL, 0);
- name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, (char*)dn + dn->wOutputOffset, -1, name, len);
- GlobalUnlock(data->dlga->hDevNames);
- return name;
+static WCHAR *pagesetup_get_portname(const pagesetup_data *data)
+{
+ return pagesetup_get_a_devname(data, devnames_output_name);
}
-static void pagesetup_release_portname(const pagesetup_data *data, WCHAR *name)
+static void pagesetup_release_a_devname(const pagesetup_data *data, WCHAR *name)
{
HeapFree(GetProcessHeap(), 0, name);
}
@@ -2860,8 +2857,8 @@ static BOOL pagesetup_update_papersize(pagesetup_data *data)
end:
HeapFree(GetProcessHeap(), 0, words);
HeapFree(GetProcessHeap(), 0, points);
- pagesetup_release_portname(data, portname);
- pagesetup_release_devname(data, devname);
+ pagesetup_release_a_devname(data, portname);
+ pagesetup_release_a_devname(data, devname);
pagesetup_release_devmode(data, dm);
return retval;
@@ -2991,8 +2988,8 @@ static void pagesetup_init_combos(HWND hDlg, pagesetup_data *data)
PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb2, devname, portname, dm);
PRINTDLG_SetUpPaperComboBoxW(hDlg, cmb3, devname, portname, dm);
- pagesetup_release_portname(data, portname);
- pagesetup_release_devname(data, devname);
+ pagesetup_release_a_devname(data, portname);
+ pagesetup_release_a_devname(data, devname);
pagesetup_release_devmode(data, dm);
}
@@ -3020,9 +3017,9 @@ static void pagesetup_change_printer_dialog(HWND hDlg, pagesetup_data *data)
portname = pagesetup_get_portname(data);
prnt.hDevNames = 0;
PRINTDLG_CreateDevNamesW(&prnt.hDevNames, drvname, devname, portname);
- pagesetup_release_portname(data, portname);
- pagesetup_release_devname(data, devname);
- pagesetup_release_drvname(data, drvname);
+ pagesetup_release_a_devname(data, portname);
+ pagesetup_release_a_devname(data, devname);
+ pagesetup_release_a_devname(data, drvname);
tmp_dm = pagesetup_get_devmode(data);
prnt.hDevMode = GlobalAlloc(GMEM_MOVEABLE, tmp_dm->dmSize + tmp_dm->dmDriverExtra);
@@ -3259,7 +3256,7 @@ static void pagesetup_printer_properties(HWND hDlg, pagesetup_data *data)
if (!OpenPrinterW(devname, &hprn, NULL))
{
FIXME("Call to OpenPrinter did not succeed!\n");
- pagesetup_release_devname(data, devname);
+ pagesetup_release_a_devname(data, devname);
return;
}
@@ -3267,7 +3264,7 @@ static void pagesetup_printer_properties(HWND hDlg, pagesetup_data *data)
DocumentPropertiesW(hDlg, hprn, devname, dm, dm, DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT);
pagesetup_set_devmode(data, dm);
pagesetup_release_devmode(data, dm);
- pagesetup_release_devname(data, devname);
+ pagesetup_release_a_devname(data, devname);
ClosePrinter(hprn);
/* Changing paper */
More information about the wine-cvs
mailing list