Skip to content

Commit

Permalink
Report proper media-source-supported IPP field on numeric InputSlots. #…
Browse files Browse the repository at this point in the history
…859

Windows 11 version 22H2 build 22621.2861 silently fails to add Mopria
auto-discovered printer if it reports a number (a digit as a string)
in media-source-supported field.
If you try to add such a printer using modern control panel, it will
show endless "connecting…" message, and if you add it using old
control panel, it would be added "successfully", but under
"unrecognized" device type, and you won't be able to print on it.

Fix the issue by
    * By comparing also by human-readable InputSlot name
    * By mapping number to "tray-N" string
  • Loading branch information
ValdikSS committed Jan 9, 2024
1 parent 229aee3 commit 47d0ee3
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion cups/ppd-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -1284,7 +1284,9 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
i --, choice ++, map ++)
{
if (!_cups_strncasecmp(choice->choice, "Auto", 4) ||
!_cups_strcasecmp(choice->choice, "Default"))
!_cups_strncasecmp(choice->text, "Auto", 4) ||
!_cups_strcasecmp(choice->choice, "Default") ||
!_cups_strcasecmp(choice->text, "Default"))
pwg_name = "auto";
else if (!_cups_strcasecmp(choice->choice, "Cassette"))
pwg_name = "main";
Expand All @@ -1308,6 +1310,26 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */
pwg_name = "side";
else if (!_cups_strcasecmp(choice->choice, "Roll"))
pwg_name = "main-roll";
else if (!_cups_strcasecmp(choice->choice, "0"))
pwg_name = "tray-1";
else if (!_cups_strcasecmp(choice->choice, "1"))
pwg_name = "tray-2";
else if (!_cups_strcasecmp(choice->choice, "2"))
pwg_name = "tray-3";
else if (!_cups_strcasecmp(choice->choice, "3"))
pwg_name = "tray-4";
else if (!_cups_strcasecmp(choice->choice, "4"))
pwg_name = "tray-5";
else if (!_cups_strcasecmp(choice->choice, "5"))
pwg_name = "tray-6";
else if (!_cups_strcasecmp(choice->choice, "6"))
pwg_name = "tray-7";
else if (!_cups_strcasecmp(choice->choice, "7"))
pwg_name = "tray-8";
else if (!_cups_strcasecmp(choice->choice, "8"))
pwg_name = "tray-9";
else if (!_cups_strcasecmp(choice->choice, "9"))
pwg_name = "tray-10";
else
{
/*
Expand Down

0 comments on commit 47d0ee3

Please sign in to comment.