2022-07-18 11:13:49 +00:00
|
|
|
|
/*
|
|
|
|
|
* monitor.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: 18 июл. 2022 г.
|
|
|
|
|
* Author: alexander
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
#include "monitor.h"
|
|
|
|
|
#include "rxrandr.h"
|
|
|
|
|
|
|
|
|
|
static bool checkMonitor(Monitors *dbMonitors, x_info *pcMonitors)
|
|
|
|
|
{
|
|
|
|
|
if (!dbMonitors->size || !pcMonitors->count ||
|
|
|
|
|
!(dbMonitors->size == pcMonitors->count))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool compare = false;
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < dbMonitors->size; ++i)
|
|
|
|
|
{
|
|
|
|
|
for (size_t j = 0; j < pcMonitors->count; ++j)
|
|
|
|
|
{
|
|
|
|
|
if (!strcmp(pcMonitors->monitor[j].name, dbMonitors->monitor[i]->data[1]))
|
|
|
|
|
{
|
|
|
|
|
compare = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!compare)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
compare = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Monitors *loadMonitors()
|
|
|
|
|
{
|
|
|
|
|
Monitors *dbMonitors = dbGetMonitorsList();
|
|
|
|
|
x_info *pcMonitors = getXInfo();
|
|
|
|
|
if (!checkMonitor(dbMonitors, pcMonitors)) // Если строки не равны, произвести перезапись в БД
|
|
|
|
|
{
|
2022-07-18 15:38:38 +00:00
|
|
|
|
if (dbMonitors)
|
|
|
|
|
dbFreeMonitors(dbMonitors);
|
|
|
|
|
|
2022-07-18 11:13:49 +00:00
|
|
|
|
if (!deleteAllMonitors())
|
|
|
|
|
{
|
|
|
|
|
fprintf(stderr, "Не удалось удалить записи мониторов из БД\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < pcMonitors->count; ++i)
|
|
|
|
|
{
|
|
|
|
|
dbAddMonitor(pcMonitors->monitor[i].name, pcMonitors->monitor[i].primary);
|
|
|
|
|
}
|
|
|
|
|
freeXInfo(pcMonitors);
|
|
|
|
|
|
|
|
|
|
return dbGetMonitorsList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
freeXInfo(pcMonitors);
|
|
|
|
|
|
|
|
|
|
return dbMonitors;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void freeMonitors(Monitors *monitors)
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < monitors->size; ++i)
|
|
|
|
|
{
|
|
|
|
|
free(monitors->monitor[i]->data[2]);
|
|
|
|
|
free(monitors->monitor[i]->data[3]);
|
|
|
|
|
free(monitors->monitor[i]->data);
|
|
|
|
|
free(monitors->monitor[i]);
|
|
|
|
|
}
|
|
|
|
|
free(monitors);
|
|
|
|
|
}
|