Huw Davies : wineps: Add a helper to find an input slot.

Alexandre Julliard julliard at winehq.org
Mon Apr 16 13:35:46 CDT 2012


Module: wine
Branch: master
Commit: 61efdbfd5f1e840d06545bf1c36c1372b145acb6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=61efdbfd5f1e840d06545bf1c36c1372b145acb6

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Apr 16 13:18:37 2012 +0100

wineps: Add a helper to find an input slot.

---

 dlls/wineps.drv/driver.c |   19 +++++++++++++------
 dlls/wineps.drv/ps.c     |   13 +++----------
 dlls/wineps.drv/psdrv.h  |    2 ++
 3 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c
index 926daf5..9e2753d 100644
--- a/dlls/wineps.drv/driver.c
+++ b/dlls/wineps.drv/driver.c
@@ -45,6 +45,17 @@ static inline int paper_size_from_points( float size )
     return size * 254 / 72;
 }
 
+INPUTSLOT *find_slot( PPD *ppd, PSDRV_DEVMODE *dm )
+{
+    INPUTSLOT *slot;
+
+    LIST_FOR_EACH_ENTRY( slot, &ppd->InputSlots, INPUTSLOT, entry )
+        if (slot->WinBin == dm->dmPublic.u1.s1.dmDefaultSource)
+            return slot;
+
+    return NULL;
+}
+
 /************************************************************************
  *
  *		PSDRV_MergeDevmodes
@@ -117,13 +128,9 @@ void PSDRV_MergeDevmodes( PSDRV_DEVMODE *dm1, PSDRV_DEVMODE *dm2, PRINTERINFO *p
 
     if (dm2->dmPublic.dmFields & DM_DEFAULTSOURCE)
     {
-        INPUTSLOT *slot;
-
-        LIST_FOR_EACH_ENTRY( slot, &pi->ppd->InputSlots, INPUTSLOT, entry )
-	    if(slot->WinBin == dm2->dmPublic.u1.s1.dmDefaultSource)
-	        break;
+        INPUTSLOT *slot = find_slot( pi->ppd, dm2 );
 
-        if (&slot->entry != &pi->ppd->InputSlots)
+        if (slot)
         {
 	    dm1->dmPublic.u1.s1.dmDefaultSource = dm2->dmPublic.u1.s1.dmDefaultSource;
 	    TRACE("Changing bin to '%s'\n", slot->FullName);
diff --git a/dlls/wineps.drv/ps.c b/dlls/wineps.drv/ps.c
index 1e30736..1501d33 100644
--- a/dlls/wineps.drv/ps.c
+++ b/dlls/wineps.drv/ps.c
@@ -301,7 +301,7 @@ INT PSDRV_WriteHeader( PHYSDEV dev, LPCWSTR title )
 {
     PSDRV_PDEVICE *physDev = get_psdrv_dev( dev );
     char *buf, *escaped_title;
-    INPUTSLOT *slot;
+    INPUTSLOT *slot = find_slot( physDev->pi->ppd, physDev->Devmode );
     PAGESIZE *page;
     DUPLEX *duplex;
     int win_duplex;
@@ -350,15 +350,8 @@ INT PSDRV_WriteHeader( PHYSDEV dev, LPCWSTR title )
         write_spool(dev, copies_buf, strlen(copies_buf));
     }
 
-    LIST_FOR_EACH_ENTRY( slot, &physDev->pi->ppd->InputSlots, INPUTSLOT, entry ) {
-        if(slot->WinBin == physDev->Devmode->dmPublic.u1.s1.dmDefaultSource) {
-	    if(slot->InvocationString) {
-	        PSDRV_WriteFeature(dev, "*InputSlot", slot->Name,
-			     slot->InvocationString);
-		break;
-	    }
-	}
-    }
+    if (slot && slot->InvocationString)
+        PSDRV_WriteFeature( dev, "*InputSlot", slot->Name, slot->InvocationString );
 
     LIST_FOR_EACH_ENTRY(page, &physDev->pi->ppd->PageSizes, PAGESIZE, entry) {
         if(page->WinPage == physDev->Devmode->dmPublic.u1.s1.dmPaperSize) {
diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h
index 2ffe28a..911c1e4 100644
--- a/dlls/wineps.drv/psdrv.h
+++ b/dlls/wineps.drv/psdrv.h
@@ -401,6 +401,8 @@ extern HINSTANCE PSDRV_hInstance DECLSPEC_HIDDEN;
 extern HANDLE PSDRV_Heap DECLSPEC_HIDDEN;
 extern char *PSDRV_ANSIVector[256] DECLSPEC_HIDDEN;
 
+extern INPUTSLOT *find_slot( PPD *ppd, PSDRV_DEVMODE *dm );
+
 /* GDI driver functions */
 extern BOOL PSDRV_Arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
                        INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list