git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode/libaxwin4 - Fix bad message ID for resize, bad return in window create
[tpg/acess2.git]
/
Usermode
/
Libraries
/
libaxwin4.so_src
/
window_drawing.cpp
diff --git
a/Usermode/Libraries/libaxwin4.so_src/window_drawing.cpp
b/Usermode/Libraries/libaxwin4.so_src/window_drawing.cpp
index
df320ef
..
6f2f898
100644
(file)
--- a/
Usermode/Libraries/libaxwin4.so_src/window_drawing.cpp
+++ b/
Usermode/Libraries/libaxwin4.so_src/window_drawing.cpp
@@
-8,6
+8,7
@@
#include <axwin4/axwin.h>
#include "include/common.hpp"
#include <ipc_proto.hpp>
#include <axwin4/axwin.h>
#include "include/common.hpp"
#include <ipc_proto.hpp>
+#include <algorithm> // min
namespace AxWin {
namespace AxWin {
@@
-17,7
+18,8
@@
extern "C" void AxWin4_DrawBitmap(tAxWin4_Window *Window, int X, int Y, unsigned
if( W > 128 )
{
const uint32_t* data32 = static_cast<uint32_t*>(Data);
if( W > 128 )
{
const uint32_t* data32 = static_cast<uint32_t*>(Data);
- for( unsigned int row = 0; row < H; row ++ )
+ const unsigned int rows_per_message = 2048 / W;
+ for( unsigned int row = 0; row < H; row += rows_per_message )
{
CSerialiser message;
message.WriteU8(IPCMSG_PUSHDATA);
{
CSerialiser message;
message.WriteU8(IPCMSG_PUSHDATA);
@@
-25,10
+27,10
@@
extern "C" void AxWin4_DrawBitmap(tAxWin4_Window *Window, int X, int Y, unsigned
message.WriteU16(X);
message.WriteU16(Y+row);
message.WriteU16(W);
message.WriteU16(X);
message.WriteU16(Y+row);
message.WriteU16(W);
- message.WriteU16(
1
);
+ message.WriteU16(
::std::min(rows_per_message,H-row)
);
message.WriteBuffer(W*4, data32);
::AxWin::SendMessage(message);
message.WriteBuffer(W*4, data32);
::AxWin::SendMessage(message);
- data32 += W;
+ data32 += W
*rows_per_message
;
}
}
else
}
}
else
UCC
git Repository :: git.ucc.asn.au