void addProgressPosition()

in src/main/cpp/launcher/windows/src/Main.c [342:382]


void addProgressPosition(LauncherProperties * props, DWORD add) {
    if(isSilent(props)) return;
    if ( add > 0 ) {
        int64t *mult1 = NULL;
        int64t *mult2 = NULL;
        int64t *currMult = NULL;
        int comp1 = 0;
        int comp2 = 0;
        int goout = 0;

        plus(currentProgressSize, add);
        do {
            multiply(mult1 = newint64_t(totalProgressSize->Low, totalProgressSize->High), lastCheckedStep);
            multiply(mult2 = newint64_t(totalProgressSize->Low, totalProgressSize->High), lastCheckedStep + 1);
            multiply(currMult = newint64_t(currentProgressSize->Low, currentProgressSize->High), steps);
            comp1 = compareInt64t(currMult, mult1);

            if (comp1 == 0) {
                goout = 1;
            } else {
                comp2 = compareInt64t(currMult, mult2);
                if (comp2 == 0) {
                    lastCheckedStep++;
                    goout = 1;
                } else if (comp1 > 0 && comp2 < 0) {
                    goout = 1;
                } else {
                    lastCheckedStep++;
                }
            }
            FREE(mult1);
            FREE(mult2);
            FREE(currMult);
            if(lastCheckedStep >= steps) {
                lastCheckedStep = steps;
                goout = 1;
            }
        } while (!goout);
        SendMessage(hwndPB, PBM_SETPOS, lastCheckedStep, 0);
    }
}