Repository: incubator-guacamole-server
Updated Branches:
  refs/heads/master 69caa9936 -> 008ba4659


GUACAMOLE-282: Correct common surface transfer functions to copy/ignore alpha 
channel as required.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/commit/691a3ab8
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/tree/691a3ab8
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/diff/691a3ab8

Branch: refs/heads/master
Commit: 691a3ab840038c703fa7123224b8face369cf7d1
Parents: 69caa99
Author: Michael Jumper <[email protected]>
Authored: Mon Apr 24 11:57:12 2017 -0700
Committer: Michael Jumper <[email protected]>
Committed: Mon Apr 24 11:57:12 2017 -0700

----------------------------------------------------------------------
 src/common/surface.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-server/blob/691a3ab8/src/common/surface.c
----------------------------------------------------------------------
diff --git a/src/common/surface.c b/src/common/surface.c
index 712a1e5..8c690b7 100644
--- a/src/common/surface.c
+++ b/src/common/surface.c
@@ -724,51 +724,51 @@ static int 
__guac_common_surface_transfer_int(guac_transfer_function op, uint32_
             break;
 
         case GUAC_TRANSFER_BINARY_NSRC:
-            *dst = ~(*src);
+            *dst = *src ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_NDEST:
-            *dst = ~(*dst);
+            *dst = *dst ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_AND:
-            *dst = (*dst) & (*src);
+            *dst = ((*dst) & (0xFF000000 | *src));
             break;
 
         case GUAC_TRANSFER_BINARY_NAND:
-            *dst = ~((*dst) & (*src));
+            *dst = ((*dst) & (0xFF000000 | *src)) ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_OR:
-            *dst = (*dst) | (*src);
+            *dst = ((*dst) | (0x00FFFFFF & *src));
             break;
 
         case GUAC_TRANSFER_BINARY_NOR:
-            *dst = ~((*dst) | (*src));
+            *dst = ((*dst) | (0x00FFFFFF & *src)) ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_XOR:
-            *dst = (*dst) ^ (*src);
+            *dst = ((*dst) ^ (0x00FFFFFF & *src));
             break;
 
         case GUAC_TRANSFER_BINARY_XNOR:
-            *dst = ~((*dst) ^ (*src));
+            *dst = ((*dst) ^ (0x00FFFFFF & *src)) ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_NSRC_AND:
-            *dst = (*dst) & ~(*src);
+            *dst = ((*dst) & (0xFF000000 | (*src ^ 0x00FFFFFF)));
             break;
 
         case GUAC_TRANSFER_BINARY_NSRC_NAND:
-            *dst = ~((*dst) & ~(*src));
+            *dst = ((*dst) & (0xFF000000 | (*src ^ 0x00FFFFFF))) ^ 0x00FFFFFF;
             break;
 
         case GUAC_TRANSFER_BINARY_NSRC_OR:
-            *dst = (*dst) | ~(*src);
+            *dst = ((*dst) | (0x00FFFFFF & (*src ^ 0x00FFFFFF)));
             break;
 
         case GUAC_TRANSFER_BINARY_NSRC_NOR:
-            *dst = ~((*dst) | ~(*src));
+            *dst = ((*dst) | (0x00FFFFFF & (*src ^ 0x00FFFFFF))) ^ 0x00FFFFFF;
             break;
 
     }

Reply via email to