Proposed widget type: image

Scott Meharg <[email protected]> Wed, 22 Jan 2014 16:28:54 -0600
Newsgroups gmane.comp.sysutils.lcdproc
Message-ID <CAOgbcjRYPcTysY65G2KPpxdjqwovw8zfYmYMt1ZfbFcGAtHfmA@mail.gmail.com>
--047d7b5db9c4656c9504f096a67e
Content-Type: multipart/alternative; boundary=047d7b5db9c4656c8f04f096a67c

--047d7b5db9c4656c8f04f096a67c
Content-Type: text/plain; charset=ISO-8859-1

If interested, attached is a patch that adds a new widget type for
displaying images files on graphic LCDs that use the glcd driver.

Only PNG image files are supported.  glcd_render_image attempts to
transform the image to 24 bits/pixel and transparency is removed by
compositing against a white background.  Any pixel not white will be turned
on on the LCD.

If need be I will work on updating the documentation.

Would this be considered a new version of the API?

--047d7b5db9c4656c8f04f096a67c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">If interested, attached is a patch that adds a new widget =
type for displaying images files on graphic LCDs that use the glcd driver.<=
div><br></div><div>Only PNG image files are supported. =A0glcd_render_image=
 attempts to transform the image to 24 bits/pixel and transparency is remov=
ed by compositing against a white background. =A0Any pixel not white will b=
e turned on on the LCD.</div>
<div><br></div><div>If need be I will work on updating the documentation.</=
div><div><br></div><div>Would this be considered a new version of the API?<=
/div><div><br></div><div><br></div></div>

--047d7b5db9c4656c8f04f096a67c--
--047d7b5db9c4656c9504f096a67e
Content-Type: text/x-patch; charset=US-ASCII; name="widget_image.patch"
Content-Disposition: attachment; filename="widget_image.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hqr5w6pi0

