remove update_param_range() clipping, replace with silent clipping

pull/58/head
IanSB 2019-03-23 03:25:24 +00:00
rodzic 0bd9863a00
commit e7c680fdfd
3 zmienionych plików z 14 dodań i 34 usunięć

Wyświetl plik

@ -63,25 +63,6 @@ static geometry_t default_geometry;
static geometry_t mode7_geometry;
static int scaling = 0;
static void update_param_range() {
int max;
// Set the range of the H_WIDTH param based on FB_WIDTH
max = geometry->fb_width;
params[H_WIDTH].max = max;
if (geometry->h_width > max) {
geometry->h_width = max;
}
// Set the range of the V_HEIGHT param based on FB_HEIGHT
max = geometry->fb_height;
params[V_HEIGHT].max = max;
if (geometry->v_height > max) {
geometry->v_height = max;
}
}
void geometry_init(int version) {
// These are Beeb specific defaults so the geometry property can be ommitted
mode7_geometry.v_offset = 128;
@ -129,8 +110,6 @@ void geometry_init(int version) {
void geometry_set_mode(int mode) {
mode7 = mode;
geometry = mode ? &mode7_geometry : &default_geometry;
update_param_range();
}
int geometry_get_value(int num) {
@ -199,15 +178,12 @@ void geometry_set_value(int num, int value) {
break;
case FB_WIDTH:
geometry->fb_width = value;
update_param_range();
break;
case FB_HEIGHT:
geometry->fb_height = value;
update_param_range();
break;
case FB_HEIGHTX2:
geometry->fb_heightx2 = value;
update_param_range();
break;
case FB_BPP:
geometry->fb_bpp = value;
@ -260,6 +236,14 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
capinfo->bpp = geometry->fb_bpp;
capinfo->px_sampling = geometry->px_sampling;
if (capinfo->chars_per_line > (geometry->fb_width >> 3)) {
capinfo->chars_per_line = geometry->fb_width >> 3;
}
if (capinfo->nlines > geometry->fb_height) {
capinfo->nlines = geometry->fb_height;
}
uint32_t h_size = (*PIXELVALVE2_HORZB) & 0xFFFF;
uint32_t v_size = (*PIXELVALVE2_VERTB) & 0xFFFF;
@ -277,7 +261,6 @@ void geometry_get_fb_params(capture_info_t *capinfo) {
}
int adjusted_width = mode7 ? geometry->h_width * 4 / 3 : geometry->h_width; // workaround mode 7 width so it looks like other modes
int hscale = h_size43 / adjusted_width;
int hborder = (h_size - (adjusted_width * hscale)) / hscale;
int hborder43 = (h_size43 - (adjusted_width * hscale)) / hscale;

Wyświetl plik

@ -1332,7 +1332,7 @@ void get_props_sample_geometry(char *buffer)
{
char *prop;
// Initialize the CPLD sampling points
for (int p = 0; p < 3; p++) { //reads geometry twice to workaround limiting problem
for (int p = 0; p < 2; p++) { //reads geometry twice to workaround limiting problem
for (int m7 = 0; m7 <= 1; m7++) {
char *propname;
if (m7) {
@ -1352,9 +1352,7 @@ void get_props_sample_geometry(char *buffer)
if (prop) {
cpld->set_mode(m7);
geometry_set_mode(m7);
if (p != 1) {
log_info("config.txt: %s = %s", propname, prop);
}
char *prop2 = strtok(prop, ",");
int i = 0;
while (prop2) {
@ -1373,9 +1371,7 @@ void get_props_sample_geometry(char *buffer)
log_info("cpld: %s = %d", param->name, val);
cpld->set_value(param->key, val);
} else {
if (p != 1) {
log_info("geometry: %s = %d", param->name, val);
}
geometry_set_value(param->key, val);
}
prop2 = strtok(NULL, ",");

Wyświetl plik

@ -81,7 +81,8 @@ rgb_to_fb:
str r2, param_v_adjust
ldr r2, [r0, #O_FB_BASE]
str r2, param_framebuffer0
// Sanity check chars_per_line <= fb_width / 8
// Sanity check chars_per_line <= fb_width
ldr r3, param_fb_width
lsr r3, r3, #3
ldr r2, param_chars_per_line