| 649 | #define KEYNAME_FMT "HKCU\\SOFTWARE\\SoftGPU\\setup-%d\\%s" |
| 650 | |
| 651 | void writeSettings() |
| 652 | { |
| 653 | char keyname[MAX_PATH]; |
| 654 | DWORD confdw[MAX_CONF_DW]; |
| 655 | |
| 656 | DWORD settings_level = getSettingsLevel(); |
| 657 | |
| 658 | memset(&confdw[0], 0, sizeof(confdw)); |
| 659 | |
| 660 | settings_item_t *item; |
| 661 | for(item = &settings_cur[0]; item->menu != 0; item++) |
| 662 | { |
| 663 | switch(item->type) |
| 664 | { |
| 665 | case T_CHECKBOX: |
| 666 | case T_RADIO: |
| 667 | DWORD p = item->pos / 32; |
| 668 | DWORD i = item->pos % 32; |
| 669 | if(item->dvalue > 0) |
| 670 | { |
| 671 | confdw[p] |= (1 << i); |
| 672 | } |
| 673 | break; |
| 674 | case T_INPUT_NUM: |
| 675 | case T_DROPDOWN: |
| 676 | sprintf(keyname, KEYNAME_FMT, settings_level, item->name); |
| 677 | registryWriteDWORD(keyname, item->dvalue); |
| 678 | break; |
| 679 | case T_INPUT_STR: |
| 680 | sprintf(keyname, KEYNAME_FMT, (item->menu == INP_PATH) ? SOFTGPU_BUILD : settings_level, item->name); |
| 681 | registryWrite(keyname, item->svalue, WINREG_STR); |
| 682 | break; |
| 683 | } |
| 684 | } |
| 685 | |
| 686 | int j; |
| 687 | for(j = 0; j < MAX_CONF_DW; j++) |
| 688 | { |
| 689 | sprintf(keyname, KEYNAME_FMT "%02d", settings_level, "cfg", j); |
| 690 | registryWriteDWORD(keyname, confdw[j]); |
| 691 | } |
| 692 | } |
| 693 | |
| 694 | BOOL readSettings() |
| 695 | { |
no test coverage detected