ZGlmZiAtdXJOIC1YIC4vbGNkcHJvYy9kaWZmX2lnbm9yZSAuL2xjZHByb2Mvc2VydmVyL2NvbW1h
bmRzL3dpZGdldF9jb21tYW5kcy5jIC4vbW9kaWZpZWQvc2VydmVyL2NvbW1hbmRzL3dpZGdldF9j
b21tYW5kcy5jCi0tLSAuL2xjZHByb2Mvc2VydmVyL2NvbW1hbmRzL3dpZGdldF9jb21tYW5kcy5j
CTIwMTItMDItMjIgMTY6MjU6MzIuMDAwMDAwMDAwIC0wNjAwCisrKyAuL21vZGlmaWVkL3NlcnZl
ci9jb21tYW5kcy93aWRnZXRfY29tbWFuZHMuYwkyMDE0LTAxLTIyIDE0OjM4OjM0LjE1MTM5NDM0
NyAtMDYwMApAQCAtNDQwLDYgKzQ0MCw0MiBAQAogCQkJc29ja19zZW5kX3N0cmluZyhjLT5zb2Nr
LCAic3VjY2Vzc1xuIik7CiAJCX0KIAkJYnJlYWs7CisJY2FzZSBXSURfSU1BR0U6CQkvKiBJbWFn
ZSB0YWtlcyB4LCB5LCA8aW1hZ2VfZmlsZW5hbWU+ICovCisJCWlmIChhcmdjICE9IGkgKyAzKQor
CQkJc29ja19zZW5kX2Vycm9yKGMtPnNvY2ssICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzXG4i
KTsKKwkJZWxzZSB7CisJCQkvKiBGb3IgaW1hZ2VzIGxldCdzIGFsbG93IG5lZ2F0aXZlIGNvb3Jk
aW5hdGVzICovCisJCQkvKiBUaGlzIHdpbGwgYXNzdW1lIHRoZSBkcml2ZXIgd2lsbCBoYW5kbGUg
aXQgKi8KKwkJCQorCQkJLyogdGhpcyBwcm9iYWJseSBuZWVkcyB0byBiZSBkb25lIGJldHRlci4u
LgorCQkJICogaWYgdGhlIGZpcnN0IGNoYXIgaXMgJy0nIHRoZW4gdGVzdCB0aGUgbmV4dAorCQkJ
ICogZm9yIGEgZGlnaXQuCisJCQkgKi8KKwkJCWludCBqeCA9IDA7CisJCQlpbnQgankgPSAwOwor
CQkJCisJCQlpZiAoYXJndltpXVswXSA9PSAnLScpCisJCQkJangrKzsKKwkJCWlmIChhcmd2W2kr
MV1bMF0gPT0gJy0nKQorCQkJCWp5Kys7CisJCQkJCQkJCisJCQlpZiAoKCFpc2RpZ2l0KChpbnQp
IGFyZ3ZbaV1banhdKSkgfHwKKwkJCSAgICAoIWlzZGlnaXQoKGludCkgYXJndltpICsgMV1banld
KSkpIHsKKwkJCQlzb2NrX3NlbmRfZXJyb3IoYy0+c29jaywgIkludmFsaWQgY29vcmRpbmF0ZXNc
biIpOworCQkJfSBlbHNlIHsKKwkJCQl4ID0gYXRvaShhcmd2W2ldKTsKKwkJCQl5ID0gYXRvaShh
cmd2W2kgKyAxXSk7CisJCQkJdy0+eCA9IHg7CisJCQkJdy0+eSA9IHk7CisJCQkJdy0+dGV4dCA9
IHN0cmR1cChhcmd2W2kgKyAyXSk7CisJCQkJaWYgKHctPnRleHQgPT0gTlVMTCkgeworCQkJCQly
ZXBvcnQoUlBUX1dBUk5JTkcsICJ3aWRnZXRfc2V0X2Z1bmM6IEFsbG9jYXRpb24gZXJyb3IiKTsK
KwkJCQkJcmV0dXJuIC0xOworCQkJCX0JCisJCQkJc29ja19zZW5kX3N0cmluZyhjLT5zb2NrLCAi
c3VjY2Vzc1xuIik7CisJCQl9CisJCX0KKwkJYnJlYWs7CiAJY2FzZSBXSURfTk9ORToKIAlkZWZh
dWx0OgogCQlzb2NrX3NlbmRfZXJyb3IoYy0+c29jaywgIldpZGdldCBoYXMgbm8gdHlwZVxuIik7
CmRpZmYgLXVyTiAtWCAuL2xjZHByb2MvZGlmZl9pZ25vcmUgLi9sY2Rwcm9jL3NlcnZlci9kcml2
ZXIuYyAuL21vZGlmaWVkL3NlcnZlci9kcml2ZXIuYwotLS0gLi9sY2Rwcm9jL3NlcnZlci9kcml2
ZXIuYwkyMDEyLTA5LTAxIDE2OjI0OjM5LjAwMDAwMDAwMCAtMDUwMAorKysgLi9tb2RpZmllZC9z
ZXJ2ZXIvZHJpdmVyLmMJMjAxNC0wMS0yMiAxNDowNzoyNS40NTExNTgwNzYgLTA2MDAKQEAgLTcy
LDYgKzcyLDcgQEAKIAl7ICJvdXRwdXQiLCAgICAgICAgICAgICBvZmZzZXRvZihEcml2ZXIsIG91
dHB1dCksICAgICAgICAgICAgIDAgfSwKIAl7ICJnZXRfa2V5IiwgICAgICAgICAgICBvZmZzZXRv
ZihEcml2ZXIsIGdldF9rZXkpLCAgICAgICAgICAgIDAgfSwKIAl7ICJnZXRfaW5mbyIsICAgICAg
ICAgICBvZmZzZXRvZihEcml2ZXIsIGdldF9pbmZvKSwgICAgICAgICAgIDAgfSwKKwl7ICJpbWFn
ZSIsICAgICAgICAgICAgICBvZmZzZXRvZihEcml2ZXIsIGltYWdlKSwgICAgICAgICAgICAgIDAg
fSwKIAl7IE5VTEwsIDAsIDAgfQogfTsKIApkaWZmIC11ck4gLVggLi9sY2Rwcm9jL2RpZmZfaWdu
b3JlIC4vbGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9nbGNkX2Rydi5jIC4vbW9kaWZpZWQvc2VydmVy
L2RyaXZlcnMvZ2xjZF9kcnYuYwotLS0gLi9sY2Rwcm9jL3NlcnZlci9kcml2ZXJzL2dsY2RfZHJ2
LmMJMjAxMy0wNS0wNCAwOTozMToxNS4wMDAwMDAwMDAgLTA1MDAKKysrIC4vbW9kaWZpZWQvc2Vy
dmVyL2RyaXZlcnMvZ2xjZF9kcnYuYwkyMDE0LTAxLTIyIDE1OjE2OjAwLjE4MzU5NjMzOCAtMDYw
MApAQCAtNzY2LDMgKzc2NiwxMSBAQAogCiAJcmV0dXJuIGtleXN0cjsKIH0KKworI2lmZGVmIEhB
VkVfTElCUE5HCitNT0RVTEVfRVhQT1JUIHZvaWQKK2dsY2RfaW1hZ2UoRHJpdmVyICpkcnZ0aGlz
LCBpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIgKmltYWdlZmlsZW5hbWUpCit7CisJZ2xjZF9yZW5k
ZXJfaW1hZ2UoZHJ2dGhpcywgeCwgeSwgaW1hZ2VmaWxlbmFtZSk7Cit9CisjZW5kaWYgLyogSEFW
RV9MSUJQTkcgKi8KZGlmZiAtdXJOIC1YIC4vbGNkcHJvYy9kaWZmX2lnbm9yZSAuL2xjZHByb2Mv
c2VydmVyL2RyaXZlcnMvZ2xjZF9kcnYuaCAuL21vZGlmaWVkL3NlcnZlci9kcml2ZXJzL2dsY2Rf
ZHJ2LmgKLS0tIC4vbGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9nbGNkX2Rydi5oCTIwMTEtMTItMDMg
MTQ6MTA6NDEuMDAwMDAwMDAwIC0wNjAwCisrKyAuL21vZGlmaWVkL3NlcnZlci9kcml2ZXJzL2ds
Y2RfZHJ2LmgJMjAxNC0wMS0yMiAxNToxNTo1Ni45MjAwMTM3MjIgLTA2MDAKQEAgLTI3LDQgKzI3
LDkgQEAKIE1PRFVMRV9FWFBPUlQgdm9pZCBnbGNkX291dHB1dChEcml2ZXIgKmRydnRoaXMsIGlu
dCB2YWx1ZSk7CiAKIE1PRFVMRV9FWFBPUlQgY29uc3QgY2hhciAqZ2xjZF9nZXRfa2V5KERyaXZl
ciAqZHJ2dGhpcyk7CisKKyNpZmRlZiBIQVZFX0xJQlBORworTU9EVUxFX0VYUE9SVCB2b2lkIGds
Y2RfaW1hZ2UoRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIgKmltYWdl
ZmlsZW5hbWUpOworI2VuZGlmCisKICNlbmRpZgpkaWZmIC11ck4gLVggLi9sY2Rwcm9jL2RpZmZf
aWdub3JlIC4vbGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9nbGNkLXJlbmRlci5jIC4vbW9kaWZpZWQv
c2VydmVyL2RyaXZlcnMvZ2xjZC1yZW5kZXIuYwotLS0gLi9sY2Rwcm9jL3NlcnZlci9kcml2ZXJz
L2dsY2QtcmVuZGVyLmMJMjAxMy0xMi0yNCAxMTo1Mzo1NS4wMDAwMDAwMDAgLTA2MDAKKysrIC4v
bW9kaWZpZWQvc2VydmVyL2RyaXZlcnMvZ2xjZC1yZW5kZXIuYwkyMDE0LTAxLTIyIDE1OjIzOjAy
Ljk5Mzk0MTI4NiAtMDYwMApAQCAtMjMsNiArMjMsMTEgQEAKICNpbmNsdWRlIEZUX0ZSRUVUWVBF
X0gKICNlbmRpZgogCisjaWZkZWYgSEFWRV9MSUJQTkcKKyNkZWZpbmUgUE5HX1NLSVBfU0VUSk1Q
X0NIRUNLCisjaW5jbHVkZSA8cG5nLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgImxjZC5oIgogI2lu
Y2x1ZGUgInJlcG9ydC5oIgogI2luY2x1ZGUgImdsY2QtbG93LmgiCkBAIC00MzIsMyArNDM3LDE1
MSBAQAogCQlweCsrOwogCX0KIH0KKworI2lmZGVmIEhBVkVfTElCUE5HCisvKioKKyAqIERyYXcg
dGhlIFBORyBpbWFnZSB0byB0aGUgZnJhbWUgYnVmZmVyLgorICogQ3VycmVubHR5IG9ubHkgUE5H
IGZpbGVzIGFyZSBzdXBwb3J0ZWQgdGhhdCBjYW4gYmUgc3VjY2Vzc2Z1bGx5IAorICogY29udmVy
dGVkIHRvIDI0IGJpdHMvcGl4ZWwgUkdCIGZvcm1hdC4KKyAqIAorICogXHBhcmFtIGRydnRoaXMg
ICAgICAgICAgUG9pbnRlciB0byBkcml2ZXIgc3RydWN0dXJlLgorICogXHBhcmFtIHggICAgICAg
ICAgICAgICAgTGVmdCBwaXhlbCBwb3NpdGlvbiB0byBzdGFydCBkcmF3aW5nLgorICogXHBhcmFt
IHkgICAgICAgICAgICAgICAgVG9wIHBpeGVsIHBvc2l0aW9uIHRvIHN0YXJ0IGRyYXdpbmcuCisg
KiBccGFyYW0gaW1hZ2VmaWxlbmFtZSAgICBGaWxlIG5hbWUgb2YgaW1hZ2UgdG8gbG9hZC4KKyAq
LworaW50CitnbGNkX3JlbmRlcl9pbWFnZShEcml2ZXIgKmRydnRoaXMsIGludCB4LCBpbnQgeSwg
Y29uc3QgY2hhciAqaW1hZ2VmaWxlbmFtZSkKK3sKKwlQcml2YXRlRGF0YSAqcCA9IGRydnRoaXMt
PnByaXZhdGVfZGF0YTsKKwkKKwlwbmdfc3RydWN0cCBwbmdfcHRyOworCXBuZ19pbmZvcCBpbmZv
X3B0cjsKKwl1bnNpZ25lZCBpbnQgc2lnX3JlYWQgPSAwOworCUZJTEUgKmZwOworCXVuc2lnbmVk
IGNoYXIgaGVhZGVyWzhdOworCQorCWludCBwbmdfdHJhbnNmb3JtczsKKwlwbmdfY29sb3JfMTYg
YmFja2dyb3VuZF9jb2xvcjsKKworCWlmICgoZnAgPSBmb3BlbihpbWFnZWZpbGVuYW1lLCAicmIi
KSkgPT0gTlVMTCkgeworCQlyZXBvcnQoUlBUX0VSUiwgIiVzOiBVbmFibGUgdG8gb3BlbiAlcyIs
IGRydnRoaXMtPm5hbWUsIGltYWdlZmlsZW5hbWUpOworCQlyZXR1cm4gLTE7CisJfQorCQorCS8q
IENoZWNrIGZvciBQTkcgc2lnbmF0dXJlICovCisJc2lnX3JlYWQgPSBmcmVhZChoZWFkZXIsIDEs
IDgsIGZwKTsKKwlpZiAocG5nX3NpZ19jbXAoaGVhZGVyLCAwLCBzaWdfcmVhZCkgIT0gMCkgewor
CQlyZXBvcnQoUlBUX0VSUiwgIiVzOiBGaWxlIG5vdCByZWNvZ25pemVkIGFzIGEgdmFsaWQgUE5H
IGZpbGUhICAlcyIKKwkJCSwgZHJ2dGhpcy0+bmFtZSwgaW1hZ2VmaWxlbmFtZSk7CisJCXJldHVy
biAtMTsKKwl9CisJCisJcG5nX3B0ciA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBO
R19WRVJfU1RSSU5HLCBOVUxMLCBOVUxMLCBOVUxMKTsKKwlpZiAocG5nX3B0ciA9PSBOVUxMKQor
CXsKKwkJcmVwb3J0KFJQVF9FUlIsICIlczogSW1hZ2UgZmlsZSAlc1xuIiwgZHJ2dGhpcy0+bmFt
ZSwgaW1hZ2VmaWxlbmFtZSk7CisJCXJlcG9ydChSUFRfRVJSLCAiJXM6IHBuZ19jcmVhdGVfcmVh
ZF9zdHJ1Y3QgZmFpbGVkISIsIGRydnRoaXMtPm5hbWUpOworCQlmY2xvc2UoZnApOworCQlyZXR1
cm4gLTE7CisJfQorCisJaW5mb19wdHIgPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KHBuZ19wdHIp
OworCWlmIChpbmZvX3B0ciA9PSBOVUxMKQorCXsKKwkJcmVwb3J0KFJQVF9FUlIsICIlczogSW1h
Z2UgZmlsZSAlc1xuIiwgZHJ2dGhpcy0+bmFtZSwgaW1hZ2VmaWxlbmFtZSk7CisJCXJlcG9ydChS
UFRfRVJSLCAiJXM6IHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QgZmFpbGVkISIsIGRydnRoaXMtPm5h
bWUpOworCQlmY2xvc2UoZnApOworCQlwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmcG5nX3B0ciwg
cG5nX2luZm9wcF9OVUxMLCBwbmdfaW5mb3BwX05VTEwpOworCQlyZXR1cm4gLTE7CisJfQorCisJ
LyogU2V0IGVycm9yIGhhbmRsaW5nLiBSRVFVSVJFRCB1bmxlc3MgeW91IHNldCB1cCB5b3VyIG93
biBlcnJvciBoYW5kbGVycyBpbgorCSAqIHRoZSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KCkKKwkg
Ki8KKwlpZiAoc2V0am1wKHBuZ19qbXBidWYocG5nX3B0cikpKQorCXsKKwkJLyogRnJlZSBhbGwg
b2YgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIHBuZ19wdHIgYW5kIGluZm9fcHRyICov
CisJCXBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIHBuZ19pbmZv
cHBfTlVMTCk7CisJCWZjbG9zZShmcCk7CisJCS8qIElmIHdlIGdldCBoZXJlLCB3ZSBoYWQgYSBw
cm9ibGVtIHJlYWRpbmcgdGhlIGZpbGUgKi8KKwkJcmVwb3J0KFJQVF9FUlIsICIlczogSW1hZ2Ug
ZmlsZSAlc1xuIiwgZHJ2dGhpcy0+bmFtZSwgaW1hZ2VmaWxlbmFtZSk7CisJCXJlcG9ydChSUFRf
RVJSLCAiJXM6IGZhaWxlZCB0byByZWFkIG9yIHByb2Nlc3MhIiwgZHJ2dGhpcy0+bmFtZSk7CisJ
CXJldHVybiAoLTEpOworCX0KKworCS8qIFNldCB1cCB0aGUgaW5wdXQgY29udHJvbCAqLworCXBu
Z19pbml0X2lvKHBuZ19wdHIsIGZwKTsKKworCS8qIFdlIGhhdmUgYWxyZWFkeSByZWFkIHNvbWUg
b2YgdGhlIHNpZ25hdHVyZSBzbyBsZXQgbGlicG5nIGtub3cuICovCisJcG5nX3NldF9zaWdfYnl0
ZXMocG5nX3B0ciwgc2lnX3JlYWQpOworCQorCS8qIFNldCBiYWNrZ3JvdW5kIHRvIHdoaXRlIHRv
IHJlbW92ZSB0aGUgYWxwaGEgY2hhbm5lbC4gKi8KKwliYWNrZ3JvdW5kX2NvbG9yLmluZGV4ID0g
MDsKKwliYWNrZ3JvdW5kX2NvbG9yLnJlZCA9IDI1NTsKKwliYWNrZ3JvdW5kX2NvbG9yLmdyZWVu
ID0gMjU1OworCWJhY2tncm91bmRfY29sb3IuYmx1ZSA9IDI1NTsKKwliYWNrZ3JvdW5kX2NvbG9y
LmdyYXkgPSAwOworCXBuZ19zZXRfYmFja2dyb3VuZChwbmdfcHRyLCAmYmFja2dyb3VuZF9jb2xv
ciwgUE5HX0JBQ0tHUk9VTkRfR0FNTUFfU0NSRUVOLCAwLCAxKTsKKwkJCisJLyogVHJhbnNmb3Jt
IHRoZSBQTkcgdG8gOC1iaXQgdmFsdWVzLCBSR0IgdHJpcGxldHMuICovCisJcG5nX3RyYW5zZm9y
bXMgPSBQTkdfVFJBTlNGT1JNX1NUUklQXzE2IHwgUE5HX1RSQU5TRk9STV9FWFBBTkQgfCBQTkdf
VFJBTlNGT1JNX0dSQVlfVE9fUkdCOworCQorCS8qIFJlYWQgZW50aXJlIGltYWdlIGF0IG9uY2Uu
CisJICogSW1hZ2VzIHNob3VsZCBiZSBzbWFsbCBlbm91Z2ggZm9yIHRoaXMuICovCisJcG5nX3Jl
YWRfcG5nKHBuZ19wdHIsIGluZm9fcHRyLCBwbmdfdHJhbnNmb3JtcywgcG5nX3ZvaWRwX05VTEwp
OworCQorCS8qIFRoZSB0cmFuc29mbXJhdGlvbnMgbXVzdCB5aWVsZCAyNCBiaXRzL3BpeGVsLiAq
LworCWlmIChpbmZvX3B0ci0+cGl4ZWxfZGVwdGggIT0gMjQpIHsKKwkJcmVwb3J0KFJQVF9FUlIs
ICIlczogVW5hYmxlIHRvIGNvbnZlcnQgaW1hZ2UgdG8gMjQgYml0cy9waXhlbC5cbiIsIGRydnRo
aXMtPm5hbWUpOworCQlyZXBvcnQoUlBUX0VSUiwgIiVzOiBJbWFnZSBmaWxlICVzXG4iLCBkcnZ0
aGlzLT5uYW1lLCBpbWFnZWZpbGVuYW1lKTsKKwkJcmVwb3J0KFJQVF9FUlIsICIlczogSW1hZ2Ug
aW5mbyBhZnRlciB0cmFuc2Zvcm1zIHlpZWxkZWQgJWQgcGl4ZWxfZGVwdGhcbiIKKwkJCSwgZHJ2
dGhpcy0+bmFtZSwgaW5mb19wdHItPnBpeGVsX2RlcHRoKTsKKwkJcmV0dXJuIC0xOworCX0KKwkK
KwkvKiBOb3cgZHJhdyBpbWFnZSB0byBmcmFtZWJ1ZiAqLworCXBuZ19ieXRlcHAgcm93X3BvaW50
ZXJzID0gcG5nX2dldF9yb3dzKHBuZ19wdHIsIGluZm9fcHRyKTsKKworCWludCBtYXhoLG1heHcs
aW1neSxpbWd4LGIscm93YjsKKwl1bnNpZ25lZCBsb25nIHJnYjsKKwkJCQorCS8qIFRoaXMgb25s
eSB3b3JrcyBpZiB0aGUgaW1hZ2Ugd2FzIHRyYW5zZm9ybWVkIHRvIDI0IGJpdHMvcGl4ZWwgaW4g
UkdCCisJICogZm9ybWF0IHdpdGggc29saWQgd2hpdGUgYmFja2dyb3VuZC4KKwkgKiAqLworCQor
CS8qIE9ubHkgZGVhbCB3aXRoIHdoYXQgdGhlIExDRCBjYW4gc2hvdy4gKi8KKwltYXhoID0gKGlu
dClpbmZvX3B0ci0+aGVpZ2h0OworCW1heHcgPSAoaW50KWluZm9fcHRyLT53aWR0aDsKKwlpZiAo
bWF4aCA+IHAtPmZyYW1lYnVmLnB4X2hlaWdodCkgbWF4aCA9IHAtPmZyYW1lYnVmLnB4X2hlaWdo
dDsKKwlpZiAobWF4dyA+IHAtPmZyYW1lYnVmLnB4X3dpZHRoKSBtYXh3ID0gcC0+ZnJhbWVidWYu
cHhfd2lkdGg7CisJCisJZm9yIChpbWd5ID0gMDsgaW1neSA8IG1heGg7IGltZ3krKykgeworCQlm
b3IgKGltZ3ggPSAwOyBpbWd4IDwgbWF4dzsgaW1neCsrKSB7CisJCQlyZ2IgPSAwOworCQkJZm9y
IChiID0gMDsgYiA8IDM7IGIrKykgeworCQkJCXJvd2IgPSAoaW1neCAqIDMpICsgYjsKKwkJCQly
Z2IgKz0gKHJvd19wb2ludGVyc1tpbWd5XVtyb3diXSA8PCAoKDItYikqOCkpOworCQkJfQorCQkJ
CisJCQkvKiBQb3NzaWJseSB1cGRhdGluZyB0aGUgZnJhbWVidWZmZXIgZGlyZWN0bHkgd291bGQg
YmUgZmFzdGVyCisJCQkgKiBob3dldmVyIGZiX2RyYXdfcGl4ZWwgaGFuZGxlcyB0aGUgZnJhbWVi
dWZmZXIgbGF5b3V0LgorCQkJICogKi8KKwkJCQorCQkJLyogSWYgcmdiIHZhbHVlcyBpcyBsZXNz
IHRoZW4gdGhlIGJhY2tncm91bmQgY29sb3IuICovCisJCQlpZiAocmdiIDwgMHhGRkZGRkYpIHsK
KwkJCQlmYl9kcmF3X3BpeGVsKCZwLT5mcmFtZWJ1ZiwgKHggKyBpbWd4KSwgKHkgKyBpbWd5KSwg
RkJfQkxBQ0spOworCQkJfSBlbHNlIHsKKwkJCQlmYl9kcmF3X3BpeGVsKCZwLT5mcmFtZWJ1Ziwg
KHggKyBpbWd4KSwgKHkgKyBpbWd5KSwgRkJfV0hJVEUpOworCQkJfQorCQl9CisJfQorCisJLyog
Q2xlYW4gdXAgYWZ0ZXIgdGhlIHJlYWQsIGFuZCBmcmVlIGFueSBtZW1vcnkgYWxsb2NhdGVkLiAq
LworCXBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIHBuZ19pbmZv
cHBfTlVMTCk7CisKKwkvKiBDbG9zZSB0aGUgZmlsZSAqLworCWZjbG9zZShmcCk7CisJCisJcmV0
dXJuIDA7Cit9CisjZW5kaWYgLyogSEFWRV9MSUJQTkcgKi8KZGlmZiAtdXJOIC1YIC4vbGNkcHJv
Yy9kaWZmX2lnbm9yZSAuL2xjZHByb2Mvc2VydmVyL2RyaXZlcnMvZ2xjZC1yZW5kZXIuaCAuL21v
ZGlmaWVkL3NlcnZlci9kcml2ZXJzL2dsY2QtcmVuZGVyLmgKLS0tIC4vbGNkcHJvYy9zZXJ2ZXIv
ZHJpdmVycy9nbGNkLXJlbmRlci5oCTIwMTEtMTEtMjAgMDU6MTU6MzkuMDAwMDAwMDAwIC0wNjAw
CisrKyAuL21vZGlmaWVkL3NlcnZlci9kcml2ZXJzL2dsY2QtcmVuZGVyLmgJMjAxNC0wMS0yMiAx
NToxNjowMC4yMTE1OTI3NDMgLTA2MDAKQEAgLTExLDQgKzExLDggQEAKIHZvaWQgZ2xjZF9yZW5k
ZXJfY2hhcl91bmljb2RlKERyaXZlciAqZHJ2dGhpcywgaW50IHgsIGludCB5LCBpbnQgYywgaW50
IHlzY2FsZSwgaW50IHhzY2FsZSk7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTElCUE5HCitpbnQg
Z2xjZF9yZW5kZXJfaW1hZ2UoRHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNo
YXIgKmltYWdlZmlsZW5hbWUpOworI2VuZGlmCisKICNlbmRpZgpkaWZmIC11ck4gLVggLi9sY2Rw
cm9jL2RpZmZfaWdub3JlIC4vbGNkcHJvYy9zZXJ2ZXIvZHJpdmVycy9sY2QuaCAuL21vZGlmaWVk
L3NlcnZlci9kcml2ZXJzL2xjZC5oCi0tLSAuL2xjZHByb2Mvc2VydmVyL2RyaXZlcnMvbGNkLmgJ
MjAxMS0xMS0xNSAxNTo0MDoyMy4wMDAwMDAwMDAgLTA2MDAKKysrIC4vbW9kaWZpZWQvc2VydmVy
L2RyaXZlcnMvbGNkLmgJMjAxNC0wMS0yMiAxNDoyOToyMS45OTUwMjUwMzAgLTA2MDAKQEAgLTE1
OSw2ICsxNTksOSBAQAogCXZvaWQgKCpoZWFydGJlYXQpCShzdHJ1Y3QgbGNkX2xvZ2ljYWxfZHJp
dmVyICpkcnZ0aGlzLCBpbnQgc3RhdGUpOwogCWludCAoKmljb24pCQkoc3RydWN0IGxjZF9sb2dp
Y2FsX2RyaXZlciAqZHJ2dGhpcywgaW50IHgsIGludCB5LCBpbnQgaWNvbik7CiAJdm9pZCAoKmN1
cnNvcikJCShzdHJ1Y3QgbGNkX2xvZ2ljYWxfZHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHks
IGludCB0eXBlKTsKKwkKKwkvKiBleHRlbmRlZCBvdXRwdXQgZnVuY3Rpb25zIChvcHRpb25hbDsg
Y29yZSBwcm92aWRlcyBOTyBBTFRFUk5BVElWRSAqLworCXZvaWQgKCppbWFnZSkJCShzdHJ1Y3Qg
bGNkX2xvZ2ljYWxfZHJpdmVyICpkcnZ0aGlzLCBpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIgKnN0
cik7CiAKIAkvKiB1c2VyLWRlZmluZWQgY2hhcmFjdGVyIGZ1bmN0aW9ucywgYXJlIHRob3NlIHN0
aWxsIHN1cHBvcnRlZCA/ICovCiAJdm9pZCAoKnNldF9jaGFyKQkoc3RydWN0IGxjZF9sb2dpY2Fs
X2RyaXZlciAqZHJ2dGhpcywgaW50IG4sIHVuc2lnbmVkIGNoYXIgKmRhdCk7CmRpZmYgLXVyTiAt
WCAuL2xjZHByb2MvZGlmZl9pZ25vcmUgLi9sY2Rwcm9jL3NlcnZlci9kcml2ZXJzLmMgLi9tb2Rp
ZmllZC9zZXJ2ZXIvZHJpdmVycy5jCi0tLSAuL2xjZHByb2Mvc2VydmVyL2RyaXZlcnMuYwkyMDEy
LTAyLTIyIDE2OjI1OjMyLjAwMDAwMDAwMCAtMDYwMAorKysgLi9tb2RpZmllZC9zZXJ2ZXIvZHJp
dmVycy5jCTIwMTQtMDEtMjIgMTQ6NDE6MjAuMzczNDM0MDkwIC0wNjAwCkBAIC00NzUsMyArNDc1
LDIyIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qKgorICogV3JpdGUgaW1hZ2UgdG8gYWxsIGxv
YWRlZCBkcml2ZXJzLgorICogRm9yIGRyaXZlcnMgdGhhdCBkZWZpbmUgYSBpbWFnZSgpIGZ1bmN0
aW9uLCBjYWxsIGl0OworICogXHBhcmFtIHggICAgICAgICAgICAgICBIb3Jpem9udGFsIHBpeGVs
IHBvc2l0aW9uLgorICogXHBhcmFtIHkgICAgICAgICAgICAgICBWZXJ0aWNhbCBwaXhlbCBwb3Np
dGlvbi4KKyAqIFxwYXJhbSBpbWFnZWZpbGVuYW1lICAgVGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFn
ZSB0aGF0IGdldHMgd3JpdHRlbi4KKyAqLwordm9pZAorZHJpdmVyc19pbWFnZShpbnQgeCwgaW50
IHksIGNvbnN0IGNoYXIgKmltYWdlZmlsZW5hbWUpCit7CisJRHJpdmVyICpkcnY7CisKKwlkZWJ1
ZyhSUFRfREVCVUcsICIlcyh4PSVkLCB5PSVkLCBzdHJpbmc9XCIlLjQwc1wiKSIsIF9fRlVOQ1RJ
T05fXywgeCwgeSwgaW1hZ2VmaWxlbmFtZSk7CisKKwlGb3JBbGxEcml2ZXJzKGRydikgeworCQlp
ZiAoZHJ2LT5pbWFnZSkKKwkJCWRydi0+aW1hZ2UoZHJ2LCB4LCB5LCBpbWFnZWZpbGVuYW1lKTsK
Kwl9Cit9CmRpZmYgLXVyTiAtWCAuL2xjZHByb2MvZGlmZl9pZ25vcmUgLi9sY2Rwcm9jL3NlcnZl
ci9kcml2ZXJzLmggLi9tb2RpZmllZC9zZXJ2ZXIvZHJpdmVycy5oCi0tLSAuL2xjZHByb2Mvc2Vy
dmVyL2RyaXZlcnMuaAkyMDEyLTAyLTIyIDE2OjI1OjMyLjAwMDAwMDAwMCAtMDYwMAorKysgLi9t
b2RpZmllZC9zZXJ2ZXIvZHJpdmVycy5oCTIwMTQtMDEtMjIgMTQ6NDE6NTYuMTcxNjYyNjI0IC0w
NjAwCkBAIC03OSw2ICs3OSw4IEBACiBjb25zdCBjaGFyICoKIGRyaXZlcnNfZ2V0X2tleSh2b2lk
KTsKIAordm9pZAorZHJpdmVyc19pbWFnZShpbnQgeCwgaW50IHksIGNvbnN0IGNoYXIgKmltYWdl
ZmlsZW5hbWUpOwogCiAvKiBQbGVhc2UgZG9uJ3QgcmVhZCB0aGlzIGxpc3QgZXhjZXB0IHVzaW5n
IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zICovCiBleHRlcm4gTGlua2VkTGlzdCAqbG9hZGVkX2Ry
aXZlcnM7CmRpZmYgLXVyTiAtWCAuL2xjZHByb2MvZGlmZl9pZ25vcmUgLi9sY2Rwcm9jL3NlcnZl
ci9yZW5kZXIuYyAuL21vZGlmaWVkL3NlcnZlci9yZW5kZXIuYwotLS0gLi9sY2Rwcm9jL3NlcnZl
ci9yZW5kZXIuYwkyMDEzLTAxLTE5IDA0OjI1OjA0LjAwMDAwMDAwMCAtMDYwMAorKysgLi9tb2Rp
ZmllZC9zZXJ2ZXIvcmVuZGVyLmMJMjAxNC0wMS0yMiAxNDozNDo0My44NjMzMDg5MDcgLTA2MDAK
QEAgLTY5LDcgKzY5LDcgQEAKIHN0YXRpYyBpbnQgcmVuZGVyX3RpdGxlKFdpZGdldCAqdywgaW50
IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgbG9uZyB0aW1lcik7CiBzdGF0
aWMgaW50IHJlbmRlcl9zY3JvbGxlcihXaWRnZXQgKncsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQg
cmlnaHQsIGludCBib3R0b20sIGxvbmcgdGltZXIpOwogc3RhdGljIGludCByZW5kZXJfbnVtKFdp
ZGdldCAqdywgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSk7Ci0KK3N0
YXRpYyBpbnQgcmVuZGVyX2ltYWdlKFdpZGdldCAqdywgaW50IGxlZnQsIGludCB0b3AsIGludCBy
aWdodCwgaW50IGJvdHRvbSk7CiAKIC8qKgogICogUmVuZGVycyBhIHNjcmVlbi4gVGhlIGZvbGxv
d2luZyBhY3Rpb25zIGFyZSB0YWtlbiBpbiBvcmRlcjoKQEAgLTI5MSw2ICsyOTEsOSBAQAogCQkJ
CQlkcml2ZXJzX251bSh3LT54ICsgbGVmdCwgdy0+eSk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJ
Y2FzZSBXSURfSU1BR0U6CisJCQkJcmVuZGVyX2ltYWdlKHcsIGxlZnQsIHRvcCwgcmlnaHQsIGJv
dHRvbSk7CisJCQkJYnJlYWs7CiAJCQljYXNlIFdJRF9OT05FOgogCQkJCS8qIEZBTExUSFJPVUdI
ICovCiAJCQlkZWZhdWx0OgpAQCAtNjU5LDYgKzY2MiwxNiBAQAogCXJldHVybiAwOwogfQogCitz
dGF0aWMgaW50CityZW5kZXJfaW1hZ2UoV2lkZ2V0ICp3LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
IHJpZ2h0LCBpbnQgYm90dG9tKQoreworCWlmICh3ICE9IE5VTEwgJiYgdy0+dGV4dCAhPSBOVUxM
KSB7CisJCWRyaXZlcnNfaW1hZ2Uody0+eCsgbGVmdCwgdy0+eSArIHRvcCwgdy0+dGV4dCk7CisJ
fQorCQorCXJldHVybiAwOworfQorCiAKIGludAogc2VydmVyX21zZyhjb25zdCBjaGFyICp0ZXh0
LCBpbnQgZXhwaXJlKQpkaWZmIC11ck4gLVggLi9sY2Rwcm9jL2RpZmZfaWdub3JlIC4vbGNkcHJv
Yy9zZXJ2ZXIvd2lkZ2V0LmMgLi9tb2RpZmllZC9zZXJ2ZXIvd2lkZ2V0LmMKLS0tIC4vbGNkcHJv
Yy9zZXJ2ZXIvd2lkZ2V0LmMJMjAxMi0wOS0wMSAxNjoyNDozOS4wMDAwMDAwMDAgLTA1MDAKKysr
IC4vbW9kaWZpZWQvc2VydmVyL3dpZGdldC5jCTIwMTQtMDEtMjIgMTQ6MzY6MDUuOTM0NzkxNjk4
IC0wNjAwCkBAIC0zOCw2ICszOCw3IEBACiAJInNjcm9sbGVyIiwJLyogV0lEX1NDUk9MTEVSICov
CiAJImZyYW1lIiwJLyogV0lEX0ZSQU1FICovCiAJIm51bSIsCQkvKiBXSURfTlVNICovCisJImlt
YWdlIiwgICAgLyogV0lEX0lNQUdFICovCiAJTlVMTCwJCS8qIFdJRF9OT05FICovCiB9OwogCmRp
ZmYgLXVyTiAtWCAuL2xjZHByb2MvZGlmZl9pZ25vcmUgLi9sY2Rwcm9jL3NlcnZlci93aWRnZXQu
aCAuL21vZGlmaWVkL3NlcnZlci93aWRnZXQuaAotLS0gLi9sY2Rwcm9jL3NlcnZlci93aWRnZXQu
aAkyMDEyLTAyLTIyIDE2OjI1OjMyLjAwMDAwMDAwMCAtMDYwMAorKysgLi9tb2RpZmllZC9zZXJ2
ZXIvd2lkZ2V0LmgJMjAxNC0wMS0yMiAxNDozNjo0Ni40NzQ1ODIyMjUgLTA2MDAKQEAgLTI3LDcg
KzI3LDggQEAKIAlXSURfVElUTEUsCiAJV0lEX1NDUk9MTEVSLAogCVdJRF9GUkFNRSwKLQlXSURf
TlVNCisJV0lEX05VTSwKKwlXSURfSU1BR0UKIH0gV2lkZ2V0VHlwZTsKIAogCg==
--047d7b5db9c4656c9504f096a67e
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
LCDproc mailing list
[email protected]
http://lists.omnipotent.net/mailman/listinfo/lcdproc

--047d7b5db9c4656c9504f096a67e--